Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

25
Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846

Transcript of Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

Page 1: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

Falhas em sistemas de uso comum

Nuno Miguel Cecílio Sampaio

Mestrado Eng. InformáticaNº 846

Page 2: 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

Page 3: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

Bug Divisão do Pentium

"Redefining the PC -- and Mathematics As Well..."

"Intel Inside?   Don't Divide!"

Page 4: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 5: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 6: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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)

Page 7: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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)

Page 8: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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

Page 9: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 10: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 11: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.
Page 12: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

Exemplo do bug

5506153/294911

Correcto: 18.67055823621364 Pentium: 18.66990719233938

Page 13: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 14: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 15: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 16: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

Negação de serviço

Denial of Service

Distributed Denial of Service

Page 17: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 18: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 19: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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,….

Page 20: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 21: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

Topologia

Page 22: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 23: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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

Page 24: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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.

Page 25: Falhas em sistemas de uso comum Nuno Miguel Cecílio Sampaio Mestrado Eng. Informática Nº 846.

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)