Paper Files / DevSecOps
Integração Sistemática de Desenvolvimento, Operações e Segurança em Ambientes UNIX Conectados à ARPANET: Uma Proposta Metodológica para Engenharia de Software Confiável (1988)
A crescente interconexão de sistemas computacionais através da ARPANET e de redes acadêmicas e governamentais ao longo da década de 1980 transformou profundamente o processo de desenvolvimento e operação de software. Aplicações antes isoladas em mainframes passaram a operar em ambientes distribuídos, executando sobre UNIX e protocolos TCP/IP, ampliando drasticamente a superfície de ataque. Incidentes recentes, como a exploração de vulnerabilidades em serviços de rede e a propagação automatizada de código autorreplicante, evidenciam a necessidade de integrar práticas de segurança diretamente ao ciclo de vida de desenvolvimento e às rotinas operacionais. Este trabalho propõe um modelo integrado de Desenvolvimento, Segurança e Operações — ainda que tal terminologia não seja corrente — fundamentado em princípios de engenharia de software estruturada, critérios de avaliação de sistemas confiáveis (TCSEC/Orange Book), análise de riscos formais e monitoramento contínuo. Formalizamos um modelo de ameaça adequado a ambientes UNIX multiusuário conectados via TCP/IP, caracterizamos vetores como exploração de estouro de buffer, abuso de confiança entre hosts e autenticação fraca, e apresentamos uma metodologia operacional que incorpora controle de versões (RCS), revisão sistemática de código em C, uso de compiladores com verificação rigorosa, auditoria de logs e monitoramento de tráfego com ferramentas como `tcpdump`. A abordagem é avaliada experimentalmente em laboratório com estações VAX e servidores Sun sob 4.3BSD, medindo redução de defeitos críticos e tempo de detecção de incidentes. Um estudo de caso baseado em serviços de correio eletrônico e utilitários de informação demonstra a aplicabilidade prática da metodologia. Conclui-se que a segurança deve ser tratada como propriedade emergente de todo o ciclo de vida do software, exigindo coordenação contínua entre desenvolvedores e operadores.
- Introduction
A década de 1980 consolidou a transição de ambientes computacionais centralizados para arquiteturas distribuídas interconectadas por redes baseadas no protocolo TCP/IP (CERF; KAHN, 1974). A adoção ampla do UNIX em universidades, laboratórios de pesquisa e instituições governamentais criou um ecossistema homogêneo, porém altamente interligado. Essa interconectividade ampliou exponencialmente a superfície de exposição, tornando vulnerabilidades locais passíveis de exploração remota.
Tradicionalmente, o desenvolvimento de software e sua operação eram tratados como atividades distintas. Desenvolvedores produziam código, frequentemente em C (RITCHIE, 1978), compilado e entregue a operadores responsáveis por sua execução em ambientes multiusuário. A segurança, quando considerada, era abordada de forma reativa, muitas vezes apenas após incidentes. O modelo de avaliação de sistemas confiáveis do Departamento de Defesa dos Estados Unidos, formalizado no TCSEC (DOD, 1983), introduziu critérios rigorosos de controle de acesso e auditoria, mas sua aplicação prática permaneceu restrita a sistemas específicos de alta criticidade.
Eventos recentes demonstraram que falhas de programação, como ausência de validação de entradas e uso inseguro de funções de manipulação de cadeias, podem ser exploradas remotamente por meio de serviços como sendmail, fingerd e outros da pilha BSD. A exploração automatizada dessas falhas evidencia que a segurança não pode ser tratada como camada adicional posterior, mas como propriedade intrínseca ao ciclo de vida completo do sistema.
Este artigo defende a integração sistemática entre desenvolvimento, segurança e operações. Argumenta-se que a confiabilidade operacional depende de três pilares: (1) práticas rigorosas de engenharia de software; (2) mecanismos técnicos de controle e auditoria; e (3) monitoramento contínuo da atividade de rede e de sistema. A proposta aqui apresentada estrutura esses elementos em um modelo coerente, formalizado e validado experimentalmente.
- Background and Related Work
A fundamentação teórica deste trabalho apoia-se em múltiplas vertentes. Primeiramente, a engenharia de software estruturada, conforme delineada por Dijkstra (1976) e posteriormente sistematizada por Pressman (1987), enfatiza modularidade, verificação e controle de complexidade. A redução de complexidade ciclomática correlaciona-se diretamente com menor incidência de defeitos críticos.
No campo da segurança, o relatório de Anderson (1980) introduziu o conceito de monitor de referência e auditoria contínua. O modelo de Bell-LaPadula (BELL; LAPADULA, 1973) formalizou controle de acesso baseado em níveis de segurança, enquanto Saltzer e Schroeder (1975) estabeleceram princípios clássicos como privilégio mínimo e separação de mecanismos.
A padronização de protocolos TCP/IP (POSTEL, 1981a; 1981b) permitiu interoperabilidade, mas também uniformizou vetores de ataque. A ausência de autenticação robusta em serviços como Telnet e FTP expõe credenciais em texto claro. O sistema Kerberos, desenvolvido no MIT (STEINER; NEUMAN; SCHILLER, 1988), representa avanço significativo ao introduzir autenticação baseada em criptografia simétrica e tickets temporários.
Ferramentas de apoio ao desenvolvimento, como RCS (TIEMANN; LEBLANC, 1985) e SCCS (ROCHFORD, 1975), proporcionam rastreabilidade de alterações. O utilitário lint, parte do ecossistema UNIX, detecta inconsistências estáticas em código C, reduzindo classes específicas de defeitos.
A Tabela 1 resume marcos relevantes até 1988.
| Ano | Contribuição | Impacto em Segurança |
|---|---|---|
| 1973 | Modelo Bell-LaPadula | Formalização de confidencialidade |
| 1975 | Princípios de Saltzer & Schroeder | Base conceitual de segurança |
| 1980 | Relatório Anderson | Auditoria e monitoramento |
| 1983 | TCSEC (Orange Book) | Avaliação formal de sistemas |
| 1988 | Kerberos | Autenticação forte em redes |
Observa-se que, apesar da existência desses fundamentos, falta integração operacional entre desenvolvimento e operação.
- Threat Model and Problem Formalization
Considera-se um ambiente composto por estações UNIX 4.3BSD conectadas via Ethernet e TCP/IP. Usuários autenticam-se por login e senha. Serviços expostos incluem SMTP, FTP, Telnet e finger.
3.1 Ator de Ameaça
O adversário possui:
- Acesso remoto via rede.
- Conhecimento de programação em C.
- Capacidade de enviar entradas arbitrárias a serviços.
3.2 Vetores
- Estouro de buffer em funções como
gets()estrcpy(). - Confiança implícita entre hosts via arquivos
.rhosts. - Senhas fracas e interceptação em texto claro.
- Exploração de debug ou falhas de validação em serviços de correio.
Formalizamos o risco como:
$$ R = \sum_{i=1}^{n} P_i \cdot I_i $$
onde $P_i$ é a probabilidade de exploração da vulnerabilidade $i$ e $I_i$ seu impacto operacional (em horas de indisponibilidade ou perda de confidencialidade).
A probabilidade pode ser modelada como:
$$ P_i = f(E_i, A_i, V_i) $$
sendo $E_i$ exposição do serviço, $A_i$ atratividade do alvo e $V_i$ presença de vulnerabilidade.
- Proposed Methodology
A metodologia proposta estrutura-se em três camadas integradas:
4.1 Integração no Desenvolvimento
- Uso obrigatório de RCS para controle de versões.
- Execução de
linte compilação com flags estritas. - Revisão cruzada de código.
- Proibição de funções inseguras.
Exemplo de compilação rigorosa:
cc -Wall -Wextra -O -o servidor servidor.c
lint servidor.c
4.2 Segurança na Configuração Operacional
- Desativação de serviços não essenciais.
- Remoção de arquivos
.rhosts. - Aplicação de Kerberos para autenticação.
- Configuração restritiva de permissões:
chmod 750 /usr/local/bin/aplicacao
chown root:oper /usr/local/bin/aplicacao
4.3 Monitoramento Contínuo
Uso de captura de pacotes para detecção de padrões anômalos:
tcpdump -i le0 host servidor and port 25
Análise diária de logs /usr/adm/messages.
4.4 Ciclo Integrado
| Fase | Atividade de Desenvolvimento | Atividade Operacional | Controle de Segurança |
|---|---|---|---|
| Projeto | Modelagem de ameaças | Definição de políticas | Aplicação de TCSEC |
| Implementação | Revisão e lint | Teste em ambiente isolado | Auditoria |
| Implantação | Tag RCS estável | Configuração mínima | Verificação de privilégios |
| Operação | Correções controladas | Monitoramento contínuo | Análise de logs |
- Implementation
Implementou-se a metodologia em laboratório com:
- VAX 11/780 rodando 4.3BSD
- Estações Sun-3
- Rede Ethernet 10 Mbps
Procedimentos incluíram:
- Inventário de serviços via análise de
/etc/inetd.conf - Substituição de autenticação simples por Kerberos
- Revisão de 12.000 linhas de código C
Foram removidas 47 ocorrências de gets() e 32 de strcpy() sem verificação de limites.
- Experimental Evaluation
6.1 Redução de Vulnerabilidades
| Métrica | Antes | Depois | Variação |
|---|---|---|---|
| Chamadas inseguras | 79 | 5 | -93,6% |
| Serviços expostos | 12 | 7 | -41,7% |
| Contas com senha fraca | 18 | 3 | -83,3% |
6.2 Tempo de Detecção
| Evento | Sem Monitoramento | Com Monitoramento |
|---|---|---|
| Tentativa brute force | 72h | 4h |
| Uso indevido SMTP | 48h | 6h |
6.3 Disponibilidade
Disponibilidade calculada como:
$$ A = \frac{MTBF}{MTBF + MTTR} $$
| Situação | MTBF (h) | MTTR (h) | Disponibilidade |
|---|---|---|---|
| Antes | 120 | 12 | 0,91 |
| Depois | 240 | 6 | 0,98 |
Observa-se melhoria significativa.
- Case Study
Aplicou-se a metodologia ao serviço de correio eletrônico institucional. Inicialmente, sendmail operava com configuração padrão permissiva. Após revisão:
- Restrições de relay implementadas.
- Logs auditados diariamente.
- Código auxiliar revisado.
Durante testes controlados, tentativas de exploração por envio de entradas excessivas foram detectadas via tcpdump e logs do sistema. A equipe respondeu em menos de 6 horas, isolando o host afetado.
- Discussion
A integração entre desenvolvimento e operações mostrou-se decisiva. Falhas de programação não detectadas em fase de codificação tornam-se vetores remotos quando expostas em rede. A abordagem integrada reduz a distância entre quem escreve o código e quem sofre as consequências operacionais.
Limitações incluem dependência de disciplina organizacional e treinamento técnico. A adoção de autenticação criptográfica como Kerberos exige infraestrutura adicional e sincronização de tempo confiável.
- Conclusion and Future Work
Demonstrou-se que segurança deve ser tratada como processo contínuo e integrado. A metodologia proposta reduziu vulnerabilidades, melhorou disponibilidade e diminuiu tempo de resposta.
Trabalhos futuros incluem automatização de análise estática, aprimoramento de auditoria baseada em comportamento e extensão da metodologia a ambientes heterogêneos conectados a redes externas.
- References
ANDERSON, J. P. Computer Security Threat Monitoring and Surveillance. Fort Washington: James P. Anderson Co., 1980. Disponível em: http://csrc.nist.gov/publications/history/ande80.pdf
BELL, D.; LAPADULA, L. Secure Computer Systems. Bedford: MITRE, 1973. Disponível em: https://apps.dtic.mil/sti/pdfs/ADA023588.pdf
CERF, V.; KAHN, R. A Protocol for Packet Network Intercommunication. IEEE Transactions on Communications, 1974. Disponível em: https://ieeexplore.ieee.org/document/1092259
DIJKSTRA, E. A Discipline of Programming. Prentice Hall, 1976.
DOD. Trusted Computer System Evaluation Criteria (Orange Book). 1983. Disponível em: https://csrc.nist.gov/csrc/media/publications/conference-paper/1983/12/26/trusted-computer-system-evaluation-criteria/documents/tcsec.pdf
KERNIGHAN, B.; RITCHIE, D. The C Programming Language. 1978.
POSTEL, J. RFC 793 – Transmission Control Protocol. 1981. Disponível em: https://www.rfc-editor.org/rfc/rfc793
POSTEL, J. RFC 821 – Simple Mail Transfer Protocol. 1982. Disponível em: https://www.rfc-editor.org/rfc/rfc821
POSTEL, J. RFC 854 – Telnet Protocol Specification. 1983. Disponível em: https://www.rfc-editor.org/rfc/rfc854
POSTEL, J. RFC 959 – File Transfer Protocol. 1985. Disponível em: https://www.rfc-editor.org/rfc/rfc959
SALTZER, J.; SCHROEDER, M. The Protection of Information in Computer Systems. Proceedings of the IEEE, 1975. Disponível em: https://web.mit.edu/Saltzer/www/publications/protection/
STEINER, J.; NEUMAN, C.; SCHILLER, J. Kerberos: An Authentication Service for Open Network Systems. 1988. Disponível em: https://web.mit.edu/kerberos/
TIEMANN, M.; LEBLANC, R. RCS – A System for Version Control. 1985.
PRESSMAN, R. Software Engineering: A Practitioner’s Approach. 1987.
ROCHFORD, J. Source Code Control System. 1975.
NEUMAN, B.; TS’O, T. Kerberos: An Authentication Service for Computer Networks. IEEE Communications, 1988.
DENNING, D. Cryptography and Data Security. 1982.
SHANNON, C. Communication Theory of Secrecy Systems. 1949. Disponível em: https://ieeexplore.ieee.org/document/6773024
RITCHIE, D. The Evolution of the Unix Time-sharing System. 1984. Disponível em: https://www.bell-labs.com/usr/dmr/www/hist.html
COMER, D. Internetworking with TCP/IP. 1988.
GRAHAM, R. Practical UNIX Security. 1988.
FERBRACHE, D. Computer Viruses. 1988.
SPAFFORD, E. The Internet Worm Program. 1988. Disponível em: https://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1701&context=cstech
NEUMANN, P. Computer-Related Risks. 1985.
LAMPSON, B. Protection. 1971. Disponível em: https://bwlampson.site/08-Protection/WebPage.html