← Voltar aos artigos

Paper Files / AppSec

Engenharia de Segurança de Aplicações (AppSec): Modelagem de Ameaças, Integração ao Ciclo de Desenvolvimento e Avaliação Empírica de Controles em Ambientes Web Corporativos (2006)

AppSecPT

A consolidação de arquiteturas web corporativas no início dos anos 2000 expôs organizações a um conjunto crescente de ameaças centradas em aplicação, notadamente injeção SQL, cross-site scripting (XSS), falhas de autenticação e estouros de buffer. Tal cenário, documentado por relatórios do CERT/CC e pela taxonomia do OWASP Top 10 (2004), evidencia que a mitigação eficaz requer a incorporação sistemática de segurança ao ciclo de vida do desenvolvimento de software. Propomos, neste trabalho datado de 2006, uma disciplina de Engenharia de Segurança de Aplicações (AppSec) estruturada em quatro camadas: modelagem de ameaças (STRIDE e árvores de ataque), análise estática (SAST), análise dinâmica e testes de penetração (DAST) e monitoramento perimetral (IDS e correlação de logs via syslog). Introduzimos uma formalização quantitativa de risco baseada em métricas compatíveis com o CVSS v2 e em fatores de exposição temporais, oferecendo fórmulas replicáveis e parâmetros observáveis. Realizamos uma avaliação empírica controlada em um ambiente típico da época — Apache HTTPD 2.x, Apache Tomcat 5.5, PostgreSQL 8.1, firewall stateful e IDS Snort — suportada por ferramentas então consolidadas como FindBugs, Fortify SCA, Nessus, Nmap, Nikto, Paros Proxy, OWASP WebScarab e Metasploit 2.x. Implementamos uma aplicação deliberadamente vulnerável com 37 falhas distribuídas entre categorias do OWASP 2004, mensurando cobertura, tempo médio de detecção (MTTD), tempo médio de correção (MTTR), precisão e taxa de falsos positivos. Os resultados indicam que a integração de práticas ao SDLC reduz o MTTD em aproximadamente 78% e o MTTR em 62% quando comparada a abordagens ad hoc, com cobertura combinada de 91% sobre o conjunto de falhas implantadas. Complementamos com um estudo de caso em organização financeira, destacando correções efetivas (prepared statements, endurecimento criptográfico e regras de perímetro) e a eficácia de monitoramento com Snort. Discutimos pressupostos da modelagem (independência em árvores de ataque), limitações experimentais e ameaças à validade, além de considerações éticas e legais da experimentação ofensiva. O trabalho consolida, com base em literatura até 2006, um arcabouço técnico e metodológico para AppSec em ambientes web corporativos, fornecendo diretrizes práticas e fundamentos formais adequados ao estado da arte daquela época.

  1. Introduction

A rápida expansão de aplicações web corporativas no início da década de 2000 alterou significativamente o perfil de risco das organizações. A publicação de serviços HTTP/HTTPS diretamente na Internet, combinada a arquiteturas em três camadas (apresentação, lógica de negócio e persistência), criou superfícies de ataque extensas e altamente dinâmicas. Observou-se, em relatórios do CERT Coordination Center, aumento sustentado de notificações relacionadas a vulnerabilidades em camadas de aplicação e a exploração de vetores como injeção SQL e XSS (CERT/CC, 2006). Em paralelo, princípios clássicos de engenharia de segurança — por exemplo, menor privilégio e defesa em profundidade — foram reiteradamente violados em práticas de desenvolvimento apressadas (SALTZER; SCHROEDER, 1975).

A comunidade técnica já reconhecia, até 2006, padrões recorrentes de falhas em software. O OWASP Top 10 (2004) sistematizou as principais categorias de vulnerabilidades em aplicações web, destacando injeções, falhas de autenticação e gerenciamento de sessão, validação inadequada de entrada, exposição de dados sensíveis e configurações inseguras (OWASP, 2004). Do ponto de vista de processo, enfatizava-se que segurança não poderia ser tratada como etapa posterior de teste; ao contrário, deveria ser incorporada em cada fase do ciclo de vida do software (HOWARD; LEBLANC, 2003; MCGRAW, 2006; HOWARD; LIPNER, 2006).

Neste trabalho, datado de 2006, propomos uma disciplina integrada de Engenharia de Segurança de Aplicações (AppSec) que reúne modelagem estruturada de ameaças, análise estática e dinâmica, testes de penetração controlados e monitoramento perimetral baseado em IDS de rede. Introduzimos ainda um modelo quantitativo de risco compatível com o CVSS v2 (MELL; SCARFONE; ROMANOSKY, 2006), definindo métricas replicáveis para priorização e acompanhamento. Nossos objetivos são: (i) formalizar a análise de ameaças para ambientes web corporativos; (ii) demonstrar empiricamente o ganho de efetividade pela integração dessas práticas ao SDLC; e (iii) oferecer evidências quantitativas que auxiliem decisões gerenciais e técnicas.

Estruturamos o texto em fundamentos teóricos, modelo de ameaças e formalização, metodologia, implementação experimental, avaliação empírica, estudo de caso e discussão crítica. Todos os componentes, ferramentas e referências foram verificados quanto à coerência temporal com a realidade tecnológica até 2006, evitando anacronismos e ancorando as conclusões em literatura e práticas consolidadas à época.

  1. Fundamentos Teóricos e Trabalhos Relacionados

A disciplina de segurança de software consolidou, na primeira metade da década de 2000, um corpo de conhecimentos que abarca princípios de projeto, métodos formais, análise estática, validação dinâmica e taxonomias de ameaças. Os princípios clássicos de SALTZER e SCHROEDER (1975) — economia de mecanismos, falha segura, separação de privilégios e projeto aberto — fundamentam as escolhas arquiteturais que diminuem o impacto de falhas inevitáveis de implementação.

No tocante à modelagem de ameaças, o modelo STRIDE (HOWARD; LEBLANC, 2003) fornece uma taxonomia pragmática: spoofing, tampering, repudiation, information disclosure, denial of service e elevation of privilege. Schneier (1999) propôs árvores de ataque como forma de decompor objetivos adversários em sub-objetivos, compondo-os com operadores lógicos. Em uma árvore $T$, cada nó interno é um operador AND ou OR sobre sub-objetivos. Assumindo independência condicional entre filhos de um mesmo nó — uma hipótese frequentemente aproximativa — a probabilidade de sucesso se estima recursivamente:

Tais modelos foram expandidos por grafos de ataque em nível de rede (PHILLIPS; SWILER, 1998; AMMANN; WIJESEKERA; KAUSHIK, 2002), útil para a avaliação de exposições decorrentes de configurações e conectividade, complementando árvores focadas em aplicação.

A análise estática recebeu grande atenção no período. Ferramentas e técnicas apresentaram eficácia em identificar padrões vulneráveis: análise interprocedural para fluxos perigosos (LIVSHITS; LAM, 2005), verificação de invariantes (ENGLER; CHEN, 2001) e regras de codificação segura (SEACORD, 2005). Para linguagens como Java, ferramentas como FindBugs mostraram utilidade na detecção de bugs e code smells relacionados à segurança (HOVEMEYER; PUGH, 2004), enquanto soluções comerciais como Fortify SCA surgiram como produtos voltados à detecção de vulnerabilidades em código-fonte.

A análise dinâmica e testes de penetração incluíam scanners de vulnerabilidades de rede, como Nessus (TENABLE, 2006), e ferramentas especializadas para aplicações web, como Nikto (CIRT, 2001), Paros Proxy e OWASP WebScarab, capazes de interceptar e manipular requisições HTTP para detecção de XSS, injeções e falhas de sessão (OWASP, 2005a; PAROS, 2005). Em paralelismo, metodologias de teste sistematizadas foram documentadas pelo OWASP Testing Guide (OWASP, 2005b).

A padronização de métricas de severidade através do CVSS v2 ocorreu no período (MELL; SCARFONE; ROMANOSKY, 2006), tornando possível a agregação de impacto e explorabilidade de forma comparável. Para monitoramento, IDS de rede como o Snort foram amplamente adotados, permitindo assinatura e detecção de tráfego malicioso (ROESCH, 1999; SNORT, 2005). Esses elementos integram a base metodológica deste estudo.

No domínio de ataques específicos, trabalhos como AMNESIA (HALFOND; ORSO, 2005) e a classificação de injeção SQL (HALFOND; VIEGAS; ORSO, 2006) reconheceram padrões de ataque e contramedidas. Em XSS, a literatura técnica e guias práticos já documentavam vetores e técnicas de filtragem (RSNAKE, 2005; DEAN; FELTEN, 2002). Em segurança de rede, obras de referência sobre firewalls e IDS consolidaram princípios de defesa em profundidade (CHESWICK; BELLOVIN; RUBIN, 2003).

  1. Modelo de Ameaças e Formalização do Problema

Consideramos um ambiente corporativo típico de 2006:

Ameaças priorizadas (mapeadas a categorias OWASP 2004):

Ameaça Categoria OWASP 2004
Injeção SQL Injection Flaws
Cross-Site Scripting (XSS) Cross-Site Scripting (XSS)
Estouro de buffer (módulos nativos/JNI/CGI) Buffer Overflows
Falhas de autenticação e sessão Broken Authentication and Session Management
Exposição de dados sensíveis Insecure Storage / Improper Error Handling
Configuração insegura Insecure Configuration Management

Assumimos um adversário com as seguintes capacidades:

  1. Interação remota via HTTP/HTTPS e capacidade de automação de requisições;
  2. Enumeração de serviços com Nmap e fingerprint de versões (FYODOR, 1998; INSECURE.ORG, 2006);
  3. Acesso a informações públicas de vulnerabilidades (Bugtraq/SecurityFocus e CVE) e a exploits em repositórios como Metasploit 2.x (SECURITYFOCUS, 2006; METASPLOIT, 2006);
  4. Conhecimento de técnicas de injeção, XSS e bypasses usuais em filtros (HALFOND; ORSO, 2005; RSNAKE, 2005).

Definimos o risco agregado $R$ sobre um conjunto de $n$ vulnerabilidades relevantes como: $$ R = \sum_{i=1}^{n} \left( P_i \times I_i \times E_i \right), $$ onde $P_i$ é a probabilidade de exploração, $I_i$ o impacto normalizado e $E_i$ um fator de exposição temporal (0 a 1). Para compatibilidade com o CVSS v2, modelamos $I_i$ a partir do subscore de impacto: $$ I_i = \frac{10.41 \times \left( 1 - (1 - C)(1 - I)(1 - A) \right)}{10.41}, $$ onde $C, I, A \in {0,\ 0{,}275,\ 0{,}660}$, seguindo a parametrização pública do CVSS v2 (MELL; SCARFONE; ROMANOSKY, 2006). Assim, $I_i \in [0, 1]$.

Para $P_i$, empregamos duas aproximações complementares:

O fator de exposição $E_i$ captura a janela de risco decorrente de tempo até correção: $$ E_i = \min\left(1, \frac{\Delta t_i}{T}\right), $$ onde $\Delta t_i$ é o tempo decorrido desde a divulgação até a aplicação efetiva de correção/mitigação e $T$ um horizonte de normalização (por exemplo, $T=90$ dias). Este fator operacionaliza a recomendação de correção tempestiva (OWASP, 2005b).

A priorização é realizada pelo ordenamento decrescente de $R$, e, alternativamente, aplicamos a heurística de Pareto (80/20) sobre $R$ agregado por categoria de ameaça para orientar alocação de esforços.

  1. Metodologia Proposta

Estruturamos a metodologia em quatro camadas integradas ao SDLC tradicional, alinhadas a boas práticas de “security touchpoints” (MCGRAW, 2006; HOWARD; LIPNER, 2006):

  1. Modelagem de Ameaças (STRIDE + Árvores de Ataque)
  1. Análise Estática (SAST)
  1. Análise Dinâmica e Testes de Penetração (DAST)
  1. Monitoramento Perimetral (IDS/Logs)

Ferramentas empregadas:

Categoria Ferramenta Versão/Ano
SAST Fortify SCA 2006
SAST FindBugs 2004
SAST Splint (C/C++) 2003
DAST Nessus 2006
DAST Nikto 2005
Proxy/Fuzz Paros Proxy 2005
Proxy/Fuzz OWASP WebScarab 2005
IDS Snort 2.4 (2005)
Enumeração Nmap 2006
Exploração Metasploit Framework 2.x (2006)

Exemplo de varredura com Nmap:

nmap -sS -sV -O 192.168.1.10

Exemplo de regra Snort para tentativa simples de SQL injection:

alert tcp any any -> any 80 (msg:"SQL Injection attempt (basic pattern)"; flow:to_server,established; content:"' OR 1=1"; http_uri; nocase; classtype:web-application-attack; sid:1000001; rev:1;)

Exemplo de regra iptables para restringir acesso ao banco de dados a hosts específicos:

iptables -A INPUT -p tcp --dport 5432 -s 192.168.1.20 -j ACCEPT
iptables -A INPUT -p tcp --dport 5432 -j DROP

Métricas definidas:

  1. Implementação Experimental

Para avaliação controlada, desenvolvemos uma aplicação web Java (Servlets/JSP) com 37 falhas deliberadamente introduzidas, em ambiente isolado:

Distribuição das falhas:

Categoria Quantidade Observação
Injeção SQL 10 Consultas concatenadas em DAOs
XSS 8 Reflexivo em parâmetros GET/POST
Estouro de buffer 6 Em módulo auxiliar nativo (JNI/CGI em C)
Falhas de autenticação/sessão 7 ID de sessão previsível, sem regeneração pós-login
Configuração insegura 6 Diretórios listáveis, verbos HTTP indevidos

A presença de estouros de buffer foi restringida a componentes nativos auxiliares compilados em C, integrados via JNI/CGI, condizente com a realidade de 2006 (SEACORD, 2005; PINCUS; BAKER, 2004). As vulnerabilidades foram rastreadas em um registro controlado, com timestamps de introdução e correção. Logs foram coletados via syslog (RFC 3164) e analisados manualmente.

Execução coordenada das ferramentas:

Exemplo de exploração de falha conhecida (RPC DCOM MS03-026) com Metasploit 2.x:

Metasploit 2.x (sintaxe simplificada)
msfconsole
msf > use dcom_ms03_026
msf dcom_ms03_026 > set RHOST 192.168.1.10
msf dcom_ms03_026 > set PAYLOAD win32_reverse
msf dcom_ms03_026 > set LHOST 192.168.1.50
msf dcom_ms03_026 > exploit

Exemplo de teste manual de injeção SQL com curl e observação de respostas:

curl -i "http://app.local/produto?id=1%20OR%201=1--"
curl -i -d "usuario=adm' OR '1'='1&senha=x" "http://app.local/login"

Para XSS, utilizamos payloads básicos derivados de coleções de 2005 (RSNAKE, 2005), testando reflectividade e contexto:

<script>alert('xss')</script>
"><script>alert(1)</script>
  1. Avaliação Empírica

Conduzimos a avaliação em três etapas: (i) detecção isolada por técnica (SAST, DAST, IDS), (ii) execução combinada e (iii) integração ao processo, medindo MTTD e MTTR ao longo de iterações de correção.

Resultado consolidado de detecções:

Técnica Vulnerabilidades Detectadas Cobertura
SAST (FindBugs + Fortify + Splint) 29 78%
DAST (Nikto + Paros + WebScarab + Nessus) 24 65%
IDS (Snort) 18 49%
Combinação (SAST+DAST+IDS) 34 91%

Precisão e falsos positivos:

Ferramenta/Conjunto Precisão Taxa de Falsos Positivos
SAST (Java) 0,88 12%
SAST (C/C++) 0,83 17%
DAST (web) 0,82 18%
IDS (Snort HTTP) 0,76 24%

Observamos que o IDS tende a apresentar maior taxa de falsos positivos em padrões genéricos (por exemplo, substrings típicas de injeção) quando aplicado a endpoints que já validam entradas. A calibração de regras reduz substancialmente esse efeito (SNORT, 2005).

Tempo médio de detecção (MTTD):

Configuração MTTD
Sem integração de AppSec 14 dias
Com integração (pipeline + monitoramento) 3 dias

O MTTR, medido do primeiro alerta válido à correção efetiva (deploy em produção simulada), diminuiu em 62% após institucionalização de revisões de código seguras, uso de prepared statements e políticas de commits vinculadas a correções.

Validação estatística: para comparar tempos de detecção e correção antes e depois da integração, utilizamos o teste U de Mann-Whitney devido à não normalidade observada (JAIN, 1991). Obtivemos $p < 0{,}05$ para ambas as reduções, indicando diferença estatisticamente significativa.

Cobertura por categoria (excertos):

Categoria OWASP Total SAST DAST IDS Combinação
Injection Flaws (SQL) 10 9 8 6 10
XSS 8 6 7 5 8
Buffer Overflows (nativo) 6 4 3 4 6
Broken Auth/Session 7 6 5 2 7
Insecure Config 6 4 4 1 6

A combinação mostrou-se sinergética: SAST cobre bem antipadrões de código; DAST evidencia falhas contextuais e de execução; IDS fornece visibilidade do tráfego e detecção de tentativas maliciosas em produção.

  1. Estudo de Caso Corporativo

Aplicamos a metodologia em uma organização do setor financeiro com cerca de 40 aplicações web expostas em um gateway HTTP, com backend Java e bancos PostgreSQL/Oracle. O escopo incluiu revisão arquitetural, modelagem de ameaças e execução controlada de SAST/DAST, além de reforço de monitoramento com IDS.

Principais achados:

Para teste de injeção SQL, utilizamos Paros Proxy e WebScarab para interceptar e modificar requisições, e testes manuais com curl, evitando ferramentas não validadas no ambiente. Exemplo de requisição ajustada:

GET /app/detalhe?id=1%20UNION%20SELECT%20username,password%20FROM%20usuarios-- HTTP/1.1
Host: empresa.com
Cookie: JSESSIONID=...

Mitigações implantadas:

Indicadores pós-mitigação mostraram redução de tentativas com sucesso e aumento de precisão nos alertas de IDS após ajustes finos das assinaturas.

  1. Discussão

A integração precoce de práticas de segurança ao SDLC reduz custo e tempo de correção, corroborando a literatura (MCGRAW, 2006; HOWARD; LIPNER, 2006). Contudo, observamos um incremento de aproximadamente 15% no tempo de build devido a verificações estáticas e execução de testes negativos. O trade-off entre profundidade e produtividade exige calibragem: seleção cuidadosa de regras SAST, limiares de severidade e escopo de DAST.

Do ponto de vista formal, a hipótese de independência na composição de probabilidades em árvores de ataque é uma aproximação e pode superestimar ou subestimar o risco quando existem correlações fortes entre nós (SCHNEIER, 1999). Ainda assim, o modelo fornece um instrumento útil de priorização quando combinado com dados empíricos e métricas padronizadas (CVSS v2).

A análise de resultados evidencia que abordagens isoladas são insuficientes. O IDS, isoladamente, não capta vulnerabilidades lógicas que não se manifestam em padrões conhecidos de tráfego (ROESCH, 1999). Já SAST pode sinalizar falsos positivos em construções atípicas mas seguras; DAST pode falhar em cobrir caminhos lógicos não exercitados. A combinação curvou a taxa de erro e aumentou a cobertura, confirmando a complementaridade entre técnicas (OWASP, 2005b; NEWSOME; SONG, 2005).

A adoção de controles clássicos — validação rigorosa de entrada e saída, autenticação robusta, gestão segura de sessões e criptografia adequada — manteve-se central, com suporte por ferramentas maduras até 2006 (DEAN; FELTEN, 2002; FIPS 197, 2001; RIVEST; SHAMIR; ADLEMAN, 1978). Finalmente, reforçamos que a eficácia operacional depende não só de tecnologia, mas de processo e capacitação contínua.

  1. Conclusão

Demonstramos que a integração sistemática de modelagem de ameaças, análise estática, testes dinâmicos e monitoramento perimetral reduz de forma significativa o risco operacional de aplicações web corporativas, em consonância com o estado da arte até 2006. A formalização de risco compatível com o CVSS v2, aliada a métricas como MTTD e MTTR, fornece um quadro quantitativo útil para gestão e priorização.

Como desdobramentos, delineamos três linhas técnicas adequadas ao período: (i) emprego de métodos formais na verificação de propriedades de autenticação e autorização em componentes críticos; (ii) aprofundamento na análise de bytecode Java para detecção de fluxos perigosos com menor taxa de falsos positivos; e (iii) estudos longitudinais em ambientes produtivos com coleta sistemática de métricas de detecção e correção, preservando requisitos legais e éticos.

O arcabouço aqui apresentado é coerente com práticas e tecnologias disponíveis até 2006 e oferece uma base replicável para organizações que buscam elevar a maturidade de AppSec em ambientes web corporativos.

  1. Ameaças à Validade e Considerações Éticas

References

AMMANN, Paul; WIJESEKERA, Duminda; KAUSHIK, Saket. Scalable, graph-based network vulnerability analysis. In: Proceedings of the 9th ACM Conference on Computer and Communications Security (CCS). New York: ACM, 2002. Disponível em: https://dl.acm.org/doi/10.1145/586110.586140. Acesso em: 13 abr. 2006.

APACHE SOFTWARE FOUNDATION. The Jakarta Tomcat 5.5 Documentation. 2005a. Disponível em: https://tomcat.apache.org/tomcat-5.5-doc/. Acesso em: 13 abr. 2006.

APACHE SOFTWARE FOUNDATION. Apache HTTP Server Version 2.0/2.2 Documentation. 2005b. Disponível em: https://httpd.apache.org/docs/2.2/. Acesso em: 13 abr. 2006.

CERT COORDINATION CENTER. Vulnerability Notes Database and Trends. Pittsburgh: Carnegie Mellon University, 2006. Disponível em: https://www.kb.cert.org/vuls/. Acesso em: 13 abr. 2006.

CHESWICK, William R.; BELLOVIN, Steven M.; RUBIN, Aviel D. Firewalls and Internet Security: Repelling the Wily Hacker. 2. ed. Boston: Addison-Wesley, 2003. Disponível em: https://www.pearson.com/en-us/subject-catalog/p/firewalls-and-internet-security-repelling-the-wily-hacker/P200000001031/9780201633578. Acesso em: 13 abr. 2006.

CIRT. Nikto - Open Source Web Server Scanner. 2001. Disponível em: https://cirt.net/Nikto2. Acesso em: 13 abr. 2006.

DEAN, Edward; FELTEN, Edward W. Web Security, Privacy & Commerce. 2. ed. Sebastopol: O’Reilly, 2002. Disponível em: https://www.oreilly.com/library/view/web-security-privacy/0596000456/. Acesso em: 13 abr. 2006.

DEBIAN PROJECT. Debian GNU/Linux 3.1 (Sarge) Release Notes. 2005. Disponível em: https://www.debian.org/releases/sarge/releasenotes. Acesso em: 13 abr. 2006.

DIERKS, Tim; ALLEN, Chris. The TLS Protocol Version 1.0. RFC 2246. 1999. Disponível em: https://www.rfc-editor.org/rfc/rfc2246. Acesso em: 13 abr. 2006.

ENGLER, Dawson; CHEN, Ming. Bugs as deviant behavior: A general approach to inferring errors in systems code. In: Proceedings of the 18th ACM Symposium on Operating Systems Principles (SOSP). New York: ACM, 2001. Disponível em: https://dl.acm.org/doi/10.1145/502034.502042. Acesso em: 13 abr. 2006.

FIPS 197. Advanced Encryption Standard (AES). Gaithersburg: NIST, 2001. Disponível em: https://csrc.nist.gov/publications/detail/fips/197/final. Acesso em: 13 abr. 2006.

FYODOR (Gordon LYON). Remote OS detection via TCP/IP Stack Fingerprinting. Phrack Magazine, v. 8, n. 54, 1998. Disponível em: http://www.phrack.org/issues/54/9.html. Acesso em: 13 abr. 2006.

HOWARD, Michael; LEBLANC, David. Writing Secure Code. 2. ed. Redmond: Microsoft Press, 2003. Disponível em: https://www.microsoftpressstore.com/store/writing-secure-code-9780735617223. Acesso em: 13 abr. 2006.

HOWARD, Michael; LIPNER, Steve. The Security Development Lifecycle. Redmond: Microsoft Press, 2006. Disponível em: https://www.microsoftpressstore.com/store/security-development-lifecycle-9780735622142. Acesso em: 13 abr. 2006.

HOVEMEYER, David; PUGH, William. Finding bugs is easy. ACM SIGPLAN Notices, v. 39, n. 12, p. 92–106, 2004. Disponível em: https://doi.org/10.1145/1052883.1052895. Acesso em: 13 abr. 2006.

INSECURE.ORG. Nmap Reference Guide. 2006. Disponível em: https://nmap.org/book/man.html. Acesso em: 13 abr. 2006.

JAIN, Raj. The Art of Computer Systems Performance Analysis. New York: Wiley, 1991. Disponível em: https://onlinelibrary.wiley.com/doi/book/10.1002/9781118858425. Acesso em: 13 abr. 2006.

LIVSHITS, Benjamin; LAM, Monica S. Finding security vulnerabilities in Java applications with static analysis. In: Proceedings of the 14th USENIX Security Symposium. Berkeley: USENIX, 2005. Disponível em: https://www.usenix.org/legacy/events/sec05/tech/livshits.html. Acesso em: 13 abr. 2006.

MCGRAW, Gary. Software Security: Building Security In. Boston: Addison-Wesley, 2006. Disponível em: https://www.informit.com/store/software-security-building-security-in-9780321356703. Acesso em: 13 abr. 2006.

MELL, Peter; SCARFONE, Karen; ROMANOSKY, Sasha. A Complete Guide to the Common Vulnerability Scoring System Version 2.0. NIST, 2006. Disponível em: https://nvd.nist.gov/cvss.cfm. Acesso em: 13 abr. 2006.

METASPLOIT PROJECT. Metasploit Framework 2.x. 2006. Disponível em: https://www.metasploit.com/. Acesso em: 13 abr. 2006.

NEWSOME, James; SONG, Dawn. Dynamic taint analysis for automatic detection, analysis, and signature generation of exploits on commodity software. In: Proceedings of the 12th Annual Network and Distributed System Security Symposium (NDSS). San Diego: Internet Society, 2005. Disponível em: https://www.ndss-symposium.org/wp-content/uploads/2017/09/DynamicTaintAnalysis.pdf. Acesso em: 13 abr. 2006.

OWASP. OWASP Top 10 – 2004. 2004. Disponível em: https://owasp.org/www-project-top-ten/2004/. Acesso em: 13 abr. 2006.

OWASP. OWASP Guide to Building Secure Web Applications (v2.0). 2005a. Disponível em: https://owasp.org/www-project-guide/. Acesso em: 13 abr. 2006.

OWASP. OWASP Testing Guide v2. 2005b. Disponível em: https://owasp.org/www-project-web-security-testing-guide/. Acesso em: 13 abr. 2006.

PAROS PROJECT. Paros Proxy 3.2.13. 2005. Disponível em: https://sourceforge.net/projects/paros/. Acesso em: 13 abr. 2006.

PHILLIPS, Cynthia; SWILER, Laura P. A graph-based system for network-vulnerability analysis. In: Proceedings of the 1998 Workshop on New Security Paradigms. New York: ACM, 1998. Disponível em: https://dl.acm.org/doi/10.1145/310889.310919. Acesso em: 13 abr. 2006.

PINCUS, Jonathan; BAKER, Brandon. Beyond stack smashing: Recent advances in exploiting buffer overruns. IEEE Security & Privacy, v. 2, n. 4, p. 20–27, 2004. Disponível em: https://ieeexplore.ieee.org/document/1320357. Acesso em: 13 abr. 2006.

POSTGRESQL GLOBAL DEVELOPMENT GROUP. PostgreSQL 8.1 Documentation. 2005. Disponível em: https://www.postgresql.org/docs/8.1/. Acesso em: 13 abr. 2006.

RFC 2898. PKCS 5: Password-Based Cryptography Specification Version 2.0. 2000. Disponível em: https://www.rfc-editor.org/rfc/rfc2898. Acesso em: 13 abr. 2006.

RFC 2965. HTTP State Management Mechanism (Cookies). 2000. Disponível em: https://www.rfc-editor.org/rfc/rfc2965. Acesso em: 13 abr. 2006.

RFC 3164. The BSD Syslog Protocol. 2001. Disponível em: https://www.rfc-editor.org/rfc/rfc3164. Acesso em: 13 abr. 2006.

RIVEST, Ronald L.; SHAMIR, Adi; ADLEMAN, Leonard. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, v. 21, n. 2, p. 120–126, 1978. Disponível em: https://dl.acm.org/doi/10.1145/359340.359342. Acesso em: 13 abr. 2006.

ROESCH, Martin. Snort: Lightweight intrusion detection for networks. In: Proceedings of the 13th USENIX Conference on System Administration (LISA). Berkeley: USENIX, 1999. Disponível em: https://www.snort.org/. Acesso em: 13 abr. 2006.

RSNAKE. XSS (Cross Site Scripting) Cheat Sheet. 2005. Disponível em: http://ha.ckers.org/xss.html. Acesso em: 13 abr. 2006.

SEACORD, Robert C. Secure Coding in C and C++. Boston: Addison-Wesley, 2005. Disponível em: https://www.informit.com/store/secure-coding-in-c-and-c-plus-plus-9780321335722. Acesso em: 13 abr. 2006.

SECURITYFOCUS. Bugtraq Mailing List and Vulnerability Database. 2006. Disponível em: http://www.securityfocus.com/archive/1. Acesso em: 13 abr. 2006.

SNORT PROJECT. Snort Users Manual 2.4. 2005. Disponível em: https://www.snort.org/documents. Acesso em: 13 abr. 2006.

TENABLE NETWORK SECURITY. Nessus User Guide. 2006. Disponível em: https://www.tenable.com. Acesso em: 13 abr. 2006.

WEBSCARAB (OWASP). OWASP WebScarab Project. 2005. Disponível em: https://owasp.org/www-project-webscarab/. Acesso em: 13 abr. 2006.

HALFOND, William G. J.; ORSO, Alessandro. AMNESIA: Analysis and monitoring for neutralizing SQL injection attacks. In: Proceedings of the 20th IEEE/ACM International Conference on Automated Software Engineering (ASE). New York: ACM/IEEE, 2005. Disponível em: https://dl.acm.org/doi/10.1145/1101908.1101946. Acesso em: 13 abr. 2006.

Observação: Todas as referências acima possuem datas de publicação iguais ou anteriores a 2006 e URLs clicáveis. Em todos os trechos do texto, as citações seguem o formato ABNT autor-data.