Responsive image

Segurança de Sistemas Computacionais

O título "Segurança de Sistemas Computacionais", na maioria das vezes, nos remete a famosos ataques em aplicações web, onde hackers exploram vulnerabilidades do sistema para roubar informações sigilosas. No entanto, ataques não são a única vertente: problemas de segurança podem estar relacionados à desonestidade na gestão, uso equivocado de dados sigilosos por parte dos usuários ou às redes as quais um computador está conectado. O objetivo dessa seção é prover uma contextualização geral sobre segurança de sistemas.

De acordo com Meier et al. (J.D Meier, 2003), a segurança em um sistema computacional abrange os seguintes tópicos:

Além dos tópicos acima, para que uma aplicação seja segura é preciso ter foco também nas redes de computadores e na aplicação em si.

Segurança de redes:

Na área relacionada às redes, os atacantes tendem a explorar tanto o tráfego de dados quanto os dispositivos físicos, que podem ter sido mal configurados. Ataques como Information Gathering (o atacante obtém informações da rede – como, por exemplo, blocos de IP, certificados SSL, entre outras – para explorar possíveis vulnerabilidades), Session Hijacking (mascara tanto o cliente como o servidor, para que ambos acreditem estar se comunicando legitimamente) e Denial of Service (torna os recursos de um sistema indisponíveis para os seus usuários) podem, por exemplo, explorar configurações padrão de fábrica e até mesmo dispositivos desatualizados. O uso de firewalls, utilizados para permitir acesso apenas a portas conhecidas, prover segurança física que impeça que dispositivos maliciosos se conectem à rede e o uso de criptografia podem ajudar a bloquear o acesso indesejado.

É claro que, para que se tenha um sistema seguro, é necessário que sua base também seja segura. Por isso, é válido focar também na segurança do servidor que hospeda a aplicação. Algumas medidas, tais como o acompanhamento das ações dos usuários (especialmente dos usuários dotados de maiores privilégios) e dos arquivos de log podem impedir que os acessos de possíveis hackers estejam ocorrendo despercebidos. Ações como estas evitam ataques como, por exemplo, Profiling (o atacante obtém informações sobre a aplicação para explorá-las), Acesso não autorizado, Execução de código arbitrário (ocorre quando o atacante executa um código malicioso no servidor, para comprometer o seu funcionamento) e Elevação de privilégios (atacante consegue executar código por meio de uma conta com privilégios, como, por exemplo, a de um administrador do sistema).

Segurança de aplicações web:

Na área de aplicações web o raciocínio é um pouco diferente. Falhas residuais no código podem levar a vulnerabilidades de segurança. O desenvolvimento de software seguro visa reduzir a quantidade desse tipo de falhas, tornando a aplicação mais segura. De acordo com o site eSecurity Planet (Michael Kerner, 2013), por exemplo, Jeff Foristal foi uma das primeiras pessoas a documentar a falha SQL Injection, classificada como falha de Injection, no ano de 1998. Desde então, inúmeras pessoas e organizações têm tentado e conseguido, com êxito, encontrar uma solução para essa vulnerabilidade.

Mesmo que as pessoas responsáveis por criar o código de uma aplicação, os desenvolvedores, tenham conhecimento o suficiente para encontrar e mitigar possíveis falhas de segurança em seus sistemas, muitas vezes eles não o fazem. O motivo principal disso é o tempo, recurso escasso que faz com que exista um enfoque dos programadores em relação à funcionalidade do software, que se sobrepõe aos seus requisitos de segurança. É por esse motivo que organizações como a OWASP (Open Web Application Security Project) (OWASP, 2017) se mantém, na tentativa de auxiliar os desenvolvedores com materiais gratuitos sobre como encontrar e solucionar vulnerabilidades do sistema.

De acordo com esse relatório da OWASP, falhas como Injection e Cross-site scripting estão entre as 10 falhas de maior ocorrência. Essas falhas estão relacionadas, principalmente, à não validação de dados enviados pelo usuário. Tendo isso em vista, podemos concluir que uma abordagem válida, que é também uma boa prática de programação, validar entradas de dados vindas do usuário.

Dada essa contextualização geral de segurança de sistemas, nosso trabalho de iniciação científica tem foco no estudo e desenvolvimento de soluções para auxiliar na proteção de aplicações Web contra vulnerabilidades do tipo SQl injection e XSS. A descrição detalhada dessas vulnerabilidades está nas nossas páginas SQL Injection e Cross-site Scripting e as soluções que desenvolvemos ao longo dos nossos estudos estão na página http://info03.cotil.unicamp.br/~pibic/seguranca-informacao/www/pesquisa.php.

Referências

Meier, J. D.; Mackman, A.; Vasireddy, S.; Dunner, M. Escamilla, R.; Murukan, A. “Improving Web Application Security – Threats and Countermeasures”. Microsoft Corporation, jun/2003.

Michael Kerner, S., 2013. How Was SQL Injection Discovered?. [online] https://www.esecurityplanet.com. Available at: https://www.esecurityplanet.com/network-security/how-was-sql-injection-discovered.html [Accessed 21 July 2020].

OWASP, T. Top 10-2017. The Ten Most Critical Web Application Security Risks. OWASP Foundation. The free and open software security community. URL: https://www.owasp.org/index.php/Top_10-2017_Top_10, 2017.