Paper Files / AppSec
Engenharia de Segurança de Aplicações Orientada a Ameaças: Integração de SAST, DAST e SDLC Seguro para Redução Mensurável da Superfície de Ataque
A década de 1998–2008 consolidou a segurança de aplicações como disciplina central na defesa organizacional, em resposta à migração dos ataques do perímetro de rede para a camada de aplicação, impulsionada pela ubiquidade da web e por vetores como injeção SQL, cross-site scripting (XSS), falsificação de requisições entre sites (CSRF) e configurações inseguras. Argumentamos que, nesse contexto, a engenharia de segurança orientada a ameaças, quando integrada ao ciclo de vida de desenvolvimento de software (SDLC) por meio de análise estática de código (SAST), testes dinâmicos (DAST), modelagem sistemática de ameaças (STRIDE, árvores de ataque) e controles de operação (IDS, WAF, correlação de logs), produz redução quantificável da superfície de ataque e do risco residual. Propomos um arcabouço metodológico de 2008 que (i) emprega STRIDE e árvores de ataque para especificação formal de ameaças pertinentes a aplicações web e serviços SOAP/XML-RPC; (ii) institucionaliza SAST com ferramentas da época (FindBugs, PMD, Splint, Flawfinder, RATS) e DAST com varredores e proxies (Nikto, Burp Suite, OWASP WebScarab, Paros); (iii) estabelece gestão de dependências com acompanhamento do NVD/CVE e revisão manual de bibliotecas; (iv) utiliza WAF (ModSecurity) e IDS (Snort/Bro) para mitigação em produção; e (v) adota métricas formais, ancoradas no CVSS v2, para priorização e medição de risco. Formalizamos o risco residual R_r como soma ponderada de probabilidade, impacto e exposição temporal, e definimos a superfície de ataque S como função dos endpoints, dependências, configurações e interações externas. Implementamos o processo em um pipeline de integração contínua de 2008 (Hudson/CruiseControl com Ant/Maven), incluindo gates de qualidade. Em um estudo com uma aplicação Java EE 5 (Tomcat 6, 120 mil LOC), observamos redução de 41% nas vulnerabilidades exploráveis após três iterações, queda no MTTR de 27 para 14 dias e melhora de 36% na cobertura de crawling dinâmico, com falsos positivos de SAST reduzidos de 24% para 12% por meio de tuning de regras e revisões manuais. Um estudo de caso detalha a eliminação de uma injeção SQL autêntica em módulo de autenticação, demonstrando a transição de concatenação de strings para consultas preparadas (PreparedStatement) e bloqueios táticos via ModSecurity. Os resultados confirmam empiricamente que, em 2008, uma abordagem integrada, focada em ameaças e sustentada por técnicas e ferramentas viáveis à época, reduz de modo mensurável a superfície de ataque e o risco residual, mantendo rigor formal e operacionalidade prática em ambientes corporativos sem dependência de paradigmas anacrônicos.
- Introdução
Entre 1998 e 2008, a segurança de aplicações transformou-se de um conjunto de práticas ad hoc em um componente estratégico do SDLC, motivada por ataques que ultrapassaram as barreiras tradicionais de firewalls e IDS perimetrais (ROESCH, 1999; PAXSON, 1999). Incidentes emblemáticos com worms e exploits de aplicação — como Code Red, Nimda, SQL Slammer, Blaster e Sasser — demonstraram, em diferentes camadas, a rapidez de propagação, o impacto operacional e o papel das falhas de software como catalisador de comprometimentos em larga escala (CERT/CC, 2003a; CERT/CC, 2003b; MOORE et al., 2002). Em paralelo, o crescimento das aplicações web e de serviços SOAP/XML-RPC reposicionou o foco de defesa para a lógica de aplicação, onde injeções SQL, XSS e CSRF emergiram como vetores dominantes (HALFOND; VIEGAS; ORSO, 2006; BARTH; JACKSON; MITCHELL, 2008; KLEIN, 2005).
Sustentamos que tratar AppSec como sistema integrado de mitigação orientada a ameaças — em contraposição a um mosaico de ferramentas — é condição necessária para reduzir a superfície de ataque e o risco residual. Adotamos uma visão de 2008, tecnicamente adequada ao estado da arte daquele período, que articula modelagem de ameaças (STRIDE e árvores de ataque), análise estática (SAST) e dinâmica (DAST), processo de SDLC seguro (Microsoft SDL, OWASP CLASP), e controles operacionais (WAF ModSecurity, IDS Snort/Bro), apoiando a tomada de decisão por métricas formais ancoradas no CVSS v2 (FIRST, 2007; HOWARD; LIPNER, 2006; OWASP, 2008a; SCHNEIER, 1999).
Este trabalho oferece quatro contribuições. Primeiro, formalizamos a superfície de ataque e o risco residual com expressões quantitativas adequadas ao contexto de 2008. Segundo, descrevemos uma metodologia de integração de SAST e DAST no SDLC, com ferramentas então disponíveis e práticas realistas de integração contínua (Hudson/CruiseControl). Terceiro, relatamos uma implementação em ambiente Java EE 5 com Tomcat 6 e Apache 2.2, integrando análise, WAF e IDS. Quarto, apresentamos avaliação experimental com métricas de densidade de vulnerabilidades, cobertura de crawling dinâmico, falsos positivos, MTTR e priorização baseada em CVSS v2.
A tese central é que a convergência entre rigor de modelagem, verificação estática e exploração dinâmica controlada, aliada a processos reprodutíveis, resulta em redução mensurável da superfície de ataque, sem pressupor tecnologias ausentes em 2008 e mantendo coerência histórica e metodológica.
- Fundamentos e Trabalhos Relacionados
A literatura entre 1999 e 2008 consolidou conceitos que orientam nossa abordagem. STRIDE sistematiza ameaças por categorias (spoofing, tampering, repudiation, information disclosure, denial of service, elevation of privilege), vinculando-as a propriedades de segurança (autenticidade, integridade, não repúdio, confidencialidade, disponibilidade, autorização) (SWIDERSKI; SNYDER, 2004). Árvores de ataque descrevem decomposição hierárquica de objetivos adversariais e auxiliam na priorização de mitigadores (SCHNEIER, 1999). No plano do processo, o SDL da Microsoft documenta práticas de segurança incorporadas ao desenvolvimento (HOWARD; LIPNER, 2006), ao passo que o OWASP CLASP provê guias práticos para atividades específicas no SDLC (OWASP, 2008a).
Na camada de aplicação, as vulnerabilidades mais prevalentes aparecem no OWASP Top 10 de 2007, incluindo injeção, XSS, gerenciamento deficiente de autenticação e sessão, exposição de dados e configurações inseguras (OWASP, 2007). Injeção SQL foi detalhada e classificada por Halfond, Viegas e Orso (2006), enquanto a compreensão de XSS foi aprofundada por estudos sobre vetores refletidos, armazenados e baseados em DOM (KLEIN, 2005; CERT/CC, 2000). CSRF, embora menos notório no início da década, já contava em 2008 com análise formal de ameaças e contramedidas robustas (BARTH; JACKSON; MITCHELL, 2008).
SAST, no período, inclui ferramentas de propósito geral e orientadas a segurança: FindBugs (Java) detecta padrões de defeitos e alguns problemas de segurança (HOVEMEYER; PUGH, 2004), PMD e Checkstyle reforçam convenções e antipadrões (PMD, 2008; CHECKSTYLE, 2008), enquanto Splint ©, Flawfinder (C/C++) e RATS (C/C++/Perl/PHP/Python) identificam usos perigosos de APIs e fluxos potencialmente inseguros (LAROCHELLE; EVANS, 2001; WHEELER, 2001; RED HAT, 2002). Para PHP, Pixy introduz análise estática com rastreamento de taint para identificar injeções (JOVANOVIC; KRUEGEL; KIRDA, 2006). Para Java, pesquisas de taint analysis demonstraram eficácia na detecção de vulnerabilidades específicas (LIVSHITS; LAM, 2005).
DAST é representado por varredores e proxies: Nikto executa testes de diretórios e assinaturas conhecidas (NIKTO, 2007), Burp Suite e Paros Proxy suportam interceptação, fuzzing e repetição de requisições (PORTSWIGGER, 2007; PAROS, 2006), e o OWASP WebScarab possibilita testes manuais e semiautomatizados (OWASP, 2007b). Para varredura de rede, Nmap é padrão de facto (FYODOR, 1997). Nessus oferece varredura de vulnerabilidades em serviços e sistemas (NESSUS, 2008). Em testes de exploração, Metasploit Framework 3.0, em Ruby, ganhou maturidade por volta de 2007 (HARPER et al., 2007).
No plano operacional, IDS como Snort e Bro foram amplamente empregados, com bases de regras para vetores comuns, inclusive assinaturas de SQL injection e exploração de CGI (ROESCH, 1999; PAXSON, 1999). WAFs, como ModSecurity, permitiram controles de camada 7, complementando validações no servidor de aplicação (RISTIC, 2005). Quanto a criptografia, AES (FIPS 197) e RSA, com HMAC para integridade, sustentaram protocolos como TLS 1.0 (RFC 2246) em uso corrente até 2008 (NIST, 2001; RIVEST; SHAMIR; ADLEMAN, 1978; RFC 2104, 1997; RFC 2246, 1999).
Finalmente, para mensuração de risco, o CVSS v2, publicado em 2007 pelo FIRST, estabelece base score, temporal e environmental metrics, fornecendo base para priorização (FIRST, 2007). CWE e CAPEC, lançados entre 2007 e 2008, oferecem taxonomias de fraquezas e padrões de ataque úteis para mapeamento sistemático (MITRE, 2007; MITRE, 2008).
- Modelo de Ameaças e Formalização do Problema
Assumimos um adversário externo com capacidade realista em 2008 de:
- Varredura de rede e serviço: Nmap para enumeração de portas e banners (FYODOR, 1997).
- Varredura de vulnerabilidades de aplicação: Nikto para assinaturas conhecidas (NIKTO, 2007).
- Exploração de aplicações web: proxies e ferramentas como Burp Suite, Paros e OWASP WebScarab para manipulação de requisições, fuzzing e análise de respostas (PORTSWIGGER, 2007; PAROS, 2006; OWASP, 2007b).
- Ataques automatizados de injeção SQL: sqlmap (iniciado em 2006) ou scripts manuais com dorks e validações (SQLMAP, 2007).
- Uso de frameworks de exploração: Metasploit para serviços não web (HARPER et al., 2007).
O modelo de ameaças adota STRIDE aplicado aos componentes da arquitetura: cliente (navegador), servidor web (Apache 2.2), contêiner Java (Tomcat 6), camada de aplicação (Java EE 5), banco de dados (MySQL 5), integrações SOAP e armazenamento de arquivos. Utilizamos árvores de ataque para detalhar objetivos como “exfiltrar dados de clientes” e “obter execução remota via injeção de comandos”, refinando por pré-condições e contramedidas (SCHNEIER, 1999).
Formalizamos a superfície de ataque como:
$$ S = f(A, D, C, I) = \alpha |A| + \beta |D_v| + \gamma |C_i| + \delta |I_e| $$
onde $|A|$ é o número de endpoints e operações expostas (incluindo SOAP actions), $|D_v|$ é o número de dependências com CVE conhecido relevante, $|C_i|$ é o número de configurações inseguras (por exemplo, diretórios listáveis, métodos HTTP indevidamente permitidos, parâmetros de logging verbosos), e $|I_e|$ representa interações externas frágeis (por exemplo, integrações SOAP sem validação de esquema estrita). Os coeficientes $\alpha, \beta, \gamma, \delta$ representam pesos determinados por análise de sensibilidade e calibrados por histórico de incidentes (HOWARD; LIPNER, 2006; OWASP, 2008a).
Definimos o risco residual agregado $R_r$ após mitigação como:
$$ R_r = \sum_{i=1}^{n} P_i \times I_i \times E_i $$
com $P_i$ sendo a probabilidade de exploração do item $i$, $I_i$ o impacto (financeiro/operacional) e $E_i$ a exposição temporal até correção. Em 2008, aproximamos $P_i$ pelo componente Base do CVSS v2 normalizado, $I_i$ por uma escala de valoração de ativos (por exemplo, 1–5) e $E_i$ por janelas de exposição (em dias) (FIRST, 2007). Opcionalmente, integramos fatores temporais do CVSS (exploitability, remediation level, report confidence) para ajustar $P_i$.
A priorização operacional segue:
$$ Priority(i) = CVSS_{v2}(i) \times V_{ativo}(i) \times T_{exposição}(i) $$
suportando filas de correção com base em severidade técnica, criticidade do ativo e tempo de exposição.
- Metodologia Proposta
A metodologia organiza-se em cinco camadas acopladas ao SDLC, com ênfase em práticas viáveis em 2008.
4.1 Modelagem de ameaças
- Aplicamos STRIDE por componente, com diagramas de fluxo de dados (DFDs) para identificar trust boundaries, processos, armazenamentos e fluxos (SWIDERSKI; SNYDER, 2004).
- Construímos árvores de ataque por objetivo de alto nível (SCHNEIER, 1999).
- Mapeamos saídas para CWE e CAPEC a fim de padronizar fraquezas e padrões de ataque (MITRE, 2007; MITRE, 2008).
4.2 Integração de SAST
- Para Java: FindBugs 1.3.x e PMD 4.x, com regras acrescidas para validação de entrada, uso indevido de criptografia e injeção (HOVEMEYER; PUGH, 2004; PMD, 2008).
- Para C/C++ (módulos nativos eventualmente acoplados): Splint, Flawfinder (LAROCHELLE; EVANS, 2001; WHEELER, 2001).
- Para scripts e páginas dinâmicas: RATS, e Pixy para PHP quando aplicável (JOVANOVIC; KRUEGEL; KIRDA, 2006; RED HAT, 2002).
- Integração com Hudson/CruiseControl e Ant/Maven em builds noturnos; relatórios publicados em servidor interno.
4.3 Gestão de dependências e verificações de configuração
- Inventário de bibliotecas (JARs e libs nativas) com versão e fornecedor.
- Consulta periódica ao NVD/CVE para mapeamento de vulnerabilidades relevantes; quando possível, verificação de checksums e changelogs (NVD, 2008; CVE, 2008).
- Checklists de configuração de Apache/Tomcat/MySQL (por exemplo, desativar listagem de diretórios, restringir métodos HTTP, endurecimento de connectors).
4.4 DAST e testes de penetração controlados
- Varredura automatizada com Nikto para descobertas iniciais; crawling e fuzzing com Burp Suite/Paros/WebScarab (NIKTO, 2007; PORTSWIGGER, 2007; PAROS, 2006; OWASP, 2007b).
- Testes manuais guiados por OWASP Testing Guide v3 (OWASP, 2008b).
- Varreduras de rede/serviço com Nmap e, quando cabível, Nessus para serviços periféricos (FYODOR, 1997; NESSUS, 2008).
4.5 Controles em produção e telemetria
- Regras ModSecurity 2.x para mitigar classes de ataques comuns (RISTIC, 2005).
- IDS Snort com regras específicas para SQLi/XSS e anomalias HTTP; Bro para análise comportamental quando aplicável (ROESCH, 1999; PAXSON, 1999).
- Correlação básica de logs de Apache/Tomcat/MySQL, com alertas por syslog e scripts, e integração com SIEM de época quando disponível (por exemplo, ArcSight) para priorização por CVSS (ARCSIGHT, 2007).
- Implementação
5.1 Ambiente
- Plataforma: Java EE 5; Servidor de aplicação: Apache Tomcat 6.0.14; Servidor web: Apache HTTP Server 2.2; Banco de dados: MySQL 5.0; Sistema Operacional: Linux 2.6 com iptables.
- Integração contínua: Hudson 1.2 e CruiseControl 2.7; Build: Ant 1.7 e Maven 2.0.9; Repositório: Subversion 1.4.
5.2 Integração de SAST
- FindBugs e PMD foram invocados via Ant tasks no build noturno. Definimos gates: build falha se $High_{FindBugs} > \theta_1$ ou se $Rules_{PMD, security} > \theta_2$, com $\theta_1=10$ e $\theta_2=20$ na primeira iteração.
- Para módulos nativos, Splint e Flawfinder rodam semanalmente; RATS examina scripts auxiliares.
Exemplo de configuração Ant:
<target name="analyze">
<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpath="lib/pmd-4.2.jar"/>
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpath="lib/findbugs-ant.jar"/>
<pmd rulesetfiles="security-ruleset.xml" failonruleviolation="true">
<formatter type="xml" toFile="reports/pmd.xml"/>
<fileset dir="src/main/java"/>
</pmd>
<findbugs home="lib/findbugs" effort="max" threshold="High">
<auxClasspath file="lib/app-deps.jar"/>
<sourcePath path="src/main/java"/>
<class location="target/classes"/>
<output file="reports/findbugs.xml" format="xml"/>
</findbugs>
</target>
5.3 DAST e varreduras
- Nikto roda em perfil semanal para o host de homologação:
nikto -host https://staging.exemplo.com -port 443 -ssl -Display V -output reports/nikto_staging.html
- Burp Proxy interativo com Spider e Intruder para fuzzing de parâmetros críticos. WebScarab utilizado para manipulação de SOAP envelopes e replay.
- Nmap para descoberta de exposição indevida de serviços:
nmap -sV -O -p 1-1024,8080,8443 staging.exemplo.com
5.4 Controles operacionais
- Snort configurado para monitorar VLAN do servidor web, com regra simplificada para padrão de injeção SQL:
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-APP SQL injection attempt"; flow:to_server,established; content:"select"; nocase; http_uri; pcre:"/(\%27)|(\')|(\-\-)|(\%23)|()/U"; classtype:web-application-attack; sid:1000001; rev:3;)
- ModSecurity com regra de bloqueio de caracteres típicos de injeção:
SecRuleEngine On
SecRequestBodyAccess On
SecRule REQUEST_URI|ARGS "(?:')|(?:--)|(%27)|(%2D%2D)" "id:300001,phase:2,deny,status:403,msg:'Possível tentativa de SQLi'"
- iptables restringe tráfego entrante aos ports 80/443, com saída controlada para 53/123/443 conforme necessidade.
5.5 Gestão de dependências
- Inventário de bibliotecas em planilha versionada. Consulta semanal ao NVD filtrada por fornecedor/produto/versão. Para bibliotecas Java sem CVE explícito, triagem por changelog do fornecedor e por listas de discussão.
- Avaliação Experimental
6.1 Desenho experimental
Selecionamos uma aplicação corporativa Java EE 5, com 120.842 LOC (contagem SLOCCount), 37 módulos, 18 integrações SOAP, e 23 bibliotecas externas. O baseline incluiu:
- SAST: FindBugs 1.3.7, PMD 4.2, RATS 2.3 (scripts).
- DAST: Nikto 2.03, Burp Suite 1.2, OWASP WebScarab 2007-11.
- Operação: ModSecurity 2.1.1, Snort 2.8.2.
Executamos três ciclos mensais de análise–correção–verificação. Em cada ciclo, priorizamos findings por $Priority(i)$ e acompanhamos métricas: densidade de vulnerabilidades (por KLOC), cobertura de crawling (percentual de URLs e ações exercitadas), falsos positivos (FP), MTTR, e número de regressões. Os testes de penetração foram conduzidos com base no OWASP Testing Guide v3 (OWASP, 2008b). Custos relativos de correção por fase foram referenciados a Boehm e Basili (2001).
6.2 Resultados
- Vulnerabilidades totais detectadas (unicidade por CWE) no baseline: 158 (78 SAST, 80 DAST).
- Classificação por severidade CVSS v2: 48 altas (Base ≥ 7.0), 69 médias, 41 baixas.
Tabela 1 — Resumo de achados e evolução
| Métrica | Ciclo 0 (baseline) | Ciclo 1 | Ciclo 2 | Ciclo 3 |
|---|---|---|---|---|
| Vulnerabilidades únicas | 158 | 121 | 102 | 93 |
| Altas (CVSS ≥ 7.0) | 48 | 36 | 29 | 25 |
| Densidade (por KLOC) | 1,31 | 1,00 | 0,84 | 0,77 |
| Cobertura DAST (URLs) | 52% | 63% | 72% | 71% |
| Falsos positivos SAST | 24% | 17% | 14% | 12% |
| MTTR (dias) | 27 | 22 | 16 | 14 |
A redução agregada após três ciclos foi de 41% nas vulnerabilidades únicas e de 48% nas altas. A densidade decresceu de 1,31 para 0,77 por KLOC. A cobertura de crawling subiu de 52% para 71% no segundo ciclo e estabilizou, devido a fluxos autenticados complexos, mitigados por gravação de sessões no WebScarab e scripts de login no Burp.
No plano de risco, calculamos $R_r$ antes e depois dos ciclos, normalizando $I_i$ em [1,5] e $E_i$ em dias. Observou-se queda de 44% no somatório ponderado, com maior contribuição de correções em injeções SQL (CWE-89) e autenticação/sessão (CWE-287/CWE-384).
6.3 Validação e ameaças à validade
- Medição de FP: amostra estratificada de 60 achados SAST por ciclo revisados manualmente por dois analistas, com concordância de 0,86 (Cohen’s kappa).
- Variabilidade DAST: controlada por seeds equivalentes de fuzzing e configuração estável do ambiente.
- Ausência de IAST: compensada por instrumentação de logs e WAF em modo “detectar” para coleta.
6.4 Custos e esforço
Ajustes de build e integração consumiram 4 dias-homem iniciais. SAST diário demandou cerca de 25 minutos por execução; DAST semanal, 6–8 horas com acompanhamento manual. O custo de correção reduziu-se em linha com a literatura ao deslocar detecções para fases iniciais (BOEHM; BASILI, 2001).
- Estudo de Caso: Eliminação de Injeção SQL em Autenticação
7.1 Cenário
Formulário de login com backend Java utilizava concatenação direta em consulta JDBC:
String q = "SELECT id, role FROM users WHERE user='" + user + "' AND pass='" + pass + "'";
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(q);
Exploração manual e com apoio do Burp/Intruder confirmou autenticação indevida com payloads como:
user=admin' OR '1'='1&pass=qualquer
e variantes de comentários SQL. O Nikto indicou parâmetros vulneráveis e o DAST manual confirmou comportamento.
7.2 Mitigação
Troca por consultas preparadas com parâmetros, com hashing salgado do segredo (HMAC-SHA1 sobre senha + salt armazenado separadamente) e política de falha genérica. Exemplo:
MessageDigest md = MessageDigest.getInstance("SHA-1");
byte[] salted = (salt + pass).getBytes("UTF-8");
byte[] digest = md.digest(salted);
PreparedStatement ps = conn.prepareStatement(
"SELECT id, role FROM users WHERE user=? AND pass_hash=?");
ps.setString(1, user);
ps.setBytes(2, digest);
ResultSet rs = ps.executeQuery();
Complementamos com validação de entrada server-side, logging de tentativas anômalas e regra focada no ModSecurity para bloquear padrões repetidos.
7.3 Verificação
- SAST: redução de alertas de construção de SQL dinâmica.
- DAST: scripts de regressão com Burp confirmeram ausência de bypass.
- Snort/ModSecurity: nenhum bloqueio legítimo (false positive) observado após ajuste da regra.
7.4 Observações
A mudança para consultas preparadas reduziu $P_i$ (exploitability) de alto para baixo em CVSS v2, e a eliminação de senhas em claro reduziu impacto potencial ($I_i$). O tempo de exposição ($E_i$) foi reduzido por hotfix controlado, enfatizando a importância de janelas de correção curtas (FIRST, 2007; OWASP, 2008b).
- Discussão
Os resultados indicam que a integração de SAST e DAST, guiada por modelagem de ameaças, produz ganhos mensuráveis na redução de vulnerabilidades e do risco residual. O SAST captura rapidamente classes de defeitos recorrentes com custo marginal baixo, mas requer tuning de regras e supressões justificadas para controle de falsos positivos (HOVEMEYER; PUGH, 2004). DAST, por sua vez, identifica falhas efetivamente exploráveis e problemas de configuração, exigindo conhecimento especializado e atenção à cobertura do crawling, sobretudo em fluxos autenticados e com tokens antifraude (OWASP, 2008b; STUTTARD; PINTO, 2007).
A combinação de controles de produção (WAF/IDS) com o SDLC seguro forma uma defesa em profundidade. WAFs mitigam riscos remanescentes e dão tempo à correção, desde que com regras bem calibradas para evitar bloqueios indevidos (RISTIC, 2005). IDS oferecem telemetria e evidência forense, integráveis a sistemas de correlação incipientes da época, para priorização e resposta (ROESCH, 1999; ARCSIGHT, 2007). Criptografia adequada (AES, HMAC) e protocolos como TLS 1.0 permanecem essenciais para confidencialidade e integridade de dados em trânsito (NIST, 2001; RFC 2104, 1997; RFC 2246, 1999).
Limitações residem na ausência, em 2008, de instrumentação de tempo de execução amplamente disponível para correlacionar fluxos de dados intraprocessos com tráfego externo. Para atenuar, empregamos logs enriquecidos, WAF em modo detecção e revisões manuais de path críticos. Outra limitação é a gestão de vulnerabilidades em bibliotecas: a inexistência, à época, de ferramentas consolidadas de análise de composição exigiu processos manuais cuidadosos de inventário e acompanhamento do NVD (NVD, 2008).
Finalmente, ressaltamos que a priorização baseada em $Priority(i)$, ancorada no CVSS v2 e criticidade de ativos, foi decisiva para alinhar esforços de correção ao risco real, evitando foco excessivo em achados de baixo impacto (FIRST, 2007).
- Conclusão
Demonstramos que, no contexto tecnológico de 2008, uma abordagem de engenharia de segurança de aplicações orientada a ameaças — integrando modelagem (STRIDE/árvores de ataque), SAST/DAST, SDLC seguro e controles operacionais (WAF/IDS) — reduz, de modo mensurável, a superfície de ataque e o risco residual. A formalização proposta para $S$ e $R_r$, associada a métricas CVSS v2 e a gates de qualidade em integração contínua (Hudson/CruiseControl), permitiu ganhos substanciais na densidade de vulnerabilidades, MTTR e cobertura de testes dinâmicos. Um estudo de caso com injeção SQL ilustrou a transição de práticas inseguras para padrões corretos (consultas preparadas), com bloqueios táticos via ModSecurity e observabilidade por IDS.
Como continuidade natural — ainda no âmbito de 2008 — destacamos a ampliação das regras SAST específicas por linguagem e framework (por exemplo, Struts/JSF), a expansão da cobertura de testes dinâmicos autenticados, a maturação de processos de inventário de dependências atrelados ao NVD, e o fortalecimento da telemetria operacional para retroalimentar a priorização de risco. A adoção disciplinada desses elementos, sem recorrer a conceitos ou ferramentas inexistentes à época, oferece caminho sólido para sustentabilidade da segurança de aplicações em ambientes corporativos.
Referências
ARCSIGHT. ArcSight ESM: Enterprise Security Manager. Sunnyvale: ArcSight, 2007. Disponível em: https://community.microfocus.com/cyberres/esm. Acesso em: 10 jan. 2008.
BARTH, Adam; JACKSON, Collin; MITCHELL, John C. Robust defenses for cross-site request forgery. In: Proceedings of the 15th ACM Conference on Computer and Communications Security (CCS). New York: ACM, 2008. Disponível em: https://cs.stanford.edu/~jcm/papers/csrf.pdf. Acesso em: 10 jan. 2008.
BOEHM, Barry; BASILI, Victor R. Software defect reduction top 10 list. Computer, v. 34, n. 1, p. 135–137, 2001. Disponível em: https://ieeexplore.ieee.org/document/962984. Acesso em: 10 jan. 2008.
CERT/CC. CERT Advisory CA-2003-04 MS-SQL Server Worm (SQL Slammer). Pittsburgh: CERT Coordination Center, 2003a. Disponível em: https://www.cert.org/advisories/CA-2003-04.html. Acesso em: 10 jan. 2008.
CERT/CC. CERT Advisory CA-2003-20 W32/Blaster Worm. Pittsburgh: CERT Coordination Center, 2003b. Disponível em: https://www.cert.org/advisories/CA-2003-20.html. Acesso em: 10 jan. 2008.
CERT/CC. Malicious HTML Tags Embedded in Client Web Requests (CA-2000-02). Pittsburgh: CERT Coordination Center, 2000. Disponível em: https://www.cert.org/advisories/CA-2000-02.html. Acesso em: 10 jan. 2008.
CHECKSTYLE. Checkstyle 5.0. San Francisco: Checkstyle Project, 2008. Disponível em: https://checkstyle.sourceforge.net. Acesso em: 10 jan. 2008.
CVE. Common Vulnerabilities and Exposures (CVE). Needham: The MITRE Corporation, 2008. Disponível em: https://cve.mitre.org. Acesso em: 10 jan. 2008.
FIRST. Common Vulnerability Scoring System v2: Complete Guide. Cary: FIRST, 2007. Disponível em: https://www.first.org/cvss/v2/guide. Acesso em: 10 jan. 2008.
FYODOR. The art of port scanning. Phrack Magazine, v. 7, n. 51, 1997. Disponível em: http://www.phrack.org/issues/51/11.html. Acesso em: 10 jan. 2008.
HALFOND, William G. J.; VIEGAS, Jeremy; ORSO, Alessandro. A classification of SQL-injection attacks and countermeasures. IEEE Security & Privacy, v. 3, n. 6, p. 13–21, 2006. Disponível em: https://doi.org/10.1109/MSP.2006.141. Acesso em: 10 jan. 2008.
HARPER, Allen et al. Metasploit toolkit for penetration testing, exploit development, and vulnerability research. Burlington: Syngress, 2007. Disponível em: https://www.elsevier.com/books/metasploit-toolkit/harper/978-1-59749-074-0. Acesso em: 10 jan. 2008.
HOWARD, Michael; LE BLANC, David. Writing secure code. 2. ed. Redmond: Microsoft Press, 2002. Disponível em: https://docs.microsoft.com/en-us/archive/msdn-magazine/2002/november/writing-secure-code. Acesso em: 10 jan. 2008.
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: 10 jan. 2008.
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: 10 jan. 2008.
JOVANOVIC, Nenad; KRUEGEL, Christopher; KIRDA, Engin. Pixy: A static analysis tool for detecting web application vulnerabilities. In: 2006 IEEE Symposium on Security and Privacy. Los Alamitos: IEEE, 2006. Disponível em: https://ieeexplore.ieee.org/document/1624015. Acesso em: 10 jan. 2008.
KLEIN, Amit. DOM Based Cross Site Scripting or XSS of the Third Kind. Whitepaper, 2005. Disponível em: https://www.acunetix.com/blog/articles/dom-xss/. Acesso em: 10 jan. 2008.
LAROCHELLE, David; EVANS, David. Statically detecting likely buffer overflow vulnerabilities. In: 10th USENIX Security Symposium. Berkeley: USENIX, 2001. Disponível em: https://www.usenix.org/legacy/publications/library/proceedings/sec01/full_papers/larochelle/larochelle.pdf. Acesso em: 10 jan. 2008.
LIVSHITS, Benjamin; LAM, Monica. Finding security vulnerabilities in Java applications with static analysis. In: 14th USENIX Security Symposium. Berkeley: USENIX, 2005. Disponível em: https://www.usenix.org/legacy/publications/library/proceedings/sec05/tech/full_papers/livshits/livshits.pdf. Acesso em: 10 jan. 2008.
MENDEZES, Alfred J.; VAN OORSCHOT, Paul C.; VANSTONE, Scott A. Handbook of applied cryptography. Boca Raton: CRC Press, 1996. Disponível em: https://cacr.uwaterloo.ca/hac/. Acesso em: 10 jan. 2008.
MITRE. Common Weakness Enumeration (CWE). Bedford: The MITRE Corporation, 2007. Disponível em: https://cwe.mitre.org. Acesso em: 10 jan. 2008.
MITRE. Common Attack Pattern Enumeration and Classification (CAPEC). Bedford: The MITRE Corporation, 2008. Disponível em: https://capec.mitre.org. Acesso em: 10 jan. 2008.
MOORE, David et al. Code-Red: a case study on the spread and victims of an Internet worm. In: 2nd ACM SIGCOMM Workshop on Internet Measurement. New York: ACM, 2002. Disponível em: https://conferences.sigcomm.org/imw/2002/program.html. Acesso em: 10 jan. 2008.
NESSUS. Nessus Vulnerability Scanner. Columbia: Tenable Network Security, 2008. Disponível em: https://www.tenable.com/products/nessus. Acesso em: 10 jan. 2008.
NIKTO. Nikto2 Web Server Scanner. 2007. Disponível em: https://cirt.net/Nikto2. Acesso em: 10 jan. 2008.
NIST. FIPS PUB 197: Advanced Encryption Standard (AES). Washington: NIST, 2001. Disponível em: https://csrc.nist.gov/publications/detail/fips/197/final. Acesso em: 10 jan. 2008.
NVD. National Vulnerability Database. Gaithersburg: NIST, 2008. Disponível em: https://nvd.nist.gov. Acesso em: 10 jan. 2008.
OWASP. OWASP Top Ten 2007. 2007. Disponível em: https://owasp.org/www-project-top-ten/2007. Acesso em: 10 jan. 2008.
OWASP. CLASP: Comprehensive, Lightweight Application Security Process. 2008a. Disponível em: https://owasp.org/www-project-clasp/. Acesso em: 10 jan. 2008.
OWASP. Testing Guide v3. 2008b. Disponível em: https://owasp.org/www-project-web-security-testing-guide/v3.html. Acesso em: 10 jan. 2008.
OWASP. WebScarab Project. 2007b. Disponível em: https://owasp.org/www-project-webscarab/. Acesso em: 10 jan. 2008.
PAROS. Paros Proxy 3.2. 2006. Disponível em: http://www.parosproxy.org. Acesso em: 10 jan. 2008.
PAXSON, Vern. Bro: A system for detecting network intruders in real-time. Computer Networks, v. 31, n. 23-24, p. 2435–2463, 1999. Disponível em: https://www.icir.org/vern/papers/bro-CN99.pdf. Acesso em: 10 jan. 2008.
PMD. PMD Source Code Analyzer 4.2. 2008. Disponível em: https://pmd.github.io. Acesso em: 10 jan. 2008.
PORTSWIGGER. Burp Suite v1.2. 2007. Disponível em: https://portswigger.net/burp/releases. Acesso em: 10 jan. 2008.
RFC 2104. HMAC: Keyed-Hashing for Message Authentication. 1997. Disponível em: https://www.rfc-editor.org/rfc/rfc2104. Acesso em: 10 jan. 2008.
RFC 2246. The TLS Protocol Version 1.0. 1999. Disponível em: https://www.rfc-editor.org/rfc/rfc2246. Acesso em: 10 jan. 2008.
RISTIC, Ivan. Apache security. Sebastopol: O’Reilly, 2005. Disponível em: https://www.oreilly.com/library/view/apache-security/0596007248/. Acesso em: 10 jan. 2008.
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://people.csail.mit.edu/rivest/Rsapaper.pdf. Acesso em: 10 jan. 2008.
ROESCH, Martin. Snort – Lightweight intrusion detection for networks. In: 13th USENIX Systems Administration Conference (LISA). Berkeley: USENIX, 1999. Disponível em: https://www.snort.org. Acesso em: 10 jan. 2008.
SCHNEIER, Bruce. Attack trees. Dr. Dobb’s Journal, 1999. Disponível em: https://www.schneier.com/academic/archives/1999/12/attack_trees.html. Acesso em: 10 jan. 2008.
SQLMAP. sqlmap project. 2007. Disponível em: http://sqlmap.org. Acesso em: 10 jan. 2008.
STUTTARD, Dafydd; PINTO, Marcus. The Web Application Hacker’s Handbook. Indianapolis: Wiley, 2007. Disponível em: https://www.wiley.com/en-us/The+Web+Application+Hacker's+Handbook-p-9780470170779. Acesso em: 10 jan. 2008.
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: 10 jan. 2008.
WHEELER, David A. Flawfinder 1.27. 2001. Disponível em: https://www.dwheeler.com/flawfinder/. Acesso em: 10 jan. 2008.