PHPIDS - IDS incorporado na sua aplicação

Quero compartilhar com vocês um projeto que conheci através do colega Wagner Elias, chama-se PHPIDS, através de assinaturas que utilizam expressões regulares você cria filtros que tem o objetivo de detectar ataques que exploram a falta de tratamento na entrada de dados, como iSQL, XSS(para + veja owasp). O legal é que conseguindo diminuir os falsos positivos, você pode por exemplo integrar o phpids a sua camada de controle e fazer com que o mesmo funcione como um IPS.

Outro fato importante é que você aproxima a segurança da equipe de desenvolvimento e que a segurança fica incorporada a sua aplicação e não ao seu servidor de aplicação e ou protocolo de comunicação(http), como no caso de se usar o mod_security do apache para WAF, mesmo que com proxy reverso você consiga fazer o filtro em um ambiente destinto da aplicação e até mesmo de outros servidores de aplicação que não o apache, mas é importante lembrar que com o mod_security o tratamento se restringe a tráfego http que você acaba criando mais um vetor de ataque(alá falhas do mod_proxy), além de que com mod_security, normalmente a configuração do mesmo fica atrelada a equipe de infra e não a de desenvolvimento.

Gostei muito do projeto, gostaria de saber se existe algum semelhante em java e o mais legal, seria poder compartilhar regras entre os mais diversos IDS’s, para evitar retrabalho… desconheço um projeto que se preocupe com a interoperabilidade de regras entre IDS’s.

O Wagner Elias vai palestrar sobre o phpids na PHPConference 2009, inclusive, levantando a possibilidade de integrar o mesmo ao memcached, evitando ou minimizando assim o overhead.

Abaixo um filtro do PHPIDS:

44 (?:\\d"\\s+"\\s+\\d)|(?:^admin\\s\*"|(\\/\\\*)+"+\\s?(?:--|#|\\/\\\*|{)?)|(?:"\\s\*or\[\\w\\s-\]+\\s\*\[+<>=(),-\]\\s\*\[\\d"\])|(?:"\\s\*\[^\\w\\s\]?=\\s\*")|(?:"\\W\*\[+=\]+\\W\*")|(?:"\\s\*\[!=|\]\[\\d\\s!=+-\]+.\*\["(\].\*$)|(?:"\\s\*\[!=|\]\[\\d\\s!=\]+.\*\\d+$)|(?:"\\s\*like\\W+\[\\w"(\])|(?:\\sis\\s\*0\\W)|(?:where\\s\[\\s\\w\\.,-\]+\\s=)|(?:"\[<>~\]+") Detects basic SQL authentication bypass attempts 1/3 sqli id lfi 7

Para saber mais:

http://php-ids.org/faq/