Bugs e falhas de segurança
Posted on fev 22, 2009 under Segurança | No CommentErros em softwares estão por toda parte. Independente de quanto é gasto no seu desenvolvimento, a sonda enviada à Marte pela NASA que custou $165 milhões de dólares, colidiu em Marte por causa de um erro na conversão das unidades de medida[1].
Como todos nós sabemos a “Complexidade é inimiga da segurança”, os softwares usados atualmente são muito complexos conforme mostrado na tabela 1[4].
| Software | Linhas de Código |
| Windows XP | 40 milhões |
| OpenOffice.org | ~ 10 milhões |
| Boeing 777 | 7 milhões |
| Linux kernel 2.6.0 | 5.2 milhões |
Tabela 1
Uma estimativa conservadora é que exista 5 bugs por 1000 linhas de código LOC[3]. Um simples computador tem 3000 arquivos executáveis, sendo que cada executável tenha em média 10.000 mil linhas de código, portanto terá 50 bugs, o quê implica em aproximadamente 150.000 mil bugs em um simples computador. Estendendo esse cálculo para uma rede corporativa com 6000 hosts, iremos encontrar 900 milhões de falhas em software. Claro que grande parte desses bugs serão repetidos, mas se estimarmos que 10% podem ser explorados remotamente teremos “somente” 90 milhões de falhas de segurança na rede.
Infelizmente não tem como eliminar as falhas de software de uma vez por todas, o que se pode fazer é minimizar os riscos. Na área de segurança devemos ser pessimistas, sabemos que as falhas de software sempre irão existir. O melhor que se pode fazer é gerenciar o risco de forma efetiva tentando minimizar os efeitos.
Analisando os servidores Linux podemos aumentar a segurança instalando somente os pacotes necessários, por exemplo, se a função do servidor é ser um banco de dados não precisamos instalar o servidor X e os pacotes gráficos. Uma medida simples como essa aumenta bastante a segurança, ou seja, reduzimos os pacotes por consequência reduzindo os bugs.
Já os usuários do sistema operacional windows, são os que mais tem sofrido com os bugs, pois, as pragas virtuais são desenvolvidas para explorar falhas criticas. Medidas simples como as mencionadas na “Cartilha de Segurança para Internet”, resolve uns 80% dos casos, muitas técnicas usadas para infecção de computadores pessoais com pragas virtuais, são extremamente manjadas, mas mesmo assim ainda tem gente que cai de maduro, pois as estatísticas continuam crescendo.
Portanto notamos que se mantermos a simplicidade tanto no servidor quanto nas máquinas dos usuários, conseguiremos minimizar grande parte dos problemas causados por bugs ou falhas de software relacionado a segurança, como diz o Zen da linguagem Python “Simple is better than complex”.
Pense nisso, veja no painel de controle de seu computador, se todos os softwares instalados são necessários, depois entre no windows update para verificar novas atualizações, e para quem usa Linux como eu, rode um “netstat -vantu” e verifique se todos os serviços são necessários.
Referências
[1] D. Isbell, M. Hardin, and J. Underwood, Mars climate team finds likely cause of
loss, at http://www.iki.rssi.ru/jplmirror/mars/msp98/news/
mco990930.hhtml
[2] Cryptographer’s Panel, RSA Conference 2004, see http://www.cs.sjsu.
edu/faculty/stamp/papers/tripreports/RSA04.html
[3] J. Viega and G. McGraw, Building Secure Software , AddisonWesley, 2002.
[4] “Source lines of code.” Wikipedia, The Free Encyclopedia. 19 Nov 2008, 12:01 UTC. 21 Nov 2008
