Linux Daily Topics

SUIDからの脱却を ―systemdクリエーター⁠⁠⁠sudoオルタナティブな“run0”コマンドをsystemd 256で実装へ

UbuntuやFedoraなどメジャーなLinuxディストリビューションのほとんどがデフォルトで実装しているinitシステム「systemd」は現在、新バージョン「systemd 256」に向けて開発が進められている。4月25日には最初のリリース候補版「systemd 256-rc1」が公開された。

数多くの新機能や追加機能が盛り込まれているが、その中でもとくに注目されるのがsudoコマンドを代替するという「run0」である。実際には新しいツールではなく、以前からある「systemd-run」「run0」というシンボリックリンクで呼び出し、sudoクローンとして機能させるのだが、sudoとの大きな違いは「run0はSUIDではないこと」だとsystemdクリエーターのLennart Potteringは自身のMastodonで説明している。

Potteringは一連の投稿で「sudoは非常に便利だが、sudoの最大の問題点はそれがSUIDバイナリであるという事実。攻撃対象領域が大きく、プラグインネットワークアクセスなどに重要な問題が生じる」⁠SUIDは非常に奇妙な概念。⁠SUIDプロセスであるsudoは)非特権ユーザであっても独自のコンテキストから呼び出すことができる特権コードで構成されている」とSUID/sudoへの疑念を示しており、⁠僕の理想的な世界では、SUIDをまったく使用しないOSが存在する。systemd 256はそれに向けて一歩前進する」とrun0を開発した理由を明かしている。

このためrun0ではSUIDバイナリやその他の権限昇格方法を使わず、システムサービスマネージャ(systemd)に対し、指定されたコマンドを一時的なユニットとして実行するように要求する。つまり「ターゲットユーザのIDでコマンドを作成して新しいPTYを割り当て、もとのTTYと新しいPTYとの間でデータをやりとりするよう、サービスマネージャに要求する。承認はPolkit経由で管理される」⁠Pottering)ことで、より堅牢なセキュリティを実現できるとしている。

またrun0では、昇格した特権で作業している間は端末の背景が赤みがかった色調に、それ以外は黄色がかった色調になるようデフォルトで設定されており、⁠特権を放棄していないことを示すわかりやすい通知として機能する」⁠Pottering)といった使い方もできるという。

「run0は多くの点でsudoよりもsshの動作に近い」⁠Pottering)というSUIDからの脱却をめざしたrun0、開発が順調に進めば、年内にはいくつかのディストリビューションで試すことができそうだ。

おすすめ記事

記事・ニュース一覧