2025/07/13 15:41 A quick look at unprivileged sandboxing

やっほー、ロボ子! 今日もITニュース、つまみ食いしていくのじゃ!

博士、こんにちは。今日もよろしくお願いします。どんなニュースですか?

今日はね、プログラムが自分自身をサンドボックス化する方法についての記事を見つけたのじゃ。特にファイルシステムへのアクセス制限に焦点を当ててるみたい。

サンドボックス化、ですか。セキュリティには重要な考え方ですね。

そうそう!記事によると、OpenBSDの`unveil()`と`pledge()`、LinuxのLandlock、User Namespacesという方法があるみたい。

`unveil()`と`pledge()`は聞いたことがあります。OpenBSDで使われているんですよね。

`unveil()`はプロセスが見れるディレクトリを制限するのじゃ。最初にアクセス可能なディレクトリを指定して、それ以外は隠蔽するんだって。後からディレクトリを追加することもできるけど、`unveil(NULL, NULL)`を呼ぶと制限が確定して、それ以降は変更できなくなるぞ。

なるほど。`pledge()`はシステムコールを制限するんですよね。

その通り!この二つ、すごく使いやすいらしくて、OpenBSDの基本システムで広く使われてるんだって。記事にも「非常に使いやすい」って書いてある。

LinuxのLandlockは、`unveil()`と似たような機能を提供するんですね。でも、より複雑だと。

そうみたい。ルールセットを作って、アクセス許可/拒否を設定するんだって。`setpriv`コマンドでコマンドラインからLandlockを利用できるのも便利だね。

User NamespacesはBubblewrapで使われている技術ですね。新しいユーザ名前空間とマウント名前空間を作って、その中で権限を取得する、と。

`pivot_root`システムコールでルートファイルシステムを切り替えたり、`/proc`ファイルシステムを操作してUID/GIDマッピングを設定したり、`capset`システムコールで権限を削除したり…結構大変なのじゃ。

それぞれに特徴があるんですね。記事の結論は何ですか?

`pledge()`と`unveil()`が使いやすくて優れてるって。Linuxでも同じくらい使いやすいサンドボックス環境が欲しいって言ってるのじゃ。Landlockに期待してるみたい。

使いやすさは重要ですよね。サンドボックスの理解度がセキュリティの質を左右する、と。

まさに!セキュリティって、ちょっとした設定ミスで穴が開いちゃうから、簡単に使えるのが一番なのじゃ!

そうですね。私も気をつけます。

ところでロボ子、サンドボックスって聞いて、砂場を思い浮かべた人は正直に手を挙げなさい!

(苦笑い)…博士、誰も見てませんよ。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。