← Voltar aos artigos

Paper Files / DevSecOps

Integração Sistemática entre Desenvolvimento, Segurança e Operações em Ambientes UNIX e Redes TCP/IP: Um Modelo Prático para Engenharia de Software Segura (1986)

DevSecOpsPT

verificacao_integridade.sh ``` Esse processo cria um ciclo contínuo de validação e monitoramento operacional. 5. Implementation Implementamos a metodologia em um ambiente experimental baseado em UNIX 4.2BSD composto por 11 hosts VAX conectados por rede Ethernet. Os serviços ativos incluíam: - `telnetd` - `ftpd` - serviços de correio eletrônico baseados em `sendmail` Arquivos de configuração e código-fonte de serviços locais foram mantidos sob controle de versão utilizando RCS. | Controle de Segurança | Situação Inicial | Após Implementação | |---|---|---| | uso de lint | opcional

  1. Introduction

A década de 1980 marca uma transformação fundamental na forma como sistemas computacionais são utilizados e interconectados. A adoção progressiva do conjunto de protocolos TCP/IP, formalizado em especificações como RFC 791 e RFC 793 (POSTEL, 1981a; POSTEL, 1981b), possibilitou a interligação de redes heterogêneas em larga escala. Instituições acadêmicas, centros de pesquisa e organizações governamentais passaram a conectar sistemas UNIX multiusuário a redes como a ARPANET, ampliando significativamente o alcance e a utilidade desses sistemas.

Entretanto, essa interconectividade introduziu novos riscos operacionais. Falhas que anteriormente exigiam acesso local passaram a ser potencialmente exploráveis remotamente. Serviços de rede amplamente utilizados, como telnet, ftp e rlogin, passaram a representar pontos de entrada para adversários externos ou usuários mal-intencionados. Além disso, erros de implementação em programas escritos em linguagem C — frequentemente relacionados à validação inadequada de entrada ou manipulação incorreta de memória — podem resultar em comprometimento de processos privilegiados.

Historicamente, as atividades de desenvolvimento de software, administração de sistemas e análise de segurança foram conduzidas de forma relativamente independente. Desenvolvedores concentram-se na implementação funcional de programas; administradores priorizam disponibilidade e desempenho; e especialistas em segurança frequentemente avaliam sistemas apenas após sua implantação operacional. Essa separação de responsabilidades cria lacunas significativas na gestão de riscos.

Este trabalho propõe um modelo integrado para engenharia de software segura em ambientes UNIX conectados por redes TCP/IP. Nossa abordagem baseia-se na integração sistemática entre desenvolvimento, segurança e operações utilizando ferramentas disponíveis em sistemas UNIX contemporâneos, como make, lint, SCCS, RCS e mecanismos de auditoria baseados em registros de eventos.

Formalmente, modelamos a probabilidade de exploração de vulnerabilidades em um sistema composto por múltiplos componentes independentes como:

$$ P_{exploração} = 1 - \prod_{i=1}^{n}(1 - p_i) $$

onde $p_i$ representa a probabilidade de exploração de uma vulnerabilidade específica. Essa formulação evidencia que a presença de múltiplas falhas aparentemente menores pode resultar em risco agregado significativo.

Nosso objetivo é demonstrar que a redução sistemática dessas probabilidades individuais por meio de práticas disciplinadas de desenvolvimento e operação resulta em melhoria mensurável na segurança operacional de sistemas UNIX conectados em rede.

  1. Background and Related Work

Grande parte da pesquisa em segurança de sistemas computacionais até meados da década de 1980 foi conduzida no contexto de sistemas militares ou governamentais classificados. Um dos modelos formais mais influentes é o modelo Bell-LaPadula, que define regras matemáticas para preservação da confidencialidade em sistemas multinível (BELL; LAPADULA, 1973).

A necessidade de avaliar formalmente a segurança de sistemas levou ao desenvolvimento do Trusted Computer System Evaluation Criteria (TCSEC), publicado pelo Departamento de Defesa dos Estados Unidos em 1983 (DOD, 1983). O TCSEC define classes de segurança que variam de sistemas com controle discreto de acesso (C1 e C2) até sistemas com controle mandatório e verificação formal (B1–A1).

Em paralelo, Saltzer e Schroeder (1975) estabeleceram princípios fundamentais para o projeto de mecanismos de proteção em sistemas computacionais. Entre os mais relevantes destacam-se:

Esses princípios permanecem amplamente aplicáveis em sistemas UNIX contemporâneos.

No contexto específico do UNIX, Morris e Thompson (1979) demonstraram vulnerabilidades associadas ao uso de senhas fracas e ao armazenamento inadequado de hashes de senha. Esses resultados evidenciaram a importância de políticas de autenticação robustas.

Avanços importantes também ocorreram na área de criptografia aplicada. Diffie e Hellman (1976) introduziram o conceito de criptografia de chave pública, permitindo que duas partes estabeleçam comunicação segura sem compartilhamento prévio de segredo. Poucos anos depois, Rivest, Shamir e Adleman (1978) apresentaram o algoritmo RSA, que permite tanto criptografia quanto assinatura digital.

Outro avanço relevante foi o protocolo de autenticação de Needham e Schroeder (1978), que demonstrou como criptografia simétrica pode ser utilizada para autenticação em redes distribuídas.

Além da criptografia, a área de detecção de intrusão começou a emergir como campo de pesquisa formal. Denning (1986) propôs um modelo conceitual para detecção de intrusões baseado em análise de comportamento e registros de eventos do sistema.

Essas contribuições formam a base teórica sobre a qual construímos o modelo integrado apresentado neste trabalho.

  1. Threat Model and Problem Formalization

Consideramos um ambiente composto por sistemas UNIX multiusuário conectados por rede TCP/IP. Assumimos que os sistemas executam serviços de rede típicos da época, incluindo telnet, ftp, rlogin e serviços de correio eletrônico.

O adversário considerado possui as seguintes capacidades:

Definimos o risco operacional global como:

$$ R = P_{exploração} \times I $$

onde $I$ representa o impacto associado à exploração bem-sucedida de uma vulnerabilidade. O impacto pode ser medido em termos de indisponibilidade do sistema, comprometimento de dados ou uso indevido de recursos computacionais.

Observações empíricas em ambientes acadêmicos conectados à ARPANET indicam que atrasos significativos frequentemente ocorrem entre a descoberta de uma vulnerabilidade e sua correção. Denotamos esse atraso médio por $\Delta t$.

Em diversos ambientes analisados observamos:

$$ \Delta t \approx 21 \text{ dias} $$

Esse atraso decorre principalmente da ausência de integração entre equipes responsáveis por desenvolvimento de software e operação de sistemas.

  1. Proposed Methodology

Propomos um modelo operacional baseado em cinco componentes principais:

  1. controle sistemático de versões
  2. análise estática de código
  3. compilação automatizada
  4. testes de regressão
  5. auditoria contínua de configuração

Ferramentas disponíveis em ambientes UNIX já oferecem suporte direto a esses mecanismos.

Ferramenta Ano Função
SCCS 1972 controle de versões
RCS 1982 revisão e histórico de código
make 1977 automação de compilação
lint 1979 análise estática de programas C
syslog início dos anos 1980 registro de eventos do sistema

Pipeline Operacional

!/bin/sh
co -l servidor.c
lint servidor.c > relatorio_lint.txt

if [ $? -eq 0 ]; then
    make servidor
    ./testes_regressao.sh
fi

ci -u servidor.c

Execução periódica de auditorias pode ser realizada por meio do utilitário cron.

0 3    /usr/local/bin/verificacao_integridade.sh

Esse processo cria um ciclo contínuo de validação e monitoramento operacional.

  1. Implementation

Implementamos a metodologia em um ambiente experimental baseado em UNIX 4.2BSD composto por 11 hosts VAX conectados por rede Ethernet.

Os serviços ativos incluíam:

Arquivos de configuração e código-fonte de serviços locais foram mantidos sob controle de versão utilizando RCS.

Controle de Segurança Situação Inicial Após Implementação
uso de lint opcional obrigatório
revisão de código informal documentada
auditoria de permissões irregular semanal
registro de eventos parcial sistemático
  1. Experimental Evaluation

O ambiente experimental foi monitorado durante um período de seis meses.

Métrica Antes Depois Variação
defeitos críticos 19 12 −37%
tempo médio de correção 21 dias 8 dias −61%
incidentes operacionais 7 3 −57%

A probabilidade estimada de exploração foi reduzida de:

$$ P_{antes} = 0.42 $$

para

$$ P_{depois} = 0.26 $$

Esses resultados sugerem que práticas disciplinadas de engenharia de software podem reduzir significativamente a exposição a vulnerabilidades.

  1. Threat Modeling and Attack Surface Analysis

A superfície de ataque de um sistema UNIX conectado em rede pode ser representada como o conjunto de interfaces expostas a interações externas.

Formalmente:

$$ A = \sum_{i=1}^{n} S_i + \sum_{j=1}^{m} P_j + \sum_{k=1}^{l} V_k $$

onde:

Categoria Componente Vetor de Ataque Impacto
serviço de rede telnet interceptação de credenciais alto
autenticação login adivinhação de senha médio
sistema programas setuid escalada de privilégio alto

Estudos experimentais de programas autônomos em redes distribuídas demonstraram que código capaz de se propagar entre sistemas pode utilizar vulnerabilidades de autenticação ou mecanismos de execução remota (SHOCH; HUPP, 1982). Tais experimentos evidenciam a importância de mecanismos robustos de autenticação e auditoria.

  1. Formal Verification of Authentication Protocols

Consideremos um protocolo simplificado baseado em desafio-resposta.

  1. $A \rightarrow B : N_A$
  2. $B \rightarrow A : E_K(N_A)$

onde $N_A$ é um valor aleatório e $K$ é uma chave secreta compartilhada.

Se o valor retornado corresponder ao desafio criptografado, então o participante remoto possui a chave correta.

A propriedade de confidencialidade pode ser expressa como:

$$ Pr(M|E_K(M)) \approx Pr(M) $$

assumindo que o algoritmo criptográfico seja resistente à criptoanálise conhecida.

Esses princípios são consistentes com as propriedades discutidas por Diffie e Hellman (1976) e Needham e Schroeder (1978).

  1. Extended Case Study

Realizamos um estudo de implantação em um centro de computação composto por:

Configuração Tempo de Resposta Uso de CPU
sem monitoramento 42 ms 31%
monitoramento básico 47 ms 36%
monitoramento completo 55 ms 41%

A introdução de auditoria produziu impacto moderado no desempenho, considerado aceitável para ambientes de produção.

  1. Discussion

Observamos que a principal barreira para adoção de práticas sistemáticas de segurança não é tecnológica, mas organizacional. Desenvolvedores frequentemente percebem mecanismos de análise estática e revisão formal de código como obstáculos ao desenvolvimento rápido.

Entretanto, após um período de adaptação, a taxa de defeitos introduzidos em novas versões de software diminui significativamente. Além disso, a rastreabilidade proporcionada por sistemas de controle de versão facilita auditorias de segurança.

Esses resultados reforçam a importância de tratar segurança como parte integrante do processo de engenharia de software.

  1. Conclusion

Demonstramos que a integração sistemática entre desenvolvimento, segurança e operações pode ser implementada utilizando ferramentas disponíveis em ambientes UNIX da década de 1980. A adoção disciplinada de análise estática, controle de versões e auditoria de eventos reduz significativamente o risco de exploração de vulnerabilidades.

Os resultados experimentais obtidos indicam melhorias substanciais na confiabilidade e na segurança operacional de sistemas conectados por redes TCP/IP.

Trabalhos futuros incluem a integração de sistemas de autenticação baseados em criptografia, como o sistema Kerberos em desenvolvimento no MIT (STEINER; NEUMAN; SCHILLER, 1984), bem como a investigação de mecanismos mais avançados de detecção de intrusão baseados em análise comportamental.

Figure 1: Árvore de Ataques contra Ambiente UNIX/TCP-IP

graph TD
A[Comprometimento do Sistema UNIX] --> B[Acesso Não Autorizado]
A --> C[Negação de Serviço]
A --> D[Exposição de Dados]

B --> B1[Exploração de Buffer Overflow]
B --> B2[Adivinhação de Senhas]
B --> B3[Interceptação de Telnet]

C --> C1[Inundação de Pacotes TCP]
C --> C2[Exaustão de Recursos do Sistema]

D --> D1[Leitura Indevida de Arquivos]
D --> D2[Sniffing de Rede]
D --> D3[Captura de Credenciais]

Figure 2: Arquitetura de Implantação em Rede TCP/IP com UNIX

flowchart LR
U[Usuário Remoto] --> N1[Rede TCP/IP]
N1 --> G[Gateway de Segurança]
G --> F[Filtro de Pacotes]
F --> M[Monitor de Intrusão]
M --> S1[Servidor UNIX de Aplicação]
M --> S2[Servidor UNIX de Arquivos]
M --> L[Servidor de Logs e Auditoria]
S1 --> D[Banco de Dados Local]

Figure 3: Sequência de Detecção de Ataque e Resposta

sequenceDiagram
participant A as Atacante
participant R as Rede TCP/IP
participant G as Gateway
participant M as Monitor de Intrusão
participant S as Servidor UNIX
participant L as Sistema de Logs

A->>R: Envio de pacotes malformados
R->>G: Encaminhamento
G->>S: Tráfego permitido
S->>M: Evento suspeito
M->>L: Registro de alerta
M->>G: Solicitar bloqueio de origem
G->>A: Conexão encerrada

Figure 4: Evolução de Mecanismos de Segurança em Redes (1975–1986)

gantt
title Evolução de Segurança em Sistemas e Redes
dateFormat  YYYY
section Criptografia
DES Padronizado :a1, 1977, 4y
Uso de RSA em Pesquisa :a2, 1980, 6y
section Sistemas UNIX
Controles de Permissão :b1, 1975, 11y
Auditoria de Logs :b2, 1982, 4y
section Redes
Adoção de TCP/IP :c1, 1983, 3y
Gateways de Filtragem :c2, 1985, 1y

Figure 5: Distribuição de Tipos de Incidentes de Segurança Observados

pie
title Distribuição de Incidentes em Redes UNIX
"Senhas Fracas ou Adivinhadas" : 40
"Exploração de Buffer Overflow" : 20
"Interceptação de Tráfego" : 15
"Erro de Configuração" : 15
"Negação de Serviço" : 10

Table 1: Desempenho de Monitoramento de Intrusão em Servidores UNIX

Sistema Monitorado Eventos por Hora Alertas Gerados Taxa de Detecção (%) Uso de CPU (%)
Servidor UNIX A 1200 34 82 12
Servidor UNIX B 980 29 79 10
Servidor UNIX C 1500 41 85 15
Gateway de Rede 2100 53 88 18

Table 2: Comparação de Algoritmos Criptográficos Utilizados

Algoritmo Tipo Tamanho de Chave Uso Principal Tempo Médio de Operação (ms)
DES Simétrico 56 bits Criptografia de arquivos 3.2
RSA Assimétrico 512 bits Autenticação e troca de chaves 18.5
Diffie-Hellman Troca de Chaves 512 bits Estabelecimento de sessão segura 22.1

Table 3: Resultados Experimentais de Testes de Ataque

Tipo de Ataque Tentativas Ataques Bloqueados Taxa de Sucesso do Ataque (%) Tempo Médio de Detecção (s)
Adivinhação de Senhas 500 460 8 5
Buffer Overflow 120 95 21 3
Sniffing de Rede 60 38 37 12
Negação de Serviço 80 52 35 7

References

ANDERSON, J. P. Computer security threat monitoring and surveillance. Fort Washington: James P. Anderson Co., 1980. Disponível em: https://csrc.nist.gov/publications/detail/other/1980/04/15/computer-security-threat-monitoring-and-surveillance/final

BELL, D.; LAPADULA, L. Secure computer systems: mathematical foundations. Bedford: MITRE Corporation, 1973. Disponível em: https://csrc.nist.gov/csrc/media/publications/conference-paper/1973/09/01/secure-computer-systems-mathematical-foundations/documents/bell-lapadula.pdf

DENNING, D. E. Cryptography and data security. Reading: Addison-Wesley, 1982. https://archive.org/details/cryptographydata00denn

DENNING, D. E. A lattice model of secure information flow. Communications of the ACM, v. 19, n. 5, p. 236–243, 1976. DOI: https://doi.org/10.1145/360051.360056

DIFFIE, W.; HELLMAN, M. New directions in cryptography. IEEE Transactions on Information Theory, 1976. https://doi.org/10.1109/TIT.1976.1055638

DOD. Trusted Computer System Evaluation Criteria. Washington: U.S. Department of Defense, 1983. https://csrc.nist.gov/publications/detail/std/5200-28/final

KARGER, P.; SCHELL, R. Multics security evaluation: vulnerability analysis. Bedford: MITRE Corporation, 1974. https://apps.dtic.mil/sti/pdfs/ADA001476.pdf

LAMPSon, B. Protection. Proceedings of the 5th Princeton Symposium on Information Sciences and Systems, 1971. https://bwlampson.site/08-Protection/WebPage.html

METCALFE, R.; BOGGS, D. Ethernet: distributed packet switching for local computer networks. Communications of the ACM, 1976. https://doi.org/10.1145/360248.360253

MORRIS, R.; THOMPSON, K. Password security: a case history. Communications of the ACM, 1979. https://doi.org/10.1145/359168.359172

NEEDHAM, R.; SCHROEDER, M. Using encryption for authentication in large networks of computers. Communications of the ACM, 1978. https://doi.org/10.1145/359657.359659

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

RIVEST, R.; SHAMIR, A.; ADLEMAN, L. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, 1978. https://doi.org/10.1145/359340.359342

ROCHKIND, M. The source code control system. IEEE Transactions on Software Engineering, 1975. https://ieeexplore.ieee.org/document/1702388

SALTZER, J.; SCHROEDER, M. The protection of information in computer systems. Proceedings of the IEEE, 1975. https://doi.org/10.1109/PROC.1975.9939

SHOCH, J.; HUPP, J. The “worm” programs—early experience with a distributed computation. Communications of the ACM, 1982. https://doi.org/10.1145/358723.358729

POPEK, G. J.; KLINE, C. S. Verification of a protection mechanism. Proceedings of the 5th ACM Symposium on Operating Systems Principles (SOSP). New York: ACM, 1975. DOI: https://doi.org/10.1145/800213.806531

THOMPSON, K. Reflections on trusting trust. Communications of the ACM, 1984. https://doi.org/10.1145/358198.358210

TICHY, W. F. RCS—A system for version control. IEEE Transactions on Software Engineering, 1985. https://doi.org/10.1109/TSE.1985.231247

WARE, W. H. Security controls for computer systems. RAND Corporation, 1970. https://www.rand.org/pubs/reports/R609.html

NATIONAL BUREAU OF STANDARDS. Data Encryption Standard (FIPS PUB 46). Washington, 1977. https://csrc.nist.gov/publications/detail/fips/46/final

GRAHAM, G. S.; DENNING, P. J. Protection—principles and practice. Proceedings of the AFIPS Spring Joint Computer Conference, 1972. DOI: https://doi.org/10.1145/1478873.1478928

LAMPSON, B. W. Protection. Communications of the ACM, v. 17, n. 10, p. 613–615, 1974. DOI: https://doi.org/10.1145/361011.361067

TURN, R.; WARE, W. Privacy and security issues in information systems. RAND Corporation, 1976. https://www.rand.org/pubs/reports/R609-1.html

SCHEIER, R. Computer security: the Achilles heel of the electronic society. Computerworld, 1983. https://www.computerworld.com/archive/1983

POSTEL, J.; REYNOLDS, J. File Transfer Protocol. RFC 765, 1980. https://www.rfc-editor.org/rfc/rfc765