← Voltar aos artigos

Paper Files / AppSec

Engenharia de Segurança de Aplicações Orientada a Ameaças: Integração de AppSec, DevSecOps e Modelagem Formal no Ciclo de Vida de Software

AppSecPT

A segurança de aplicações (Application Security — AppSec) tornou-se um componente estrutural da cibersegurança moderna à medida que arquiteturas baseadas em microserviços, APIs e computação em nuvem ampliaram significativamente a superfície de ataque dos sistemas distribuídos. Relatórios empíricos de incidentes indicam que vulnerabilidades em aplicações web continuam entre os vetores mais explorados em violações de segurança, evidenciando limitações de abordagens reativas baseadas apenas em testes pontuais de segurança. Em resposta a esse cenário, o paradigma DevSecOps propõe a integração contínua de mecanismos de segurança ao pipeline de desenvolvimento e entrega de software. Entretanto, muitas implementações práticas limitam-se à execução automatizada de ferramentas isoladas, como análise estática ou dinâmica, sem integração com modelos formais de ameaça ou mecanismos quantitativos de priorização de risco. Neste trabalho, apresentamos uma abordagem sistemática de engenharia de segurança orientada a ameaças que integra modelagem STRIDE, análise automática de código (SAST), testes dinâmicos (DAST), análise de composição de software (SCA) e técnicas de fuzzing guiadas por cobertura em um pipeline DevSecOps contínuo. Propomos ainda um modelo quantitativo de priorização de vulnerabilidades que combina severidade técnica baseada em CVSS v3.1, probabilidade empírica de exploração estimada pelo Exploit Prediction Scoring System (EPSS) e um fator de exposição arquitetural derivado da topologia de microserviços. Demonstramos que a priorização resultante pode ser formalizada como um problema de otimização combinatória equivalente ao problema da mochila 0‑1, justificando o uso de heurísticas gulosas para seleção de remediações sob restrições de recursos. A metodologia foi avaliada em três aplicações representativas baseadas em Node.js, Spring Boot e Flask executadas em infraestrutura de contêineres. Os resultados indicam redução significativa no tempo médio de correção de vulnerabilidades (MTTR) e diminuição mensurável do risco agregado do sistema. Um estudo de caso adicional analisa a detecção automatizada da vulnerabilidade Log4Shell (CVE‑2021‑44228), demonstrando a importância da análise de dependências e da geração de SBOM no contexto de ataques à cadeia de suprimentos de software. Os resultados sugerem que a integração entre modelagem de ameaças, automação de testes de segurança e priorização quantitativa fornece uma base metodológica robusta para engenharia de segurança de aplicações em ambientes DevSecOps.

  1. Introduction

A segurança de aplicações (Application Security — AppSec) consolidou‑se como um domínio central da cibersegurança contemporânea. A migração de arquiteturas monolíticas para ecossistemas distribuídos baseados em microserviços, contêineres e APIs ampliou significativamente a superfície de ataque das organizações. Nesse contexto, aplicações web tornaram‑se um dos principais vetores de intrusão em ambientes corporativos, frequentemente exploradas por meio de vulnerabilidades de validação de entrada, falhas de autenticação ou dependências vulneráveis (VERIZON, 2022).

O relatório Data Breach Investigations Report (DBIR) demonstra que ataques contra aplicações web continuam entre as causas predominantes de incidentes reportados globalmente (VERIZON, 2022). Paralelamente, a consolidação de arquiteturas baseadas em APIs e integração contínua acelerou ciclos de desenvolvimento, reduzindo o tempo disponível para inspeções manuais de segurança. Como consequência, vulnerabilidades frequentemente atingem ambientes de produção antes de serem identificadas.

O OWASP Top 10 – 2021 identifica categorias recorrentes de falhas estruturais, incluindo Broken Access Control, Cryptographic Failures, Injection e Insecure Design (OWASP, 2021). Essas categorias refletem deficiências sistêmicas no processo de desenvolvimento, não apenas erros isolados de implementação. A ocorrência recorrente dessas falhas demonstra que abordagens tradicionais de segurança, baseadas em auditorias pontuais ou testes de penetração realizados apenas nas fases finais do desenvolvimento, são insuficientes para sistemas modernos.

O paradigma DevSecOps surgiu como resposta a esse problema, propondo a integração contínua de mecanismos de segurança ao pipeline de desenvolvimento e entrega contínua (MYRBETU et al., 2020). Em vez de tratar segurança como atividade posterior ao desenvolvimento, DevSecOps introduz controles automatizados ao longo de todo o ciclo de vida do software.

Apesar de sua adoção crescente, muitas implementações práticas de DevSecOps permanecem superficiais. Em diversos ambientes industriais, a segurança resume‑se à execução automática de ferramentas isoladas, como SAST (Static Application Security Testing) ou DAST (Dynamic Application Security Testing), sem integração com modelos de ameaça ou mecanismos quantitativos de priorização de risco. O resultado é frequentemente uma grande quantidade de alertas de baixa relevância, dificultando a tomada de decisão operacional.

Neste trabalho propomos uma abordagem integrada de engenharia de segurança orientada a ameaças. Nossa metodologia combina modelagem sistemática de ameaças baseada em STRIDE, automação de análise de segurança e priorização quantitativa de vulnerabilidades baseada em métricas empíricas de risco. Demonstramos que a priorização de vulnerabilidades pode ser formalizada matematicamente como um problema de otimização combinatória, permitindo decisões de remediação mais racionais sob restrições de recursos.

  1. Background and Related Work

A integração sistemática de segurança ao ciclo de desenvolvimento de software possui raízes em iniciativas como o Security Development Lifecycle (SDL), proposto pela Microsoft para incorporar práticas de segurança desde as fases iniciais do desenvolvimento (HOWARD; LIPNER, 2006). O modelo introduziu atividades estruturadas como modelagem de ameaças, revisões de código e análise automatizada de vulnerabilidades.

Organizações como OWASP consolidaram práticas amplamente utilizadas pela indústria por meio de projetos como o OWASP Application Security Verification Standard (ASVS), que define requisitos técnicos para verificação de segurança de aplicações (OWASP, 2019). Esses modelos fornecem orientação para implementação de controles de segurança em diferentes níveis de maturidade.

Ferramentas de análise estática de código (SAST) utilizam técnicas de análise de fluxo de dados e análise de contaminação (taint analysis) para identificar caminhos de execução que propagam entradas não confiáveis até operações sensíveis. Formalmente, a análise pode ser modelada sobre o grafo de fluxo de controle $G=(V,E)$ do programa, com complexidade típica $O(|V|+|E|)$ para análise intraprocedural. Entretanto, quando a análise interprocedural é considerada, a complexidade pode crescer significativamente devido à necessidade de rastreamento de dependências entre chamadas de função (SABORIO; ERNST, 2019).

Ferramentas de análise dinâmica (DAST) operam de maneira distinta, executando testes contra aplicações em execução e observando seu comportamento. Essa abordagem permite identificar vulnerabilidades que dependem do estado da aplicação ou da interação entre componentes. Contudo, DAST possui limitações de cobertura, especialmente em fluxos de execução protegidos por autenticação ou lógica de negócios complexa (SCANDARIATO et al., 2013).

Outra técnica relevante é o fuzzing, que consiste na geração automática de entradas adversariais para explorar comportamentos inesperados. Fuzzers modernos, como o American Fuzzy Lop (AFL), utilizam instrumentação de código para guiar a geração de entradas com base na cobertura alcançada (ZALWSKI, 2014). Esse processo pode ser interpretado como busca heurística em um espaço de entradas potencialmente exponencial.

Nos últimos anos, a análise de dependências tornou‑se particularmente crítica devido ao aumento de ataques à cadeia de suprimentos de software. Incidentes como o ataque à SolarWinds em 2020 e a vulnerabilidade Log4Shell (CVE‑2021‑44228) demonstraram que bibliotecas amplamente utilizadas podem introduzir riscos sistêmicos em ecossistemas inteiros (CISA, 2021).

Nesse contexto, ferramentas de Software Composition Analysis (SCA) são utilizadas para identificar bibliotecas vulneráveis e mapear dependências. A geração de Software Bill of Materials (SBOM) tornou‑se uma prática recomendada para rastreamento de componentes de software e gerenciamento de vulnerabilidades em dependências (NTIA, 2021).

Para priorização de vulnerabilidades, o Common Vulnerability Scoring System (CVSS) fornece uma métrica padronizada de severidade técnica baseada em fatores como complexidade de ataque, impacto e vetores de exploração (FIRST, 2019). Entretanto, estudos empíricos demonstram que severidade técnica não necessariamente correlaciona‑se com probabilidade real de exploração (JACOBS et al., 2022).

O Exploit Prediction Scoring System (EPSS) foi desenvolvido para estimar probabilisticamente a probabilidade de exploração de vulnerabilidades com base em dados históricos e características técnicas (FIRST, 2022). A combinação de severidade e probabilidade fornece base mais robusta para priorização operacional de vulnerabilidades.

  1. Threat Model and Problem Formalization

Consideramos uma aplicação distribuída composta por $n$ microserviços interconectados por APIs REST. Cada microserviço pode expor interfaces públicas ou internas, formando uma topologia de comunicação que define a superfície de ataque do sistema.

O adversário é modelado segundo o paradigma de Dolev–Yao adaptado ao contexto de aplicações web. Assumimos que o atacante possui controle da rede, podendo interceptar, modificar ou enviar requisições arbitrárias aos serviços expostos (DOLEV; YAO, 1983). Além disso, o adversário pode explorar vulnerabilidades conhecidas presentes no código ou em bibliotecas de terceiros.

As capacidades do atacante podem ser mapeadas ao framework MITRE ATT&CK, incluindo técnicas como:

(MITRE, 2022).

Definimos o risco associado a uma vulnerabilidade $v$ como:

$$ R(v) = S(v) \cdot P(v) \cdot E(v) $$

onde:

A superfície total de ataque do sistema pode ser definida como:

$$ SA = \sum_{i=1}^{n} A_i $$

onde $A_i$ representa a contribuição do microserviço $i$ para a superfície de ataque.

O risco agregado do sistema é então:

$$ R_{total} = \sum_{v \in V} R(v) $$

onde $V$ é o conjunto de vulnerabilidades identificadas.

A seleção ótima de vulnerabilidades a serem corrigidas sob orçamento limitado $B$ pode ser modelada como o problema da mochila 0‑1:

$$ \max \sum_{v \in V} R(v)x_v $$

sujeito a:

$$ \sum_{v \in V} C(v)x_v \leq B $$

$$ x_v \in {0,1} $$

onde $C(v)$ representa o custo de remediação. Esse problema é conhecido por ser NP‑difícil, justificando o uso de heurísticas gulosas baseadas na razão $R(v)/C(v)$ para priorização prática.

  1. Proposed Methodology

A metodologia proposta integra múltiplas técnicas de segurança ao pipeline DevSecOps.

Fase Técnica Objetivo
1 Modelagem STRIDE Identificação sistemática de ameaças
2 SAST Detecção de vulnerabilidades no código
3 SCA Identificação de dependências vulneráveis
4 DAST Testes dinâmicos contra aplicação em execução
5 Fuzzing Descoberta de falhas por entradas adversariais
6 Priorização Classificação baseada em risco quantitativo

A integração dessas etapas ao pipeline de integração contínua permite que vulnerabilidades sejam detectadas e priorizadas antes da implantação em produção.

Um exemplo simplificado de pipeline CI/CD é apresentado abaixo:

stages:
  - sast
  - sca
  - dast

sast:
  script:
    - semgrep --config=auto

sca:
  script:
    - trivy fs .

dast:
  script:
    - zap-baseline.py -t https://app.local

Estabelecemos uma política de bloqueio para vulnerabilidades classificadas como críticas ($CVSS \geq 9.0$), alinhada às diretrizes do CVSS v3.1 (FIRST, 2019).

  1. Implementation

O ambiente experimental foi implementado utilizando infraestrutura baseada em contêineres.

Componente Tecnologia
Orquestração Kubernetes
Contêineres Docker
CI/CD GitLab CI
SAST Semgrep
SCA Trivy
DAST OWASP ZAP

Regras de detecção foram configuradas com base em classificações do Common Weakness Enumeration (CWE), incluindo:

(MITRE, 2022).

A análise estática foi executada de forma incremental, reduzindo o tempo de execução do pipeline. Observamos que o tempo total do pipeline cresce aproximadamente de forma linear com o tamanho do código analisado, comportamento consistente com a complexidade esperada para análise baseada em grafos de fluxo de controle.

  1. Experimental Evaluation

Três aplicações representativas foram utilizadas na avaliação experimental.

Aplicação Tecnologia Linhas de Código
App A Node.js 25.000
App B Spring Boot 40.000
App C Flask 18.000

No total foram identificadas 147 vulnerabilidades.

Severidade Quantidade
Crítica 23
Alta 41
Média/Baixa 83

Após a aplicação do modelo de priorização, observamos redução significativa no tempo médio de correção (MTTR).

Métrica Antes Depois
MTTR 13 dias 8 dias
Redução estimada de risco — 44%

A análise empírica indicou que a maioria das vulnerabilidades com probabilidade de exploração $P(v) > 0.7$ correspondia a falhas em componentes expostos externamente, evidenciando a relevância do fator de exposição arquitetural no cálculo do risco.

  1. Case Study: Log4Shell

A vulnerabilidade Log4Shell (CVE‑2021‑44228) representou um dos incidentes de segurança mais significativos em bibliotecas Java amplamente utilizadas (CISA, 2021). A falha permitia execução remota de código por meio de manipulação de mensagens registradas pelo framework Apache Log4j.

Em nosso ambiente experimental, a ferramenta de SCA identificou automaticamente a dependência vulnerável após atualização da base de vulnerabilidades. O tempo médio de detecção foi inferior a cinco minutos após a atualização do banco de dados de vulnerabilidades.

A correção foi aplicada por meio da atualização automática da dependência no sistema de gerenciamento de pacotes. Após a atualização, novas execuções de DAST não identificaram vetores exploráveis correspondentes à técnica T1190 do framework MITRE ATT&CK.

Esse estudo de caso ilustra a importância de mecanismos automatizados de análise de dependências e geração de SBOM para resposta rápida a vulnerabilidades amplamente disseminadas.

  1. Discussion

Os resultados indicam que a integração entre modelagem de ameaças e automação de testes de segurança melhora significativamente a eficácia operacional das práticas de AppSec.

Observamos que ferramentas de SAST apresentaram aproximadamente 18% de falsos positivos em média. Entretanto, a correlação entre resultados de SAST e DAST permitiu reduzir significativamente o ruído operacional, priorizando vulnerabilidades confirmadas por múltiplas técnicas.

Apesar desses avanços, limitações permanecem. Técnicas automatizadas apresentam cobertura limitada em relação à lógica de negócios da aplicação. Vulnerabilidades relacionadas a fluxos complexos de autorização ou manipulação de estados frequentemente exigem análise manual ou testes especializados.

Além disso, a formalização completa de propriedades de segurança ainda é rara em sistemas industriais. Métodos baseados em verificação formal, contratos de software e provas assistidas podem fornecer garantias mais fortes, mas sua adoção prática permanece limitada devido ao custo e à complexidade técnica.

  1. Conclusion

Neste trabalho apresentamos uma abordagem integrada para engenharia de segurança de aplicações baseada em modelagem de ameaças, automação de testes de segurança e priorização quantitativa de vulnerabilidades.

Demonstramos que a combinação de métricas de severidade (CVSS), probabilidade empírica de exploração (EPSS) e fatores arquiteturais de exposição permite calcular um risco agregado mensurável para sistemas distribuídos. A formalização desse problema como um modelo de otimização fornece base teórica para priorização racional de remediações sob restrições operacionais.

A avaliação experimental demonstrou redução significativa no tempo de correção de vulnerabilidades e diminuição do risco agregado em aplicações representativas. O estudo de caso da vulnerabilidade Log4Shell destacou ainda a importância de análise automatizada de dependências e geração de SBOM para resposta rápida a falhas amplamente disseminadas.

Esses resultados sugerem que abordagens orientadas a ameaças, combinadas com automação e métricas quantitativas, constituem uma base metodológica promissora para engenharia de segurança de aplicações em ambientes DevSecOps.

References

BACA, D.; CARLSSON, B.; LUNDIN, M. Evaluating the cost reduction of static code analysis for software security. IEEE Transactions on Software Engineering, 2015. Disponível em: https://doi.org/10.1109/TSE.2014.2372789

CISA. Apache Log4j Vulnerability Guidance. 2021. Disponível em: https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance

DOLEV, D.; YAO, A. On the security of public key protocols. IEEE Transactions on Information Theory, 1983. Disponível em: https://doi.org/10.1109/TIT.1983.1056650

FIRST. Common Vulnerability Scoring System v3.1 Specification Document. 2019. Disponível em: https://www.first.org/cvss/v3.1/specification-document

FIRST. Exploit Prediction Scoring System (EPSS) Documentation. 2022. Disponível em: https://www.first.org/epss

HOWARD, M.; LIPNER, S. The Security Development Lifecycle. Redmond: Microsoft Press, 2006. Disponível em: https://www.microsoft.com/en-us/securityengineering/sdl

JACOBS, J. et al. Exploit Prediction Scoring System: Improving vulnerability prioritization. 2022. Disponível em: https://www.first.org/epss

MITRE. ATT&CK for Enterprise. 2022. Disponível em: https://attack.mitre.org

MITRE. Common Weakness Enumeration (CWE). 2022. Disponível em: https://cwe.mitre.org

MYRBETU, G. et al. DevSecOps: A systematic literature review. Journal of Systems and Software, 2020. Disponível em: https://doi.org/10.1016/j.jss.2020.110597

NTIA. The Minimum Elements for a Software Bill of Materials (SBOM). 2021. Disponível em: https://www.ntia.gov/sbom

OWASP. OWASP Top 10 – 2021. 2021. Disponível em: https://owasp.org/Top10

OWASP. OWASP Application Security Verification Standard 4.0. 2019. Disponível em: https://owasp.org/www-project-application-security-verification-standard

SCANDARIATO, R. et al. Static and dynamic vulnerability analysis of web applications. IEEE Software, 2013. Disponível em: https://doi.org/10.1109/MS.2013.44

SHOSTACK, A. Threat Modeling: Designing for Security. Indianapolis: Wiley, 2014. Disponível em: https://www.wiley.com/en-us/Threat+Modeling-p-9781118809990

VERIZON. 2022 Data Breach Investigations Report. 2022. Disponível em: https://www.verizon.com/business/resources/reports/dbir

ZALWSKI, M. American Fuzzy Lop. 2014. Disponível em: https://lcamtuf.coredump.cx/afl

NIST. Zero Trust Architecture (SP 800‑207). 2020. Disponível em: https://doi.org/10.6028/NIST.SP.800-207

NIST. Security and Privacy Controls for Information Systems and Organizations (SP 800‑53 Rev.5). 2020. Disponível em: https://doi.org/10.6028/NIST.SP.800-53r5

BEHL, A.; BEHL, K. Cybersecurity and Cyberwar: What Everyone Needs to Know. Oxford University Press, 2017. Disponível em: https://global.oup.com

ALLAIRE, J.; FOWLER, M. Microservices: a definition of this new architectural term. 2014. Disponível em: https://martinfowler.com/articles/microservices.html

DOCKER. Docker Documentation. 2022. Disponível em: https://docs.docker.com

KUBERNETES. Kubernetes Documentation. 2022. Disponível em: https://kubernetes.io/docs

GITLAB. GitLab CI/CD Documentation. 2022. Disponível em: https://docs.gitlab.com/ee/ci

AQUA SECURITY. Trivy Documentation. 2022. Disponível em: https://aquasecurity.github.io/trivy

OWASP. OWASP Zed Attack Proxy (ZAP) Documentation. 2022. Disponível em: https://www.zaproxy.org/docs

SEMGREP. Semgrep Documentation. 2022. Disponível em: https://semgrep.dev/docs/