問題タブ [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.
sandbox - エラー: 'scmp_filter_ctx' はこのスコープで宣言されていません
コンパイル エラーが発生しています: error: ‘scmp_filter_ctx’ was not declared in this scope
.
seccomp フィルターを宣言しました。
scmp_filter_ctx ctx;
私はライブラリを含め、すでにライブラリを使用し
#include <linux/seccomp.h>
てインストールしています。libseccomp-dev
sudo apt-get install libseccomp-dev
linux - Linuxでseccompをバイパスする方法
プロセスが seccomp を使用し、終了、読み取り、書き込みに制限されている場合でも、害を及ぼす可能性はありますか? できるとすれば、どうすればそのようなシステムを悪用できるのでしょうか?
c - SECCOMP_RET_DATA と PTRACE_GETEVENTMSG を使用してシステムコールのリターン コードを取得する方法
ptrace + seccomp を使用して syscall の戻り値を取得しようとして、少し混乱しています。
男 4 bpf言います:
男 2 ptrace 言います:
男 2 seccomp 言います:
BPF_RET
BPF プログラムは、ステートメントの後で何かを実行できないことがわかりました。そのため、tracee が中断されSECCOMP_RET_TRACE
たsyscall-enter-stop
状態であり、syscall がまだ行われていない場合、戻りコードはどこにもありません。後続の呼び出しの後PTRACE_SYSCALL
、 tracee はsyscall-exit-stop
状態になり、 tracer は を使用して syscall の結果を取得できると期待していますPTRACE_GETEVENTMSG
。しかし、私のサンプルでは機能しません。
レジスタを検査しているシステムコールの戻りコードを取得できます
しかし、ドキュメントで指定された方法でそれを行う方法が気になります。
privileges - seccomp で no_new_privs ビットが必要なのはなぜですか? 理論上の悪用の例
私は、seccomp モード フィルターを使用する前に、このビットを設定する必要があることを見てきました。これは、子プロセスが親のプロセスよりも大きな特権で実行できないことを保証するためです。しかし、まだ悪用の例を理解できません。1つ見せてもらえますか?
理論的なシナリオ: no_new_privs ビットを設定せずに seccomp フィルター モードを設定できるプログラムがあります。
目標:それを悪用するプログラムを示す
この要件により、特権のないプロセスが悪意のあるフィルターを適用してから、execve(2) を使用して set-user-ID またはその他の特権プログラムを呼び出し、そのプログラムを危険にさらす可能性がないことが保証されます。(このような悪意のあるフィルターは、たとえば、setuid(2) を使用して呼び出し元のユーザー ID をゼロ以外の値に設定し、実際にはシステム コールを行わずに 0 を返すように試みる可能性があります。したがって、プログラムはだまされてスーパーユーザー特権を保持する可能性があります。実際に権限を落としたわけではないので、影響を与えて危険なことをさせる可能性のある状況で。)