24

私は現在、PHP CMF の開発に取り組んでおり、最終的には商用利用可能になり、特性を使用したいと考えています。ただし問題は、trait が PHP 5.4 の機能であり、人気のある Suhosin セキュリティ パッチが PHP 5.4 と互換性がないことです。

私の質問は次のとおりです: Suhosin セキュリティ パッチなしで PHP Web サイトを実行しても安全ですか? そうでない場合、自分自身や自分の CMF を使用している他の人々にどのような脆弱性を与えてしまうでしょうか?

注:共有ホスティングについては心配していません。私の CMF を使用している人は誰でも、自分の Web サーバーを管理制御できると予想されます。

4

3 に答える 3

40

Suhosin は、PHP 強化パッチでした。明示的なセキュリティの脆弱性にはパッチを適用しませんでした。PHP スクリプトの一部の脆弱性を悪用しにくくしただけです。

Suhosin が行った変更の一部は、最終的に PHP に組み込まれました。たとえば、入力の null バイトに対する Suhosin のさまざまな保護層は、PHP 5.3.4 では不要になりました。PHP 5.3.4 では、ファイル名の null バイトは常にエラーをスローします (ファイル名を null バイトで静かに切り捨てるのではなく)。

PHP 5.4 は、一般的に、Suhosin が関与しなくてもかなり安全であると見なされています。今後は、アプリケーションがサポートしている限り、Suhosin パッチを適用した古いバージョンの PHP よりも、新しい (5.4+) バージョンの PHP を使用することをお勧めします。

于 2013-01-19T07:25:34.033 に答える
7

eval() (関数ではなく言語構造) を無効にできない場合、または eval 内にハッカーのツールボックスのほとんどを無効にするブラックリストがある場合、帯域幅を探しているハッカーにとって抵抗できない帯域幅の負荷を実行しています。ペイロードを実行します。サードパーティのモジュール作成者やフレームワークのコアでさえ、eval() コンテキスト内のこれらの関数のいくつかに依存しているため、理想的にはブラックリストに載せることが常にできるとは限りません。

suhosin.executor.eval.blacklist=include,include_once,require,require_once,curl_init,fpassthru,file,base64_encode,base64_decode,mail,exec,system,proc_open,leak,pfsockopen,shell_exec,ini_restore,symlink,stream_socket_server,proc_nice,popen,proc_get_status,dl,pcntl_exec,pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, socket_accept, socket_bind, socket_connect, socket_create, socket_create_listen, socket_create_pair,link,register_shutdown_function,register_tick_function,create_function,passthru,p_open,proc_close,proc_get_status,proc_terminate, allow_url_fopen,allow_url_include,passthru,popen,stream_select

これらの機能をフィルタリングできない場合は、セキュリティの主要コンポーネントが欠落しています。

脆弱なサード パーティ モジュールまたはサイト ユーザー アカウントを介してサイトに感染するリモート管理ツール (RATS) の例を次に示します。

RAT はさまざまな形式をとることができますが、grep で簡単に取得できるものもあります。

<?php error_reporting(0); eval(gzuncompress(base64_decode('eF5Tcffxd3 ...

<?php preg_replace("/.*/e","\x65\x76\x61\x6C\x28\ ...

一部はより専門的で難読化されており、実際には grep できず、実行したことを suhosin が通知しない限り見つけることができません。

<?php $_0f4f6b="\x70\x72\x65\x67\x5f\x72\x65\x70\x6c\x61\x63\x65";$_0f4f6b("\x7 ...

<?php require "./.cache/.%D59C%49AA%73A8%63A1%9159%0441"; ?>  

(この場合、CACHE ディレクトリをソース管理に含めることはできないため、追跡することもできません)

于 2013-05-07T21:24:14.817 に答える
1

私見ですが、Suhosin がなくても問題ないという上記の Duswwuff の声明は、信頼できるものでも、必ずしも正しいものでもありません (特に、それ以降、新しい PHP バージョンで見られた重大な穴の量を考えると)。

私の考えでは、Suhosin が現在の PHP バージョンで利用可能であれば、セキュリティの視点から見て、間違いなくより良いものになるでしょう。もちろん、そうではないので、PHP の古い (最終的には保守されない) バージョンにとどまることも解決策ではありません。

一般に、PHP、特に PHP アプリケーションは、セキュリティ上の問題があることで有名です...そのため、「Suhosin がなくても新しい PHP バージョンは安全か」という問題はあまりありません...

于 2013-03-15T01:59:05.663 に答える