250 likes | 372 Views
Falhas em sistemas de uso comum . Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846. Resumo. Bug Divisão do processador Intel Pentium Ataques DDos – Distributed Denial of Service. Bug Divisão do Pentium. "Redefining the PC -- and Mathematics As Well..."
E N D
Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846
Resumo • Bug Divisão do processador Intel Pentium • Ataques DDos – Distributed Denial of Service
Bug Divisão do Pentium • "Redefining the PC -- and Mathematics As Well..." • "Intel Inside? Don't Divide!"
Origem do bug • Dr. Thomas R. Nicely, Professor de Matemática no Lynchburg College, Virginia • Projecto de investigação na área de matemática pura – Teoria dos números computacional • Maior parte dos computadores eram 486's, no entanto 1 Pentium foi adicionado em Março de 1994.
Origem do bug • Em 13 Junho 1994 Dr. Nicely reparou numa discrepância nos seus resultados. Um estudo intensivo isolou o problema aos números primos 824633702441 e 824633702443 • Em 24 de Outubro, contactou a Intel reportando o bug • Intel sabia do bug meses antes e já tinha começado a produzir chips novos corrigidos.
Divisão abstracta q - quociente D - Divisor R[j] – Resto da enésima iteração. (R[0] é o dividendo.) q +--------- D| R[j] -qD --------- Rnew[j] <-- Rnew[j] = (R[j] - qD) ======== R[j+1] = base * Rnew[j] (base = 10 decimal, 4 para radix 4)
Formula iterativa • R[j+1] = base * (R[j] - q[j]*D) • Fórmula iterativa para base 4: R[j+1] = 4 * (R[j] - q[j]*D)
Algoritmo de divisão SRT • 1-Escolha dos digitos significativos do divisor e dividendo • 2-Usar essas escolhas como índices numa tabela de lookup que apresenta uma escolha dos proximos digitos de quociente. (neste caso os proximos quocientes podem ser -2, -1, 0, +1, +2). • 3-Multiplicar o divisor pelo quociente escolhido e subtrair lo pelo dividendo. (ou adição caso o escolha de quociente seja negativa) • 4-Guardar os digitos de quociente nos digitos menos significativos do registo do quociente. The Pentium division Flaw, David W. Deley, 1995. http://members.cox.net/srice1/pentbug/introduction.html
Algoritmo de divisão SRT • 5-Trasladar o resto da divisão por 2 casa decimais e os registos de quociente tambem por 2. (i.e. radix 4) • 6-Escolher os digitos mais significativos do novo resto parcial • 7-Ir para 2 a nao ser que tenham sido gerados os digitos significativos suficientes. • 8-Gerar o quociente binário juntando os valores no registo de quociente. • 9-Se o ultimo resto parcial foi negativo entao ajustar o quociente subtraindo o valor.
PENTIUM LOOKUP TABLE • Gráfico Resto parcial vs. Divisor. • As divisões no eixo vertical estão separadas por 0.001 representando os valores de R[j]. • As divisões no eixo horizontal estão separadas por 0.0001 representando os valores do divisor. • As 5 células marcadas deveriam especificar um digito de quociente de +2 mas apresentam um digito de quociente de 0 • Seleccionando o dígito de quociente 0 quando R[j] está neste eixo é inaceitável – o valor de digito é demasiado baixo • Quaisquer que sejam os dígitos seguintes o quociente total será sempre inferior que a resposta correcta.
Exemplo do bug • 5506153/294911 • Correcto: 18.67055823621364 • Pentium: 18.66990719233938
Frequência do erro • Probabilidade de erro: 1.14 x 10^-10. (fonte: Intel white paper) • Um paper de Edelman’s, refere que as entradas erróneas não são facilmete alcançáveis uma vez que existe um padrão não aleatório que é uma pré-condição de acesso a uma dessas entradas. A tabela em si é pequena (+- 1500 entradas), das quais 5 entradas estão erradas. Uma estimativa crua seria de 5/1800, que é muito maior que a verdadeira probabilidade de erro.
Investigação • Verificação Formal • Abordagem muito diferente de ‘teste de software’ • Prova de certificação de código (ou pseudo-código) • A prova institui que o programa satisfaz a relação input/output para todas as entradas.
Custo do bug • A Intel decidiu substituir todos os processadores de graça caso a substituição tenha sido pedida pelo cliente. • As empresas precisam de tratar da reconfiguração: • Substituição dos Pentiums poderia custar às empresas uma média de €289 por sistema, incluindo trabalho administrativo e tempos de perda • 600 PCs, custariam à uma empresa mais de €200.000.
Negação de serviço • Denial of Service • Distributed Denial of Service
Ataques negação serviço (DOS) • Desabilitaram os serviços da Yahoo, Amazon, eBay, CNN.com, Buy.com, ZDNet, E*Trade, e Excite.com por algumas horas. • Os ataques foram activados de uma grande variedade de ‘zombies’ intermediários que foram comprometidos. • Os ataques efectuados não necessitaram de intrusão nos alvos a comprometer.
Negação de Serviço • Negação de Serviço (DoS) é um ataque que permite que uma pessoa deixe um sistema inutilizável ou consideravelmente lento para os utilizadores legítimos através do consumo de seus recursos, de maneira que ninguém consegue utilizá-los.
DDos – Negação de serviço distribuída • A Negação de serviço distribuída (DDoS) utiliza o conceito de computação distribuída para efectuar os ataques. O atacante invade e apropria-se de diversos computadores para executar o ataque a partir de diferentes origens simultaneamente. • Trinoo, Tribal Flood Network TFN, TFN2K, Stacheldraht,….
DDos – Negação de serviço distribuída • A topologia de uma rede DDoS é dividida em quatro partes. • Os sistemas comprometidos são divididos em mestres e agentes. • Os agentes geram o tráfego que irá resultar na negação de serviço, estes agentes são controlados por um ou mais mestres. • A utilização de duas camadas (mestres e agentes) entre o atacante e a vítima dificulta a analise forense.
Prevenção • As negações de serviços podem causar grandes prejuízos, esforço, e grandes perdas de tempo. • Deve se considerar a protecção relevante de encontro a estes ataques. Isto pode incluir: • estabelecer a política apropriada de segurança • construir a topologia da rede de tal maneira que limita a eliminação de servidores mútuos. • implementação de filtros nos routers, firewalling, instalando as protecções de encontro aos ataques flooding do tcp syn.
Prevenção • Fazer o patching do s.o. e dos serviços, logo após a descoberta da vulnerabilidade - isto inclui a monitorização regular de vulnerabilidades • uso de sistemas da detecção de intrusões (IDS) a fim de ser informado imediatamente sobre alguma actividade suspeita
Custo da falha • O crime informático mais ‘caro’ nos Estados Unidos em 2003 • Os ataques resultaram em perdas de $ 1 bilião de dollars nos dias dos ataques. • Perdas em vendas e publicidade na ordem dos $200 milhões de dollars • $200 milhões de dollars foram gastos em upgrades infra-estrutura de segurança.
Bibliografia • “DDOS Outages Cost $1.2 Billion” , Dave Murphy ISSN 1535-3613 • Packetstorm, http://packetstorm.securify.com/distributed/ • "Strategies for Defeating Distributed Attacks" Simple Nomad, http://www.bindview.com/Support/Razor/Papers/. • "Purgatory 101: Learning to cope with the SYNs of the Internet" NightAxis http://packetstorm.securify.com/papers/contest/RFP.doc • find_ddos, http://www.fbi.gov/nipc/trinoo.htm • zombie_zapper, http://www.bindview.com/Support/RAZOR/Utilities/Windows/ • RFC 2267, "Network Ingress Filtering: Defeating Denial of Service Attacks", http://www.faqs.org/rfcs/rfc2267.html • catless.ncl.ac.uk/Risks/20.79.html#subj1 • Inside Risks 118, CACM 43, 4, April 2000, by P.G.Neumamm • “The Mathematics of the Pentium Flaw”, Alan Edelman, http://www-math.mit.edu/%7Eedelman/ • “Statistical Analysis of Floating Point Flaw in the Pentium(TM) Processor”, Intel (1994)