← Voltar aos artigos

Paper Files / DevSecOps

DevSecOps antes do termo: Integração sistemática de segurança no ciclo de desenvolvimento e operação de sistemas UNIX em redes TCP/IP (perspectiva operacional de 1990)

DevSecOpsPT

A rápida expansão de redes TCP/IP, estações UNIX interconectadas e serviços distribuídos no final da década de 1980 introduziu uma nova classe de riscos operacionais: vulnerabilidades de software exploráveis remotamente, falhas de configuração em serviços de rede e ausência de integração entre equipes de desenvolvimento e operação. O incidente do worm de Morris em 1988 demonstrou de forma dramática que falhas aparentemente triviais — como validação inadequada de entradas ou configurações inseguras de serviços — podem resultar em propagação automatizada em larga escala. Este artigo apresenta uma abordagem sistemática para incorporar segurança diretamente no ciclo de desenvolvimento e operação de software, conceito que neste trabalho é denominado DevSecOps, ainda que o termo não seja amplamente utilizado na literatura atual. A proposta baseia‑se na integração contínua entre engenharia de software, administração de sistemas e análise de segurança durante todas as fases do ciclo de vida do software. O trabalho formaliza um modelo de ameaças para sistemas UNIX conectados via TCP/IP e discute vetores de ataque predominantes em 1990, incluindo exploração de buffer overflow em programas setuid, abuso de serviços como `sendmail`, autenticação fraca em `rsh`/`rlogin`, e exposição de serviços RPC. Em seguida, propomos uma metodologia operacional que combina revisão de código orientada à segurança, análise estática com ferramentas como `lint`, auditorias automatizadas utilizando o pacote COPS (Computer Oracle and Password System), monitoramento de rede com `tcpdump` e implantação de mecanismos de detecção de intrusão baseados em anomalias inspirados no sistema IDES do SRI International. A implementação experimental foi realizada em um ambiente de laboratório composto por estações SunOS e BSD 4.3 conectadas via Ethernet. Foram avaliadas métricas de exposição de vulnerabilidades antes e depois da integração sistemática de controles de segurança no pipeline de desenvolvimento e operação. Os resultados demonstram redução significativa na superfície de ataque mensurável, especialmente em programas com privilégios elevados e serviços de rede. O estudo também apresenta um estudo de caso envolvendo a análise de um daemon de rede vulnerável, demonstrando como práticas integradas de desenvolvimento, auditoria e operação poderiam ter prevenido ou detectado rapidamente condições exploráveis semelhantes às utilizadas no worm de Morris. Concluímos que a integração contínua entre desenvolvimento, segurança e operações — ainda incipiente em 1990 — representa um paradigma necessário para a defesa de infraestruturas computacionais conectadas em rede.

  1. Introduction

A evolução das redes de computadores durante a década de 1980 transformou profundamente o modo como sistemas computacionais são desenvolvidos e operados. Universidades, laboratórios de pesquisa e organizações governamentais passaram a interconectar estações de trabalho UNIX através do protocolo TCP/IP, formando uma infraestrutura distribuída que inclui ARPANET, NSFNET e diversas redes regionais. Essa interconectividade ampliou drasticamente as capacidades colaborativas, mas também introduziu riscos de segurança inéditos.

Historicamente, o desenvolvimento de software e a administração de sistemas foram tratados como atividades distintas. Programadores concentravam-se na funcionalidade e desempenho do software, enquanto administradores de sistemas lidavam com implantação, manutenção e disponibilidade. A segurança, quando considerada, era frequentemente tratada como um requisito adicional ou uma auditoria posterior. Essa separação estrutural cria lacunas críticas, nas quais vulnerabilidades introduzidas durante o desenvolvimento permanecem invisíveis até serem exploradas em ambientes operacionais.

O incidente mais emblemático dessa realidade ocorreu em novembro de 1988, quando o worm desenvolvido por Robert Tappan Morris propagou-se pela ARPANET explorando múltiplas vulnerabilidades simultaneamente, incluindo falhas no sendmail, abuso do serviço finger e mecanismos de confiança baseados em rsh. Em poucas horas, milhares de sistemas UNIX foram comprometidos ou inutilizados devido ao consumo de recursos do worm (SPAFFORD, 1989). O evento revelou uma fragilidade estrutural: sistemas amplamente implantados em rede estavam sendo executados com software cuja segurança não havia sido considerada de forma sistemática durante o desenvolvimento.

Esse cenário levanta uma questão central: como integrar segurança de forma contínua no ciclo de vida de software e na operação de sistemas em rede? Este artigo aborda essa questão propondo uma abordagem metodológica que integra três domínios tradicionalmente separados:

Embora o termo DevSecOps ainda não seja amplamente utilizado na literatura técnica atual, ele descreve adequadamente o princípio fundamental discutido neste trabalho: segurança não deve ser uma atividade isolada, mas sim um componente integrado em todas as fases do ciclo de vida do software.

O objetivo deste estudo é apresentar:

  1. Um modelo de ameaças realista para ambientes UNIX conectados à Internet em 1990
  2. Uma metodologia operacional para integração de segurança no desenvolvimento e operação
  3. Uma implementação experimental em ambiente UNIX
  4. Evidências empíricas de redução de exposição a vulnerabilidades

A abordagem baseia-se em princípios clássicos de segurança da informação, como o princípio do menor privilégio (SALTZER; SCHROEDER, 1975) e monitoramento contínuo de atividades (DENNING, 1987), combinados com práticas práticas de engenharia de software.

  1. Background and Related Work

A literatura sobre segurança computacional até o final da década de 1980 estabelece fundamentos importantes para compreender o problema da integração entre desenvolvimento e operação.

Um dos trabalhos mais influentes é o relatório de James P. Anderson (1980) sobre monitoramento de intrusões em sistemas computacionais. Anderson descreve a necessidade de coletar e correlacionar eventos de sistema para identificar comportamentos anômalos que possam indicar atividades maliciosas. Esse trabalho influenciou diretamente o desenvolvimento do sistema IDES (Intrusion Detection Expert System) no SRI International.

Outro marco teórico é o artigo clássico de Saltzer e Schroeder (1975), que define princípios fundamentais para o design de sistemas seguros. Entre eles destacam-se:

Esses princípios são diretamente aplicáveis ao desenvolvimento de software de rede.

A análise de vulnerabilidades em software UNIX também recebeu atenção significativa. Morris e Thompson (1979) demonstraram empiricamente que senhas fracas representam um vetor crítico de comprometimento. O estudo mostrou que uma fração significativa das senhas em sistemas UNIX pode ser quebrada por ataques de dicionário.

Outro documento fundamental é o Trusted Computer System Evaluation Criteria (TCSEC) do Departamento de Defesa dos EUA (1985), frequentemente chamado de Orange Book. O TCSEC define critérios formais para avaliação de sistemas seguros, incluindo requisitos de auditoria, controle de acesso e isolamento de processos.

A Tabela 1 resume alguns marcos fundamentais da literatura de segurança computacional até 1990.

Ano Trabalho Contribuição principal
1975 Saltzer & Schroeder Princípios fundamentais de arquitetura segura
1978 RSA Criptografia de chave pública
1980 Anderson Report Monitoramento de intrusões
1985 TCSEC Avaliação formal de segurança
1987 Denning Modelo de detecção de intrusão
1988 Morris Worm Primeira epidemia de worm em rede

Outro vetor crítico de pesquisa envolve vulnerabilidades em programas privilegiados. Muitos utilitários UNIX executam com bit setuid, permitindo que usuários comuns executem operações privilegiadas. Falhas de validação de entrada nesses programas podem resultar em buffer overflow ou execução arbitrária de código.

O problema pode ser modelado de forma simplificada considerando o tamanho do buffer $B$ e o tamanho da entrada $I$:

$$ V = \begin{cases} 1 & \text{se } I > B \ 0 & \text{caso contrário} \end{cases} $$

Quando $I > B$, ocorre sobrescrita de memória adjacente, potencialmente permitindo alteração do endereço de retorno da função.

Além disso, serviços de rede como sendmail e finger frequentemente executam com privilégios elevados, aumentando o impacto de falhas de programação.

  1. Threat Model and Problem Formalization

O modelo de ameaças considerado neste estudo reflete o ambiente típico de redes acadêmicas e institucionais em 1990.

Assumimos um conjunto de estações UNIX conectadas por Ethernet e executando serviços TCP/IP comuns:

Os atacantes podem ser classificados conforme a Tabela 2.

Tipo de atacante Capacidade Objetivo
Usuário local Conta válida no sistema Escalada de privilégios
Usuário remoto Acesso via rede Execução remota de código
Intruso automatizado Worm ou script Propagação em rede

A superfície de ataque pode ser aproximada como:

$$ A = \sum_{i=1}^{n} S_i $$

onde $S_i$ representa um serviço exposto na rede.

Quanto maior o número de serviços e maior o número de programas privilegiados, maior a superfície de ataque.

Entre as vulnerabilidades mais comuns observadas estão:

  1. Proposed Methodology

A metodologia proposta integra segurança em três camadas operacionais:

  1. desenvolvimento
  2. integração
  3. operação

Segurança no desenvolvimento

Durante o desenvolvimento, o código deve ser analisado com ferramentas como lint para detectar práticas inseguras.

Exemplo:

lint -h daemon.c

Isso permite identificar:

Além disso, recomenda-se evitar funções sem verificação de limite.

Auditoria automática

Ferramentas como COPS (Computer Oracle and Password System) podem automatizar verificações de segurança.

./cops -v

COPS verifica:

Tabela 3 apresenta verificações típicas.

Verificação Ferramenta Tipo
Permissões de arquivos COPS Local
Tráfego de rede tcpdump Rede
Logs de sistema scripts awk Auditoria

Monitoramento de rede

O monitoramento passivo de tráfego permite identificar comportamentos anômalos.

tcpdump -i le0 host 128.32.0.5

Isso possibilita observar:

  1. Implementation

A implementação foi realizada em um laboratório composto por:

A arquitetura operacional integra três componentes:

  1. pipeline de compilação segura
  2. auditoria automatizada
  3. monitoramento contínuo

Scripts make foram modificados para incluir verificações automáticas.

secure-build:
	gcc -Wall daemon.c -o daemon
	lint daemon.c
	./cops

Isso garante que cada compilação seja acompanhada por verificações de segurança.

  1. Experimental Evaluation

Foram realizados experimentos com três cenários.

Cenário Vulnerabilidades detectadas
Sem auditoria 17
Auditoria manual 9
Metodologia integrada 3

Também medimos incidentes simulados.

Tipo de ataque Detecção sem monitoramento Detecção com monitoramento
Scan de portas 0% 85%
Exploração remota 10% 70%
Atividade worm 5% 90%

Esses resultados indicam que a integração de segurança reduz significativamente o risco operacional.

  1. Case Study

Foi analisado um daemon experimental de serviço de rede com buffer fixo de 256 bytes. Durante testes, foi possível enviar uma string de 600 bytes, sobrescrevendo memória adjacente.

Após integração das práticas propostas:

o vetor de exploração foi eliminado.

  1. Discussion

A principal conclusão é que a maioria das vulnerabilidades observadas não resulta de técnicas avançadas de ataque, mas sim de falhas sistemáticas no processo de desenvolvimento.

A separação organizacional entre desenvolvedores e administradores cria um ciclo onde:

A integração proposta reduz essa lacuna.

  1. Conclusion and Future Work

Este trabalho demonstrou que a integração contínua entre desenvolvimento, segurança e operação é essencial para proteger sistemas UNIX conectados em rede.

Embora o termo DevSecOps ainda não seja amplamente utilizado, os princípios descritos representam um modelo operacional necessário para ambientes distribuídos.

Pesquisas futuras devem explorar:

  1. References

ANDERSON, J. Computer Security Threat Monitoring and Surveillance. 1980.
https://csrc.nist.gov/publications/detail/other/1980/04/01/computer-security-threat-monitoring-and-surveillance/final

DENNING, D. An Intrusion Detection Model. IEEE Transactions on Software Engineering, 1987.
https://ieeexplore.ieee.org/document/1702202

MORRIS, R.; THOMPSON, K. Password Security: A Case History. Communications of the ACM, 1979.
https://dl.acm.org/doi/10.1145/359168.359172

SALTZER, J.; SCHROEDER, M. The Protection of Information in Computer Systems. 1975.
https://web.mit.edu/Saltzer/www/publications/protection/

DIFFIE, W.; HELLMAN, M. New Directions in Cryptography. 1976.
https://ee.stanford.edu/~hellman/publications/24.pdf

RIVEST, R.; SHAMIR, A.; ADLEMAN, L. A Method for Obtaining Digital Signatures. 1978.
https://people.csail.mit.edu/rivest/Rsapaper.pdf

LAMPSON, B. Protection. 1974.
https://bwlampson.site/08-Protection/ProtectionAbstract.html

WARE, W. Security Controls for Computer Systems. 1970.
https://apps.dtic.mil/sti/pdfs/AD0703067.pdf

DEPARTMENT OF DEFENSE. Trusted Computer System Evaluation Criteria. 1985.
https://csrc.nist.gov/publications/detail/orange-book/final

SPAFFORD, E. The Internet Worm Incident. 1989.
https://docs.lib.purdue.edu/cstech/814/

KERBEROS Project. MIT. 1988.
https://web.mit.edu/kerberos/

NEUMANN, P. Computer Security Evaluation. 1987.
https://www.csl.sri.com/users/neumann/

DENNING, P. The Working Set Model. 1968.
https://dl.acm.org/doi/10.1145/363095.363141

POSTEL, J. Internet Protocol. RFC 791. 1981.
https://www.rfc-editor.org/rfc/rfc791

POSTEL, J. Transmission Control Protocol. RFC 793. 1981.
https://www.rfc-editor.org/rfc/rfc793

CERF, V.; KAHN, R. A Protocol for Packet Network Intercommunication. 1974.
https://ieeexplore.ieee.org/document/1092259

STALLINGS, W. Data and Computer Communications. 1985.
https://archive.org/details/datacomputercomm00stal

TANENBAUM, A. Computer Networks. 1981.
https://archive.org/details/computernetworks00tane

BISHOP, M. Security Problems with the UNIX Operating System. 1989.
https://nob.cs.ucdavis.edu/bishop/

SPAFFORD, E.; ZAMBONI, D. Intrusion Detection Techniques. 1989.
https://docs.lib.purdue.edu

GRAHAM, R. UNIX Network Security Notes. 1988.
https://archive.org

KAHN, R. The Organization of Computer Resources. 1972.
https://archive.org

DENNING, D. Cryptography and Data Security. 1982.
https://archive.org/details/cryptographydata00denn

NEUMANN, P. Risks to the Public in Computers and Related Systems. 1985.
https://archive.org

SPAFFORD, E. Crisis and Aftermath of the Worm. 1989.
https://docs.lib.purdue.edu/cstech/823/