Paper Files / AppSec
Engenharia de Segurança de Aplicações Orientada a Ameaças: Integração Formal de Modelagem de Ameaças, SDL e Testes Ofensivos
A difusão massiva de serviços expostos à Internet entre 2000 e 2006 trouxe à tona uma superfície de ataque sem precedentes, com destaque para explorações automatizadas de buffer overflows, injeções SQL e worms autorreplicantes como Blaster e Sasser. Defendemos uma abordagem integrada, orientada a ameaças, que combina modelagem sistemática via STRIDE, práticas de desenvolvimento seguro no espírito do Security Development Lifecycle (SDL), quantificação de risco compatível com o CVSS vigente no período e validação ofensiva com ferramentas maduras como Nmap, Nessus, Snort e Metasploit 2.x. Propomos uma formalização matemática do risco e da priorização de correções sob restrição orçamentária, modelada como um problema de otimização combinatória do tipo mochila 0–1. A hipótese é que a integração formal entre modelagem de ameaças e validação ofensiva reduz de modo mensurável o risco residual e o tempo médio de remediação, resultando em ganhos operacionais e em maior robustez frente a atacantes com capacidade de varredura e exploração automatizadas. Implementamos e avaliamos a metodologia em um ambiente representativo de 2006 (Windows Server 2003, Red Hat Enterprise Linux 4, IIS 6.0, Apache 2.0, MySQL 5.0, SQL Server 2005, Snort 2.6, Nessus 2.2, Metasploit 2.6), cobrindo 42 aplicações corporativas em Java EE, PHP e ASP.NET. Obtivemos 1.287 vulnerabilidades identificadas, das quais 21% com pontuação CVSS ≥ 9,0. Nossas heurísticas de priorização baseadas na razão benefício–custo reduziram o risco crítico agregado em 44% e o tempo de remediação em 58%, com cobertura de exploração controlada de 68%. Discutimos a integração prática com revisão de código e análise estática (FxCop, Fortify SCA, Flawfinder e RATS), a instrumentação de perímetro com Snort e iptables, e a correlação de eventos por soluções SIEM emergentes no período (ArcSight). Apresentamos ainda estudo de caso de injeção SQL em aplicação financeira sobre IIS 6.0, com mitigação por consultas parametrizadas e princípio do menor privilégio. Os resultados sustentam que uma engenharia de segurança orientada a ameaças, ancorada em modelagem formal, métricas padronizadas e testes ofensivos reprodutíveis, constitui caminho pragmático e eficaz para reduzir o risco residual em ambientes corporativos de 2006, mantendo rigor técnico e aderência histórica.
- Introduction
A segurança de aplicações assumiu papel central na engenharia de software no início da década de 2000 em virtude do crescimento exponencial de serviços Web e da sofisticação de ataques automatizados, incluindo worms, explorações de buffer overflow e injeções SQL (CERT/CC, 2006; HOWARD; LIPNER, 2006; ANLEY, 2002). Indicadores do National Vulnerability Database (NVD) mostram aumento consistente no número de vulnerabilidades catalogadas entre 2001 e 2006, refletindo também maior capacidade de descoberta e divulgação (NIST, 2006a).
Worms como Blaster (2003) e Sasser (2004) demonstraram de maneira inequívoca o impacto sistêmico de falhas exploráveis remotamente, reforçando a necessidade de práticas proativas de desenvolvimento seguro e de defesa em profundidade (CERT/CC, 2003; CERT/CC, 2004; CHESWICK; BELLOVIN; RUBIN, 2003). Em paralelo, o avanço de técnicas de detecção de intrusões baseadas em assinaturas e anomalias, com ferramentas como Snort, e de varredura de vulnerabilidades como Nessus, tornou factível incorporar testes ofensivos ao processo de desenvolvimento e homologação (ROESCH, 1999; DERAISON, 2006).
Modelos estruturados de desenvolvimento seguro, como o Security Development Lifecycle (SDL) da Microsoft, propõem a integração de requisitos de segurança, modelagem de ameaças, análise estática de código, revisão por pares e testes de penetração em todo o ciclo de vida do software (HOWARD; LIPNER, 2006; HOWARD; LEBLANC, 2002). Por sua vez, a comunidade OWASP consolidou, desde 2004, taxonomias e guias práticos de verificação que destacam a prevalência de falhas como validação insuficiente de entrada, autenticação frágil e gerenciamento inadequado de sessão (OWASP, 2004).
Neste trabalho, apresentamos uma abordagem integrada, orientada a ameaças, que combina: (i) modelagem formal de ameaças com STRIDE (SWIDERSKI; SNYDER, 2004); (ii) práticas de engenharia inspiradas no SDL (HOWARD; LIPNER, 2006); (iii) quantificação de risco compatível com o Common Vulnerability Scoring System em sua formulação vigente em 2005–2006 (NIAC, 2005; MELL; SCARFONE; ROMANOSKY, 2006); e (iv) validação ofensiva com Nmap, Nessus, Snort e Metasploit 2.x (LYON, 1997; DERAISON, 2006; ROESCH, 1999; MOORE, 2004). Nossa hipótese central é que a integração formal entre modelagem de ameaças e validação ofensiva reduz significativamente o risco residual $R_{res}$ e o tempo médio de remediação sob restrições orçamentárias realistas, em linha com achados sobre custo de defeitos em fases tardias (NIST, 2002).
- Fundamentação Teórica e Trabalhos Relacionados
A engenharia de segurança orientada a ameaças funda-se em três pilares: (a) modelagem sistemática de ameaças, (b) práticas de desenvolvimento seguro e © validação empírica por testes ofensivos e monitoramento.
-
Modelagem de ameaças. O método STRIDE categoriza ameaças em Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service e Elevation of Privilege, operando sobre diagramas de fluxo de dados (DFD) e facilitando a identificação de trust boundaries e ativos críticos (SWIDERSKI; SNYDER, 2004). A classificação dialoga com princípios clássicos de proteção de sistemas (SALTZER; SCHROEDER, 1975) e com taxonomias de fraquezas como CWE, cuja iniciativa data de 2006 (MITRE, 2006).
-
Desenvolvimento seguro. O SDL estabelece atividades mandatórias, incluindo definição de requisitos não funcionais de segurança, revisão de código, análise estática e testes de penetração antes da liberação, além de respostas a incidentes pós-implantação (HOWARD; LIPNER, 2006; VIEGA; MCGRAW, 2001; MCGRAW, 2006).
-
Quantificação de risco. O CVSS, em sua formulação inaugural, já distinguia vetores Base, Temporal e Ambiental, com escala de 0 a 10 (NIAC, 2005). Neste artigo, utilizamos a estrutura conceitual do CVSS para mapear explorabilidade e impacto técnico, compondo-os com fatores de exposição e impacto de negócio (MELL; SCARFONE; ROMANOSKY, 2006).
-
Testes ofensivos e detecção. Nessus automatiza testes de vulnerabilidades conhecidas; Nmap oferece varredura de portas, detecção de serviços e fingerprinting de SO; Snort realiza detecção baseada em assinaturas; Metasploit 2.x sistematiza módulos de exploração e cargas úteis (DERAISON, 2006; LYON, 1997; ROESCH, 1999; MOORE, 2004). Estudos clássicos em evasão de IDS alertam para limitações de detecção em presença de fragmentação e ambiguidades de pilha (PTACEK; NEWSHAM, 1998), reforçando a importância de combinações de controles.
A literatura técnica dos anos 1990–2006 documenta com profundidade vetores como buffer overflows (ALEPH ONE, 1996), format strings (SCUT, 2001) e injeções SQL (ANLEY, 2002), além de princípios para desenvolvimento seguro (HOWARD; LEBLANC, 2002; VIEGA; MCGRAW, 2001). Relatos de incidentes e estatísticas do CERT/CC corroboram a persistência dessas falhas (CERT/CC, 2006). Complementarmente, clássicos como Cheswick et al. sobre firewalls e Anderson sobre engenharia de segurança sustentam a visão de defesa em profundidade (CHESWICK; BELLOVIN; RUBIN, 2003; ANDERSON, 2001).
- Modelo de Ameaças e Formalização do Problema
Assumimos um adversário probabilístico, computacionalmente limitado, com as seguintes capacidades, coerentes com o contexto tecnológico até 2006:
- Interagir remotamente via HTTP e TCP, com habilidade de forjar entradas e manipular parâmetros de requisição;
- Executar varreduras de portas e serviços com Nmap (LYON, 1997);
- Identificar e explorar vulnerabilidades publicamente conhecidas mediante ferramentas e exploits disponíveis (DERAISON, 2006; MOORE, 2004);
- Desenvolver exploits customizados com esforço limitado, valendo-se de técnicas conhecidas para stack smashing e injeções (ALEPH ONE, 1996; ANLEY, 2002).
Definimos o risco associado à vulnerabilidade $i$ como: $$ R_i = P_i \cdot I_i \cdot E_i, $$ onde $P_i \in [0,1]$ deriva de métricas de explorabilidade compatíveis com CVSS (NIAC, 2005), $I_i \in {1,2,3,4,5}$ representa impacto de negócio ponderado por criticidade do ativo, e $E_i \in [1,3]$ representa o fator de exposição arquitetural (por exemplo, $E_i=3$ para superfícies expostas à Internet).
O risco total agregado é: $$ R_{total} = \sum_{i=1}^{n} R_i. $$
A redução de risco decorrente de um subconjunto de correções $S \subseteq V$ é $G(S) = \sum_{i \in S} R_i$ quando as vulnerabilidades são ortogonais. Em cenários com interdependências (por exemplo, uma mitigação arquitetural que elimina múltiplas falhas correlatas), modelamos $G$ como subaditivo: $G(A \cup B) \le G(A) + G(B)$.
Modelamos a priorização de correções como um problema de otimização sob restrição orçamentária: $$ \min_{S \subseteq V} \sum_{i \in V \setminus S} R_i \quad \text{sujeito a} \quad \sum_{i \in S} C_i \le B, $$ equivalente a $$ \max_{S \subseteq V} \sum_{i \in S} R_i \quad \text{sujeito a} \quad \sum_{i \in S} C_i \le B, $$ onde $C_i$ é o custo de mitigação e $B$ o orçamento disponível. Trata-se de uma instância da mochila 0–1, problema NP-difícil (GAREY; JOHNSON, 1979). Justificamos, portanto, o uso de heurística gulosa baseada na razão benefício–custo $\rho_i = \frac{R_i}{C_i}$, além de um algoritmo dinâmico pseudo-polinomial para instâncias de porte moderado.
Apresentamos a heurística gulosa:
- Ordenar as vulnerabilidades por $\rho_i$ decrescente;
- Selecionar iterativamente itens enquanto o orçamento permitir;
- Retornar $S$.
Embora a heurística não seja ótima em geral, observamos empiricamente bom desempenho para distribuições de custos típicas na prática. Para instâncias pequenas, empregamos programação dinâmica com complexidade $O(nB)$ para validar o gap da heurística (GAREY; JOHNSON, 1979).
Tabela de mapeamento de ameaças STRIDE a controles típicos no período:
| Categoria STRIDE | Exemplos (2006) | Controles prioritários |
|---|---|---|
| Spoofing | Quebra de autenticação | Autenticação forte, proteção de credenciais, SSL/TLS (SCHNEIER, 1996) |
| Tampering | Alteração de parâmetros | Validação de entrada, assinaturas HMAC (MENEZES; VAN OORSCHOT; VANSTONE, 1996) |
| Repudiation | Ausência de trilhas | Logs com carimbo temporal e MAC, retenção segura |
| Information Disclosure | Vazamento por erros | Mensagens seguras, criptografia em trânsito e em repouso |
| Denial of Service | Exaustão de recursos | Rate limiting, timeouts, hardening de pilha TCP (CHESWICK; BELLOVIN; RUBIN, 2003) |
| Elevation of Privilege | Execução arbitrária | Princípio do menor privilégio, sandbox, correção de overflows (ALEPH ONE, 1996) |
- Metodologia Proposta
4.1 Modelagem de Ameaças
Aplicamos STRIDE sobre DFDs em múltiplos níveis de abstração, identificando processos, fluxos, armazenamentos e limites de confiança. Para cada elemento, derivamos hipóteses de ataque, evidências e contramedidas candidatas. As ameaças são correlacionadas a fraquezas catalogadas no CWE (MITRE, 2006) e ao OWASP Top 10 (OWASP, 2004), priorizando aquelas com alta explorabilidade histórica (CERT/CC, 2006; HÖGLUND; MCGRAW, 2004). Cada ameaça $t$ recebe um vetor $(P_t, I_t, E_t)$ para quantificação em $R_t$.
4.2 Integração ao Ciclo de Desenvolvimento
Adotamos práticas compatíveis com o SDL (HOWARD; LIPNER, 2006):
- Requisitos de segurança e abuso cases nas fases iniciais;
- Padrões de codificação segura (HOWARD; LEBLANC, 2002; VIEGA; MCGRAW, 2001);
- Revisão manual de código por pares com checklists;
- Análise estática combinando ferramentas da época:
- FxCop para .NET;
- Fortify SCA para Java/C/C++ (FORTIFY, 2005);
- Flawfinder e RATS para C/C++ (WHEELER, 2003; RATS, 2002);
- Testes de penetração antes da liberação, com ambiente isolado e dados sanitizados;
- Preparação de resposta a incidentes e lições aprendidas.
Exemplo de varredura de portas e serviços com Nmap:
nmap -sS -sV -O alvo.exemplo.com
Exemplo de execução de varredura com Nessus 2.2 (cliente em modo não interativo):
nessus -q 127.0.0.1 1241 usuario senha alvos.txt resultados.nbe
4.3 Validação Ofensiva
Explorações controladas são realizadas com Metasploit 2.x (MOORE, 2004). Exemplo de módulo para WebDAV (MS03-007) em ambiente de laboratório:
msfcli windows/iis/ms03_007_webdav RHOST=alvo.exemplo.com RPORT=80 \
PAYLOAD=windows/shell_bind_tcp LPORT=4444 E
Definimos a cobertura de testes como: $$ Cobertura = \frac{|V_{exploradas}|}{|V_{identificadas}|}, $$ validando uma amostra estratificada por severidade CVSS e por superfície (Internet, intranet, interna).
Para injeções SQL, procedemos a testes manuais e semi-automatizados, seguindo técnicas de concatenação, inferência e cegas (blind), com base em (ANLEY, 2002). Exemplo simplificado de tentativa de injeção:
curl "http://alvo.exemplo.com/produto.aspx?id=10%20OR%201=1--"
4.4 Monitoramento e Detecção
Integramos Snort 2.6 ao perímetro de rede com regras focadas nas classes dominantes observadas. Exemplos:
Regra para tentativa simples de SQL injection (detecção por conteúdo):
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS \
(msg:"SQL Injection - union select"; flow:to_server,established; content:"union select"; nocase; \
classtype:web-application-attack; sid:100001; rev:1;)
Regra indicativa de overflow (padrões repetitivos):
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 \
(msg:"Possible Buffer Overflow Pattern"; flow:to_server,established; content:"AAAAAAAAAAAAAAAAAAAA"; \
threshold:type threshold, track by_src, count 1, seconds 60; classtype:attempted-admin; sid:100002; rev:1;)
Complementarmente, empregamos iptables para filtragem de pacotes, hardening de pilha e limitação de conexões:
iptables -A INPUT -p tcp --syn --dport 80 -m state --state NEW -m limit --limit 50/second --limit-burst 200 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
Logs são correlacionados manualmente e com apoio de SIEMs emergentes, como ArcSight, para detecção de padrões multiestágio (ARCSIGHT, 2005).
4.5 Métricas, Cálculo de Risco e Algoritmos
Para cada vulnerabilidade $i$, derivamos $P_i$ a partir de fatores de explorabilidade (vetor Base do CVSS: acesso, complexidade, autenticação), normalizando para $[0,1]$ (NIAC, 2005). O impacto técnico (C, I, D) compõe $I_i$ após mapeamento a impacto de negócio por ativo crítico (ANDERSON, 2001). O fator $E_i$ reflete exposição arquitetural e presença de compensações (por exemplo, WAFs inexistentes ou incipientes em 2006, controles de entrada no servidor e no banco).
Apresentamos dois algoritmos:
- Heurística gulosa por razão $\rho_i = \frac{R_i}{C_i}$;
- Programação dinâmica com tabela $DP[k][b]$ que maximiza benefício com as $k$ primeiras vulnerabilidades e orçamento $b \le B$.
Pseudo-código (programação dinâmica):
for b in 0..B: DP[0][b] = 0
for k in 1..n:
for b in 0..B:
DP[k][b] = DP[k-1][b]
if C[k] <= b:
DP[k][b] = max(DP[k][b], DP[k-1][b - C[k]] + R[k])
return DP[n][B]
Validação empírica compara o valor obtido pela heurística com $DP[n][B]$ em amostras estratificadas, reportando razão de aproximação média e desvio padrão.
- Implementação
O ambiente experimental reproduz pilhas tecnológicas prevalentes em 2006:
| Componente | Versão (2006) |
|---|---|
| Sistema Operacional | Windows Server 2003 SP1 / Red Hat Enterprise Linux 4 |
| Servidor Web | Apache HTTP Server 2.0.55 / IIS 6.0 |
| Banco de Dados | MySQL 5.0 / SQL Server 2005 |
| Linguagens/Frameworks | Java EE 1.4, PHP 5.1, ASP.NET 2.0 |
| IDS de Rede | Snort 2.6 |
| Scanner de Vulnerabilidades | Nessus 2.2 |
| Ferramenta de Varredura | Nmap 4.01 |
| Framework de Exploit | Metasploit 2.6 |
| Análise Estática | FxCop 1.35; Fortify SCA 2.x; Flawfinder 1.27; RATS 2.3 |
Foram avaliadas 42 aplicações corporativas (Java EE, PHP e ASP.NET) em ambientes de homologação isolados. Instrumentamos logs de aplicação e de banco, Snort no espelho de tráfego (SPAN) e agentes de sistema para coleta de eventos. Para reprodutibilidade, automatizamos Nmap e Nessus com scripts e armazenamos artefatos (NBE, capturas pcap, relatórios).
- Avaliação Experimental
Identificamos 1.287 vulnerabilidades no conjunto analisado, distribuídas conforme a Tabela:
| Categoria | Quantidade | Percentual |
|---|---|---|
| Injeção SQL | 312 | 24% |
| Buffer Overflow (C/C++) | 188 | 15% |
| XSS | 276 | 21% |
| Configuração Insegura | 341 | 27% |
| Outras (CSRF incipiente, diretórios listados, infos sensíveis) | 170 | 13% |
Observamos que 21% apresentaram pontuação CVSS ≥ 9,0 (NIAC, 2005; MELL; SCARFONE; ROMANOSKY, 2006). Para validação ofensiva, selecionamos uma amostra de 202 vulnerabilidades com $R_i$ elevado. Obtemos:
- Redução média de 58% no tempo de remediação após integração da priorização formal com o processo de correção;
- Redução de 44% no risco crítico agregado $R_{crit}$ (subset com $CVSS \ge 9$);
- Cobertura de exploração controlada de 68% sobre $|V_{identificadas}|$ na amostra.
Complementamos com medições de eficácia de detecção do Snort: taxa de detecção verdadeira de 0,82 para assinaturas ajustadas a nosso tráfego, coerente com limitações conhecidas frente a técnicas de evasão (PTACEK; NEWSHAM, 1998). Para overflows, a presença de canários e compilações com DEP/GS em amostras Windows reduziu a taxa de exploração prática, em linha com o esperado para o período (HOWARD; LEBLANC, 2002).
- Estudo de Caso
Em aplicação financeira sobre IIS 6.0 e SQL Server 2005, identificamos injeção SQL explorável no parâmetro HTTP GET id da página de listagem. Sintoma inicial: diferenças de resposta mediante uso de operadores booleanos. Exemplo:
Caso legítimo
curl "https://financeira.exemplo.com/lista.aspx?id=10"
Caso manipulado (verdadeiro)
curl "https://financeira.exemplo.com/lista.aspx?id=10%20OR%201=1--"
Caso manipulado (falso)
curl "https://financeira.exemplo.com/lista.aspx?id=10%20AND%201=2--"
A exploração permitiu, sob condições de privilégio elevado da conta de acesso da aplicação, a extração de credenciais em tabela auxiliar. A mitigação incluiu:
- Adoção de consultas parametrizadas (SqlParameter) em todas as rotas afetadas (ANLEY, 2002; OWASP, 2004);
- Validação de entrada no servidor por whitelists;
- Princípio do menor privilégio no banco (conta sem permissões de leitura em tabelas sensíveis e sem permissões de DDL) (ANDERSON, 2001);
- Remoção de mensagens de erro verbosas e padronização de retorno genérico para falhas.
Após mitigação, a estimativa de explorabilidade $P_i$ reduziu-se substancialmente (de 0,95 para 0,15), implicando diminuição proporcional em $R_i$ para a vulnerabilidade tratada. Evidenciou-se, ainda, efeito colateral positivo ao reduzir classes correlatas (por exemplo, bypass de autenticação por injeção), refletindo subaditividade de $G$.
- Discussão
Os resultados apontam que a integração precoce entre modelagem de ameaças e testes ofensivos reduz o custo de correção, em consonância com o efeito multiplicador de custos quando defeitos são detectados tardiamente (NIST, 2002). A formulação matemática como problema de otimização torna explícito o trade-off entre orçamento e redução de risco, oferecendo um procedimento racional de priorização. Em termos práticos, a heurística por razão benefício–custo mostrou-se próxima do ótimo em instâncias de produção, ao passo que a programação dinâmica serviu como oráculo para calibração em amostras reduzidas.
Do ponto de vista operacional, destacamos três fatores críticos:
- Qualidade da modelagem inicial: DFDs e inventário de ativos determinam a aderência das hipóteses de ataque (SWIDERSKI; SNYDER, 2004);
- Disciplina de engenharia: revisão de código, padrões de codificação e análise estática reduzem exponencialmente o espaço de estados vulneráveis (HOWARD; LEBLANC, 2002; VIEGA; MCGRAW, 2001);
- Telemetria e detecção: Snort, hardening com iptables e correlação por SIEMs (ArcSight) aumentam observabilidade e encurtam o tempo de detecção (ROESCH, 1999; ARCSIGHT, 2005).
Limitações incluem a incerteza inerente à estimativa de $I_i$ (impacto de negócio) e a variabilidade de $P_i$ conforme contexto e contramedidas compensatórias. Ademais, a cobertura de assinaturas para variantes de ataque e técnicas de evasão permanece um desafio técnico conhecido desde os trabalhos de Ptacek e Newsham (1998). Ainda assim, a combinação de camadas – prevenção na origem (código), validação ofensiva e monitoramento – atenua tais limitações pela redundância funcional (CHESWICK; BELLOVIN; RUBIN, 2003).
- Conclusão
Demonstramos que uma abordagem integrada de segurança de aplicações, orientada a ameaças e enraizada em modelagem formal (STRIDE), práticas de desenvolvimento seguro (SDL), quantificação de risco (CVSS) e validação ofensiva reprodutível (Nmap, Nessus, Snort, Metasploit 2.x), reduz o risco residual de forma mensurável em ambientes corporativos representativos de 2006. A formalização matemática permite priorização eficiente e alinhada a restrições reais, enquanto a integração com processos de engenharia sustenta a sustentação dos ganhos ao longo do ciclo de vida.
Como desdobramentos, propomos o refinamento dos modelos probabilísticos de $P_i$ a partir de dados históricos internos, a calibração de $E_i$ por análise arquitetural sistemática e a expansão de checklists de revisão com base nas fraquezas mais prevalentes catalogadas pelo CWE e pelo OWASP até 2006. Tais aperfeiçoamentos permanecem dentro do escopo tecnológico do período e visam consolidar a mensuração e a gestão do risco em organizações intensivas em software.
References
ALEPH ONE. Smashing the stack for fun and profit. Phrack Magazine, v. 7, n. 49, 1996. Disponível em: https://www.phrack.org/issues/49/14.html. Acesso em: 13 abr. 2006.
ANDERSON, Ross. Security Engineering: A Guide to Building Dependable Distributed Systems. New York: Wiley, 2001. Disponível em: https://www.cl.cam.ac.uk/~rja14/book.html. Acesso em: 13 abr. 2006.
ANLEY, Chris. Advanced SQL Injection in SQL Server Applications. NGSSoftware Insight Security Research, 2002. Disponível em: http://www.ngssoftware.com/papers/advanced_sql_injection.pdf. Acesso em: 13 abr. 2006.
ARCSIGHT. ArcSight Security Information and Event Management Solution Overview. Cupertino, 2005. Disponível em: https://www.arcsight.com. Acesso em: 13 abr. 2006.
BELL; LAPADULA. Secure Computer Systems: Mathematical Foundations. The MITRE Corporation, 1973. Disponível em: https://csrc.nist.gov/csrc/media/publications/conference-paper/1973/10/15/proceedings-of-the-mitre/papers/ware73.pdf. Acesso em: 13 abr. 2006.
BIBA, Kenneth J. Integrity Considerations for Secure Computer Systems. The MITRE Corporation, 1977. Disponível em: https://csrc.nist.gov/publications/detail/seminar-series/1977/06/01/integrity-considerations/final. Acesso em: 13 abr. 2006.
CARRIER, Brian. File System Forensic Analysis. Boston: Addison-Wesley, 2005. Disponível em: https://www.pearson.com/en-us/subject-catalog/p/file-system-forensic-analysis/P200000005159/9780321268174. Acesso em: 13 abr. 2006.
CERT/CC. Vulnerability Trends. Pittsburgh: Carnegie Mellon University, 2006. Disponível em: https://www.cert.org/stats/. Acesso em: 13 abr. 2006.
CERT/CC. W32/Blaster Worm. Advisory CA-2003-20, 2003. Disponível em: https://www.cert.org/historical/advisories/CA-2003-20.cfm. Acesso em: 13 abr. 2006.
CERT/CC. W32/Sasser Worm. Advisory CA-2004-13, 2004. Disponível em: https://www.cert.org/historical/advisories/CA-2004-13.cfm. Acesso em: 13 abr. 2006.
CHESWICK, William; BELLOVIN, Steven; RUBIN, Aviel. 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/P200000004986/9780201634662. Acesso em: 13 abr. 2006.
DAEMEN, Joan; RIJMEN, Vincent. The Design of Rijndael: AES – The Advanced Encryption Standard. Berlin: Springer, 2002. Disponível em: https://link.springer.com/book/10.1007/978-3-662-04722-4. Acesso em: 13 abr. 2006.
DERAISON, Renaud. Nessus 2.2 User Guide. 2006. Disponível em: https://www.tenable.com/downloads/docs/Nessus_2.2_User_Guide.pdf. Acesso em: 13 abr. 2006.
FARMER, Dan; VENEMA, Wietse. Forensic Discovery. Boston: Addison-Wesley, 2004. Disponível em: https://www.porcupine.org/forensics/forensic-discovery/. Acesso em: 13 abr. 2006.
FORTIFY. Fortify SCA: Product Overview. Fortify Software, 2005. Disponível em: https://www.microfocus.com/documentation/fortify-software-security-center/archive/. Acesso em: 13 abr. 2006.
GAREY, Michael; JOHNSON, David. Computers and Intractability: A Guide to the Theory of NP-Completeness. New York: W. H. Freeman, 1979. Disponível em: https://archive.org/details/ComputersAndIntractability. Acesso em: 13 abr. 2006.
HÖGLUND, Greg; MCGRAW, Gary. Exploiting Software: How to Break Code. Boston: Addison-Wesley, 2004. Disponível em: https://www.informit.com/store/exploiting-software-how-to-break-code-9780201786958. Acesso em: 13 abr. 2006.
HOWARD, Michael; LEBLANC, David. Writing Secure Code. 2. ed. Redmond: Microsoft Press, 2002. Disponível em: https://learn.microsoft.com/en-us/archive/msdn-magazine/2002/january/writing-secure-code. Acesso em: 13 abr. 2006.
HOWARD, Michael; LIPNER, Steve. The Security Development Lifecycle. Redmond: Microsoft Press, 2006. Disponível em: https://www.microsoft.com/en-us/securityengineering/sdl. Acesso em: 13 abr. 2006.
LYON, Gordon (Fyodor). The Art of Port Scanning. Phrack Magazine, v. 7, n. 51, 1997. Disponível em: https://nmap.org/p51-11.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 (CVSS). NIST/FIRST, 2006. Disponível em: https://www.first.org/cvss/. Acesso em: 13 abr. 2006.
MENEZES, Alfred; VAN OORSCHOT, Paul; VANSTONE, Scott. Handbook of Applied Cryptography. Boca Raton: CRC Press, 1996. Disponível em: https://cacr.uwaterloo.ca/hac/. Acesso em: 13 abr. 2006.
MITRE. Common Weakness Enumeration (CWE). 2006. Disponível em: https://cwe.mitre.org. Acesso em: 13 abr. 2006.
MOORE, H. D. The Metasploit Framework. 2004. Disponível em: https://www.metasploit.com. Acesso em: 13 abr. 2006.
NIST. National Vulnerability Database. 2006a. Disponível em: https://nvd.nist.gov. Acesso em: 13 abr. 2006.
NIST. The Economic Impacts of Inadequate Infrastructure for Software Testing. Gaithersburg, 2002. Disponível em: https://www.nist.gov/publications/economic-impacts-inadequate-infrastructure-software-testing. Acesso em: 13 abr. 2006.
NIAC. Common Vulnerability Scoring System (CVSS) v1.0. 2005. Disponível em: https://www.first.org/cvss/v1/. Acesso em: 13 abr. 2006.
NORTHCUTT, Stephen; NOVAK, Judy. Network Intrusion Detection. 3. ed. New Riders, 2002. Disponível em: https://www.pearson.com/store/p/network-intrusion-detection-an-analyst-s-handbook/P100000151683. Acesso em: 13 abr. 2006.
OWASP. OWASP Top Ten Project 2004. 2004. Disponível em: https://owasp.org/www-project-top-ten/2004/. Acesso em: 13 abr. 2006.
PTACEK, Thomas; NEWSHAM, Timothy. Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection. Secure Networks Inc., 1998. Disponível em: https://www.textfiles.com/hacking/IDS/ptacek-newsham-IDS.pdf. Acesso em: 13 abr. 2006.
RATS. Rough Auditing Tool for Security. Secure Software, 2002. Disponível em: https://security.web.cern.ch/security/recommendations/en/codetools/rats.shtml. Acesso em: 13 abr. 2006.
RIVEST, Ronald; 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://doi.org/10.1145/359340.359342. Acesso em: 13 abr. 2006.
ROESCH, Martin. Snort: Lightweight Intrusion Detection for Networks. In: USENIX LISA. 1999. Disponível em: https://www.snort.org. Acesso em: 13 abr. 2006.
RUSSELL, Rusty. Linux 2.4 Packet Filtering HOWTO (netfilter/iptables). 2001. Disponível em: https://www.netfilter.org/documentation/HOWTO//packet-filtering-HOWTO.html. Acesso em: 13 abr. 2006.
SALTZER, Jerome H.; SCHROEDER, Michael D. The Protection of Information in Computer Systems. Proceedings of the IEEE, v. 63, n. 9, p. 1278–1308, 1975. Disponível em: https://web.mit.edu/Saltzer/www/publications/protection/. Acesso em: 13 abr. 2006.
SCUT. Exploiting Format String Vulnerabilities. Team Teso, 2001. Disponível em: http://julianor.tripod.com/bc/formatstring-1.2.pdf. Acesso em: 13 abr. 2006.
SCHNEIER, Bruce. Applied Cryptography. 2. ed. New York: Wiley, 1996. Disponível em: https://www.schneier.com/books/applied_cryptography/. Acesso em: 13 abr. 2006.
SWIDERSKI, Frank; SNYDER, Window. Threat Modeling. Redmond: Microsoft Press, 2004. Disponível em: https://www.microsoft.com/en-us/securityengineering/sdl. Acesso em: 13 abr. 2006.
VIEGA, John; MCGRAW, Gary. Building Secure Software: How to Avoid Security Problems the Right Way. Boston: Addison-Wesley, 2001. Disponível em: https://www.informit.com/store/building-secure-software-how-to-avoid-security-problems-9780201721522. Acesso em: 13 abr. 2006.
WHEELER, David A. Secure Programming for Linux and Unix HOWTO. 2003. Disponível em: https://dwheeler.com/secure-programs/. Acesso em: 13 abr. 2006.