最初に公開されたnginxサーバーを構成しました。/tmp/nginxフォルダーを使用して一時ファイルを保存するように設定しました。これには、http要求の本文、プロキシファイルなどが含まれます。/tmpフォルダは、nosuid、noexec、およびnodev特権を持つ外部パーティションにあります。この構成は潜在的に危険ですか?
最大の懸念は、攻撃者が一時ディレクトリを使用して実行可能コードを格納できることです。これは、システムを悪用する際に役立つ足がかりです。ほとんどの場合、/ tmpには非常にオープンな権限があり、どのプロセスでもそれらに書き込むことができます(chmod 777)。例として、MySQLのoutfileにチェーンされたローカルファイルインクルードの脆弱性を使用してPHP-Nukeでリモートのコーデックス実行を取得するために AppArmorをバイパスするときに、/ tmpのこのプロパティを利用しました 。ファイルのアップロードは一般的に/ tmpにも保存されます。これはPHPで LFI脆弱性がリモートコード実行に影響する にもなります。
プラットフォームに関係なく、2つの許可戦略を採用する必要があります。合理的な理由は、攻撃者があなたに対してあなたのアプリケーションを使用することであり、そのため、アプリケーションが実行できることによって制限されます。
Webアプリケーションは、Webルート内のファイルまたはフォルダー、またはアプリケーションの実行可能ファイルへの書き込みアクセス権を絶対に持ちません。攻撃者はこれを使用して、バックドアを導入したり、クライアントにドライブバイダウンロード攻撃を実行したりします。
Webアプリケーションは、アプリケーションのディレクトリ内のファイルにないコードを実行できないようにする必要があります。 決してeval()
を使用しないでください。これは多くの場合、汚いショートカットであり、リモートでコードが実行されます。 PHPでは、アプリケーションディレクトリ内のファイルのみを含めることができるように、 open_basedir 構成オプションを設定できます。eval()およびその他へのアクセスを拒否することもできます- exploitable php functionshardened-php を使用します。
ボックス上の他のユーザーがボックスのtmpフォルダーにアクセスできる場合、セキュリティに影響する可能性があります。
他のユーザーがアクセス権を持っている場合、tmpフォルダーを読み取り、セッションIDを抽出して、それをハイジャックします。
Tmpフォルダーは、Webサーバーのみに制限する必要があります。