システムコールとセキュリティが密接に関連していないことは知っていますが、私がそれを必要としているプロジェクトがあります。私は小さなコードチェッカーを書いています。テストケースに対してテストするには、ユーザーが送信したコードをコンパイルして実行する必要があります。
基本的に、コードをサンドボックスで実行して、一時ディレクトリ外のファイルにアクセスしたり、作成したファイルに外部からアクセスしたりできないようにします。shell.php
最近、ユーザーが次の内容のファイルを作成できるエクスプロイトに遭遇しました。
<?php
echo system($_GET['x']);
?>
これにより、攻撃者はリモートシェルを利用でき、ファイルの所有者はApacheであるため、攻撃者は基本的に/var/www
、mysqlパスワードが他の構成情報とともに保存されている場所全体を移動できます。
私はSQLインジェクションのような脅威を認識しており、DBを含む操作の前にユーザー入力をサニタイズしましたが、サンドボックスをどのように設定できるかわかりません。システムコールを無効にし(現在、ユーザーが送信したコードで「system」という単語を検索していて、見つかった場所でそれらのスニペットを実行しない)、ユーザーがファイルへのアクセスを制限するために使用できる手法は何ですか?送信されたコードが作成します。
現在のところ、私のコードチェッカーはCでのみ機能し、セキュリティで保護した後、C ++、Java、Ruby、Pythonなどの他の言語のサポートを追加する予定です。また、私が遭遇したこの問題についてもっと知りたいので、Webセキュリティについてもっと学ぶことができる場所へのポインタもいただければ幸いです。
私の開発マシンはMacOSLionを実行しており、デプロイメントマシンはLinuxサーバーであるため、クロスプラットフォームのソリューションが最も高く評価されますが、Linuxマシンのみを処理するソリューションも同様です。