Upload
internet
View
103
Download
0
Embed Size (px)
Citation preview
Falhas em sistemas de uso comum
Nuno Miguel Cecílio Sampaio
Mestrado Eng. InformáticaNº 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.
Topologia
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)