Pergunta

perl -T

Você usa isso? Isso ajuda você a encontrar orifícios de segurança em seus scripts Perl?

Foi útil?

Solução

Mais do que isso :) isso parada Seus problemas de segurança antes que eles se tornem um. Não é uma bala de prata de segurança, é claro ... costumávamos usá -lo (alguns anos atrás, quando eu estava envolvido em projetos Perl) em qualquer script que foi exposto externamente (ou seja, qualquer aplicativo mod_perl) e achamos muito útil e fez disso nossa política. Faz alguns cheques e é útil .. (qualquer coisa faz as coisas automatizadas)

Segurança Perl - Perlsec recomenda -o fortemente também:

Esse sinalizador [modo de mancha] é fortemente sugerido para programas de servidor e qualquer programa executado em nome de outra pessoa, como um script CGI. Depois que o modo de mancha está ligado, ele está ativado pelo restante do seu script.

Outras dicas

Definitivamente!

$ echo '`rm -rf /`' | perl -Te 'eval while <>'
Insecure dependency in eval while running with -T switch at -e line 1, <> line 1.

O capítulo "Técnicas de programação segura" de Dominar perl é quase completamente dedicado à verificação de manchas e como você deve usá -lo.

Muitas pessoas lhe dirão que isso o protege, mas elas sutilmente mentem sobre isso. É uma ferramenta de desenvolvedor que ajuda a encontrar alguns (apenas alguns) pontos no seu código, onde você precisa ter cuidado. Não vai resolver todos os seus problemas de segurança.

Eu acho que o modo Taint funcionaria melhor quando um novo código estiver sendo desenvolvido com o qual todos estejam familiarizados.

Se você tem o código de outra pessoa que está mal escrito, e o executa no modo mancha - o Perl morrerá em vez de executar o que pelas regras de contagem são operações "inseguras".

No modo mancha perl, alguns orifícios são corrigidos, mas não todos. System ("$ sem filtro (UNFILTERED_USER_INPT") morrerá, mas o Perl ainda pode gravar os dados do $ sem filtro_user_input em um arquivo com um nome fixo (porque a impressão de dados contaminados é considerada 'segura') e, em seguida, execute esse arquivo com o sistema (). Mas nada pode verificar tudo.

Há uma troca por usá -lo em aplicativos legados. Quando a Perl encontrar uma operação insegura nos dados contaminados, ele morrerá - o que significa que alguém deve entrar e decidir o que significa desprezar os dados, o que o regexp é necessário, antes que o aplicativo seja confiável novamente.

Algumas pessoas preferem inseguro, confiável e baixo custo (por enquanto) a - seguro, quebrado, precisam encontrar os desenvolvedores. Não que isso seja bom a longo prazo ... mas não é incomum.

Sim, o modo de mancha é útil para todos os motivos mencionados acima.

Um lugar que você não pode considerar dados contaminados é ao interagir com um banco de dados. Felizmente, o DBI tem suporte para impedir que os dados contaminados entrem no seu banco de dados e trata os dados provenientes do seu banco de dados como contaminados para que você não possa fazer nada inseguro com ele. Você precisa ativar especificamente as opções para isso; Eles estão desligados por padrão. Ver os documentos do DBI para mais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top