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)
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.
- 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:
- Desenvolvimento de software
- Operação de sistemas
- Análise e monitoramento de segurança
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:
- Um modelo de ameaças realista para ambientes UNIX conectados à Internet em 1990
- Uma metodologia operacional para integração de segurança no desenvolvimento e operação
- Uma implementação experimental em ambiente UNIX
- 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.
- 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:
- economia de mecanismo
- separação de privilégios
- minimização da superfície de ataque
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.
- 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:
sendmailfingertelnetftprsh/rlogin
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:
- validação inadequada de entradas
- confiança implícita entre hosts (
.rhosts) - senhas fracas
- permissões incorretas em arquivos
- Proposed Methodology
A metodologia proposta integra segurança em três camadas operacionais:
- desenvolvimento
- integração
- 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:
- uso inseguro de
gets() - variáveis não inicializadas
- conversões perigosas de tipos
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:
- permissões inseguras
- contas sem senha
- arquivos setuid perigosos
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:
- conexões incomuns
- padrões repetitivos de conexão
- tentativas de exploração automatizadas
- Implementation
A implementação foi realizada em um laboratório composto por:
- Sun Workstation (SunOS 4.x)
- BSD 4.3
- rede Ethernet 10 Mbps
A arquitetura operacional integra três componentes:
- pipeline de compilação segura
- auditoria automatizada
- 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.
- 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.
- 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:
- validação de entrada
- auditoria de código
- monitoramento de rede
o vetor de exploração foi eliminado.
- 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:
- desenvolvedores ignoram implicações operacionais
- operadores recebem software inseguro
A integração proposta reduz essa lacuna.
- 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:
- sistemas automatizados de detecção de intrusão
- análise formal de código
- integração com mecanismos criptográficos como Kerberos.
- 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/