No âmbito do projeto um módulo para conexão ao interpretador PHP7, destinado a aumentar a segurança do ambiente e bloquear erros típicos que provocam vulnerabilidades em aplicações PHP executadas. O módulo também permite criar patches virtuais para resolver problemas específicos sem modificar os códigos fonte das aplicações vulneráveis, o que é conveniente para sistemas de hospedagem em massa, onde não é possível manter todas as aplicações dos usuários atualizadas. O módulo é escrito em C, é carregado na forma de uma biblioteca compartilhada ("extension=snuffleupagus.so" no php.ini) e sob a licença LGPL 3.0.
Snuffleupagus fornece um sistema de regras que permite usar tanto modelos padrão para aumentar a proteção quanto criar regras personalizadas para controle de dados de entrada e parâmetros de funções. Por exemplo, a regra "sp.disable_function.function("system").param("command").value_r("[$|;&`\\n]" ).drop();" permite, sem alterar a aplicação, restringir o uso de caracteres especiais nos argumentos da função system(). Similarmente, podem ser criadas para bloquear vulnerabilidades conhecidas.
De acordo com os testes realizados pelos desenvolvedores, Snuffleupagus quase não reduz o desempenho. Para garantir sua própria segurança (as possíveis vulnerabilidades na camada de proteção podem servir como vetor adicional para ataques), o projeto aplica testes rigorosos em cada commit em diferentes distribuições, utilizando sistemas de análise estática, e o código é formatado e documentado para facilitar a auditoria.
Métodos integrados são fornecidos para bloquear classes de vulnerabilidades, como problemas, problemas com a serialização de dados, uso da função PHP mail(), vazamento de conteúdo de cookies durante ataques XSS, problemas devido ao upload de arquivos com código executável (por exemplo, no formato ), geração deficiente de números aleatórios e de construções XML incorretas.
Os modos de proteção suportados pelo PHP incluem:
- Ativação automática das flags "secure" e "samesite" (proteção contra CSRF) para cookies, de cookies;
- Um conjunto integrado de regras para detectar vestígios de ataques e comprometimento de aplicações;
- A ativação forçada do modo "" (por exemplo, bloqueia tentativas de enviar uma string ao invés de um valor inteiro como argumento) e proteção contra ;
- Bloqueio por padrão (por exemplo, proibição de "phar://") permitindo sua utilização apenas através de uma lista branca;
- Proibição de execução de arquivos que são graváveis;
- Listas negras e listas brancas para eval;
- Obrigatoriedade de verificação de certificados TLS ao usar
curl; - Adição de HMAC a objetos serializados para garantir que, durante a desserialização, os dados recebidos sejam os armazenados pelo aplicativo original;
- Modo de registro de solicitações;
- Bloqueio do carregamento de arquivos externos no libxml através de links em documentos XML;
- Possibilidade de conectar manipuladores externos (upload_validation) para verificar e escanear arquivos carregados;
O projeto foi criado e é utilizado para proteger os usuários na infraestrutura de um dos grandes provedores de hospedagem francês. , o que significa que simplesmente conectar o Snuffleupagus permitiria proteger contra muitas vulnerabilidades perigosas identificadas este ano no Drupal, WordPress e phpBB. Vulnerabilidades no Magento e Horde poderiam ser bloqueadas ativando o modo
"sp.readonly_exec.enable()".
Fonte: opennet.ru
