setuidをファイルシステム機能に置き換える方法

setuidをファイルシステム機能に置き換える方法

からインスピレーションを受けるこの問題以下は次のとおりです。

一部の脆弱性は、これらのファイルを悪用して権限をrootに昇格させるため、setuidバイナリが危険であることを知っている人もいます。

setuidをより安全な別の方法で置き換える興味深いアイデアが浮かび上がっているようです。

どのように?

ベストアンサー1

Linuxのファイルシステム機能が追加され、setuidのみを使用する場合よりも細かく制御できます。ユーザー(通常root)に有効な権限を完全に昇格させるには、setuidを使用します。機能(7)マンページは次の説明を提供します。

権限検証を実行するために、既存のUnix実装では、権限のあるプロセス(有効なユーザーIDが0、スーパーユーザー、またはルートと呼ばれる)と権限のないプロセス(有効なUIDが0ではない)の2種類のプロセスを区別します。 。権限のあるプロセスはすべてのカーネル権限チェックをバイパスしますが、権限のないプロセスはプロセス資格情報(通常は有効なUID、有効なGID、および補足グループのリスト)に基づいて完全な権限チェックを受け取ります。

カーネル 2.2 以降、Linux は、従来、スーパーユーザーに関連する権限を独立して有効化および無効化する機能という複数の単位に分けられます。機能は各スレッドの属性です。

アプリケーションがchroot()(通常rootユーザーにのみ許可されている)を呼び出すことができる必要がある場合は、CAP_SYS_CHROOTsetuidの代わりにバイナリに設定できます。これはsetcapコマンドを使用して行うことができます。

setcap CAP_SYS_CHROOT /bin/mybin

〜のようにRPM バージョン 4.7.0、パッケージファイルに機能を設定するために使用できます%caps

Fedora 15ではリリース対象ここで追跡されているすべてのsetuidバイナリを削除します。エラーレポート。バグ報告によると、この目標は達成されました。

Wikipediaに関する記事機能ベースのセキュリティ興味のある人なら誰でも読むことができる良い本です。

おすすめ記事