
New releaseSep 1, 2026
snuffleupagus v0.14.0
php7およびphp8向けセキュリティモジュール - バグクラスを抹殺し、残りはバーチャルパッチで対処!
Snuffleupagus
php7 および php8 用セキュリティモジュール - バグクラスを排除し、残りは仮想パッチで対応!
主な機能 • ダウンロード • 使用例 • ドキュメント • ライセンス • 謝辞
Snuffleupagus は、PHP 7+ および 8+ 用のモジュールで、バグクラス全体を排除することで、Webサイトに対する攻撃のコストを大幅に引き上げることを目的としています。また、強力な仮想パッチシステムを提供し、管理者が PHP コードに触れることなく、特定の脆弱性を修正し、不審な動作を監査できるようにします。
主な機能
- 顕著なパフォーマンスへの影響なし
- 強力でありながら記述が簡単な仮想パッチルール
- 複数の脆弱性クラスの排除
- Unserialize ベースのコード実行
mailベースのコード実行- Cookie 窃取型 XSS
- ファイルアップロードベースのコード実行
- 脆弱な PRNG
- XXE
- フィルタベースのリモートコード実行および関連する不正行為
- 複数の堅牢化機能
- 比較的健全なコードベース:
- 100% に近いカバレッジの包括的なテストスイート
- すべてのコミットが複数のディストリビューションでテスト済み
clang-formatによるコードスタイルの強制- 包括的なドキュメント
- coverity、codeql、scan-build などの活用
ダウンロード
ダウンロードページを用意しており、お使いのディストリビューション向けのパッケージが見つかりますが、もちろんこのリポジトリを git clone するか、github でリリースを確認することもできます。
使用例
さまざまなルール例を提供しています。以下のようなものです:
# `chmod` 関数を堅牢化
sp.disable_function.function("chmod").param("mode").value_r("^[0-9]{2}[67]$").drop();
# `system` でのコマンドインジェクションを緩和
sp.disable_function.function("system").param("command").value_r("[$|;&`\\n]").drop();
ルールに違反すると、ログに次のような行が表示されます:
[snuffleupagus][0.0.0.0][disabled_function][drop] The execution has been aborted in /var/www/index.php:2, because the return value (0) of the function 'strpos' matched a rule.
ドキュメント
必要なドキュメントがすべて揃った包括的なウェブサイトを用意しています。もちろん、自分でビルドすることもできます。
謝辞
以下に感謝します:
- __多大な__インスピレーションの源となった Suhosin プロジェクト
- 開発を当初スポンサーしてくれた NBS System
- 彼らの実験と貢献に対して Suhosin-ng、およびそれをスポンサーしてくれた NLNet
- すべてのコントリビューターの皆様