問題タブ [seccomp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - seccomp によってホワイトリストに登録されたシステムコールを見つける
そこで、seccomp を使用していくつかのシステムコールを除外する C のプログラムを偶然見つけました。ブルートフォース以外に、実際に許可されているシステムコールを見つける方法はありますか。
前もって感謝します
linux - オンライン審査員のためのサンドボックス
ユーザー (競技者) から受け取った信頼できないコードを実行する Linux アプリケーションを開発しました。より具体的には、アプリケーションはオンライン審査員であり、UVa OJ、SPOJ、Codeforcesのようなものですが、主にBOCA オンライン コンテスト管理者のようなものです。私の OJ は、C、C++、Java、および Python をサポートしています。
現在、私の OJ は非常に安全ではありません。これは、信頼できないコードを実行するときにサンドボックス化が行われないためです。だから私はそれを行うための最良の方法を探しています。ソリューションの主な要件は次のとおりです。ユーザー (競技者ではなく、コンテストを設定する人) は、アプリケーションの設定にできるだけ労力を費やさないようにする必要があります。git clone repo
、make
、sudo make install
、
pjudge install <contest_dir>
、cd <contest_dir>
いくつかのファイルを変更.txt
し、秘密のテストケースを中に入れてproblems/
、pjudge start <port>
もう多すぎると思います。
まず第一に、chroot(2)
/を使用したソリューションを考慮して、ユーザーにルートディレクトリのセットアップを強制するよりも、ソフトウェアを安全でないままにしたいと思いますchroot(8)
。このソリューションは、開発者およびユーザーとして、私がこの個人的なプロジェクトで喜んで苦しむよりも苦痛です。
ptrace(2)
また、プロセスが禁止されたシステムコールを行った場合にプロセスを強制終了するという解決策も検討しました。簡単なコードを試して動作するかどうかを確認しましたが、一部のシステムコールでは正しく動作しないようでした。また、多くのシステムコールをフィルタリングする必要があると思います...そして、JVM / Pythonランタイムが必要とするシステムコールがわかりません...このソリューションが機能するかどうかはわかりません。誰かがこのソリューションを適切に使用する方法を知っている場合は、助けてください!
そして、私も見つけましseccomp(2)
た。read(2)
これにより、プロセスは、write(2)
、_exit(2)
およびのみを呼び出すことができますsigreturn(2)
。この解決策は素晴らしいようです。私のアプリケーションに実装するのは簡単で、必要に応じて正確に動作するはずです...ただし、C および C++ のみです。Java と Python が再び問題になります。このソリューションが後者の 2 つの言語でどのように機能するかはわかりません。ソース コード (ちなみに C++ です) でfork(2)
+ exec(2)
/を使用していることを考えると、system(3)
どんな助けでも本当にありがたいです。ptrace(2)
/を使用するための正しい/効果的な方法seccomp(2)
、または私が見逃している他の解決策かもしれません。しかし、私の唯一の要件を満たす何かをお願いします! ユーザーがアプリケーションをセットアップするのは、非常に簡単、単純、かつ高速でなければなりません。
前もって感謝します!
ubuntu-14.04 - openssh の seccomp フィルターのルールを変更する方法
OpenSSL 1.0.1f で OpenSSH_6.6p1 をインストールしました。正常に動作しています。sandbox-seccomp-filter
OpenSSH_6.6p1 には があります。OpenSSH が特定のシステム コールをフィルタリングできるように、フィルターのルールを変更してからフィルターを再度実装する方法を教えてください。
linux-kernel - BPF を使用してカーネル関数の引数をフィルタリングする方法は?
Berkeley Packet Filter (BPF) を使用してカーネルで関数の引数をフィルタリングする方法は? 関数は、システム コールだけではなく、インライン以外の関数である必要があります。また、検証のために関数の引数内のポインターを逆参照できるようにすることをお勧めします。
インターネットで検索しましたが、使用例が見つかりません。ほとんどの資料は、seccomp / seccomp-BPF の使用方法のみを説明しています。
フックを実装するために eBPF と kprobe/jprobe が統合されているようです。しかし、ウェブ上で良い例を見つけることができません。
seccomp - Seccomp: 次のプログラムがデッドロックになるのはなぜですか?
私は簡単なテストプログラムを持っています:
これは、Ubuntu 16.04 で何も出力せずにデッドロックします。seccomp のドキュメントを読んでも、なぜこのようなことが起こるのかわかりません。なぜですか?SIGKILL はプロセス全体を強制終了しませんか?
concurrency - Rustでのプロセス分離
プロトコル用のサーバーを実装したいと考えています。セキュリティ上の理由から、パーサーは独自のスレッドでプログラムの残りの部分から分離する必要があり、双方向チャネルのみを通信用に開いておく必要があります。
パーサー スレッドは、他のスレッドのメモリを変更する可能性を失い、syscall を実行する権限を失います (seccomp を使用)。
Rust のパーサー スレッドでこの動作を実現する簡単な方法はありますか?