As funções dos programas CGI são poderosas, mas justamente por isso, se você, como desenvolvedor CGI ou administrador de sistema, não prestar atenção ao escrever e configurar programas CGI, seu sistema ficará cheio de falhas. Este artigo discute as questões de segurança do CGI.
3. Segurança do CGI
A função do programa CGI é poderosa. Ele não só pode ter as funções de programas comuns, mas também publicar os resultados do programa na WEB. Mas precisamente porque as funções dos programas CGI são tão poderosas, se você, como desenvolvedor CGI ou administrador de sistema, não prestar atenção ao escrever e configurar programas CGI, seu sistema ficará cheio de falhas, permitindo que alguns usuários ilegais tirem vantagem deles.
A segurança mencionada aqui não é causada pela especificação CGI, mas sim por programação e configurações de sistema inadequadas. A especificação CGI permite que os usuários aproveitem o poder de computação do servidor. São os cálculos inadequados no servidor que levam a vulnerabilidades de segurança do sistema. Abaixo apresento uma vulnerabilidade de segurança CGI em sistemas UNIX. Esta vulnerabilidade é muito comum.
# !/usr/local/bin/perl
#formmail.cgi
requer "cgi.pl";
# Inicie o aplicativo de e-mail "/bin/mail" com o cabeçalho Assunto: do campo "formname"
open (MAIL, "|/bin/mail -s '".$input{"formname"}."' webweave");
# Adicione o campo de envio "formcontents" como corpo da mensagem
IMPRint MAIL $input{"formcontents"};
fechar(CORREIO);
saída(0);
Neste exemplo, o programa CGI envia as informações do formulário para /bin/mail e as envia para o servidor webveave. Na maioria dos casos, este programa CGI pode completar a tarefa normalmente, mas este programa CGI não filtra as informações inseridas pelo usuário no formulário WEB, deixando assim riscos de segurança. Quando usuários ou pessoas com segundas intenções inserem dados incorretos, isso pode causar erros no sistema ou obter permissões indevidas.
Por exemplo, o usuário preenche o seguinte conteúdo no “formname” do formulário WEB:
"ls /etc/passwd '[email protected]#'
O conteúdo de /etc/passwd será exibido no navegador WEB do usuário. Se o arquivo passwd deste sistema UNIX não tiver sombra, o usuário pode usar esse conteúdo para tentar quebrar a senha usando crack jack ou crack john!
Conforme mencionado anteriormente, a segurança CGI é responsabilidade tanto dos programadores quanto dos administradores de sistema. Agora falarei sobre coisas que ambos devem prestar atenção:
Trabalho do administrador do sistema:
1. Coopere com os programadores para compartilhar informações sobre a segurança do servidor, verificar os códigos uns dos outros ao mesmo tempo e descobrir problemas de segurança no código em tempo hábil.
2. Use um bom software de servidor e acesse frequentemente o site do software de servidor para obter as informações mais recentes.
3. Restringir os usuários do servidor a hosts de rede específicos, usar a função de gerenciamento de segurança do servidor, definir o controle de acesso de roteamento, etc.
4. Restringir as funções CGI, restringir alguns serviços avançados a usuários confiáveis, limitar o uso de programas CGI testados aos desenvolvedores e fornecer apenas programas CGI testados aos usuários.
5. Ao usar programas CGI de outras pessoas, verifique cuidadosamente o código.
6. Limite o uso de programas CGI a um ambiente protegido, configure o servidor para acesso de usuário não privilegiado e configure uma conta ou grupo em execução especificamente para programas CGI.
7. Configure o servidor que executa o programa CGI fora do firewall. Deve-se observar que o servidor que executa o programa CGI deve ser configurado fora do firewall, caso esteja configurado dentro do firewall, uma vez que usuários ilegais encontram a vulnerabilidade de segurança do. o servidor do programa CGI, eles irão Você pode controlar todos os hosts dentro do firewall!
8. Reduzir a prioridade de execução dos programas CGI para evitar que os usuários executem maliciosamente um grande número de programas CGI, causando sobrecarga no servidor.
9. Assine e-mails sobre segurança de rede e participe de grupos de notícias sobre segurança de rede.
Empregos de programador CGI:
1. Coopere com o administrador do sistema para compreender as informações de segurança do sistema e verificar os códigos uns dos outros.
2. Use programas de biblioteca confiáveis e verifique o código-fonte dos programas de biblioteca.
3. Obtenha o nome do cliente em REMOTE_HOST e limite algumas funções avançadas a clientes confiáveis.
4. Se o servidor WEB fornecer confirmação de senha HTTP, use a senha HTTP para restringir o acesso.
5. Filtre a entrada do usuário e remova dados de entrada ilegais.
6. Limite o tamanho dos dados de entrada para evitar que usuários mal-intencionados sobrecarreguem o servidor inserindo grandes quantidades de dados.
7. Evite transmitir dados do usuário para outros aplicativos para evitar que os usuários chamem o interpretador de comandos ou explorem vulnerabilidades de segurança em outros aplicativos.
8. Quando você descobrir uma vulnerabilidade em um programa CGI, não conte a ninguém, muito menos deixe comentários no programa. O que você deve fazer é corrigir a vulnerabilidade imediatamente.
9. Aprenda a ser um invasor e descubra as vulnerabilidades de segurança dos programas CGI.