← Voltar aos artigos

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)

DevSecOpsPT

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.

  1. 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.

  1. 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.

  1. 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:

3.2 Vetores

  1. Estouro de buffer em funções como gets() e strcpy().
  2. Confiança implícita entre hosts via arquivos .rhosts.
  3. Senhas fracas e interceptação em texto claro.
  4. 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.

  1. Proposed Methodology

A metodologia proposta estrutura-se em três camadas integradas:

4.1 Integração no Desenvolvimento

  1. Uso obrigatório de RCS para controle de versões.
  2. Execução de lint e compilação com flags estritas.
  3. Revisão cruzada de código.
  4. 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

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
  1. Implementation

Implementou-se a metodologia em laboratório com:

Procedimentos incluíram:

Foram removidas 47 ocorrências de gets() e 32 de strcpy() sem verificação de limites.

  1. 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.

  1. 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:

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.

  1. 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.

  1. 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.

  1. 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