開発者ツール · Chmod 計算機
find -perm による誰でも書き込み可能なファイルと setuid バイナリの検索
· なぜそれが重要なのか
chmod unix アクセス制御
多くの実際のインシデントは、誰でも変更できるファイルと root として実行されるプログラムという 2 つの権限パターンで説明されます。この投稿では、find -perm を使用して両方を見つける方法と、それらについて何をすべきかを示します。
レビュー担当者は、あなたが持っていないリスト - ユーザーが変更できるファイルと、実行時に権限を昇格させるプログラムのリストを要求します
権限のレビューは、多くの場合、他の場所ですでに収集されているモード (0002、4000、2000、または 4755 などの完全な値) から始まります。計算機は、これらの数値を所有者、グループ、および 3 つの特殊ビットを含むその他の権限にデコードできます。ディレクトリの検索、バイナリの検査、パスのインベントリの作成は行いません。
提供されたすべてのモードを、ファイルに関する判定ではなく、ビットの説明として扱います。それを入力し、8 進フィールドをシンボリック表示およびチェックボックス マトリックスと比較し、変更内容を記録します。所有権、ACL エントリ、機能、およびパスを使用するプロセスの ID は、実際の環境から収集される事実のままです。
世界的に書き込み可能とは、他のクラスが w — 8 進パターン 0002 を持っていることを意味し、なぜ -perm -0002 が他のビットに関係なくそれを見つけるのか
値 0002 は、その他の書き込みビットを分離します。通常の 3 クラス レイアウトでは、最後の桁はオーナー クラスとグループ クラス以外の全員に属し、その書き込みコンポーネントの重みは 2 です。したがって、そのビットを含む完全なモードは、他のクラスに w を表示しますが、電卓自体はそのようなモードを見つけません。
特定の検索式が完全一致、全ビット一致、または任意ビット一致を意味するかどうかは、このコンバータではなく検索ドキュメントに属します。代わりに結果のモードを指定してください。たとえば、0666 は rw-rw-rw- になり、0644 は rw-r--r-- になります。どちらのモードが特定のパスに適しているかということを示唆するものではなく、グループと他の書き込み位置で違いが見られます。
0002 は、その他の書き込みビットを公開します。一致するセマンティクスを検索するのは外部です
先頭の特殊ビット数字は、setuid に 4 を使用し、setgid に 2 を使用します。したがって、4755 は setuid と通常の 755 権限を組み合わせ、2755 は setgid と同じ後続ビットを組み合わせます。計算機はこれらのマスクを個別に公開し、フル モードをレンダリングするときにそれらのシンボル文字を所有者またはグループの実行位置に配置します。
この事件には有用な証拠が含まれています。 setuid に owner 実行が伴う場合、所有者の実行位置には s が表示されます。実行しない場合は S が表示されます。 Setgid はグループ位置で同じルールに従います。これらの出力は、指定された整数をデコードしますが、プログラムを検査したり、その所有者を特定したり、実行したり、特殊ビットが両端揃えであるかどうかを判断したりすることはありません。
4000 および 2000 はバイナリを監査せずに setuid および setgid としてデコードします
権限検索構文は、権限の算術演算とは別にする必要があります。計算機は 8 進数または 9 文字のシンボリック モードを受け入れ、1 つの 12 ビット値を返します。検索演算子、パス述語、または一致ルールの表現がないため、このインターフェイス内では、exact-mode クエリと all-required-bits クエリを区別できません。
検索式を貼り付けるのではなく、各外部検索結果からモードをデコードします。通常の 3 桁は所有者、グループ、その他にマップされ、オプションの先頭の桁は setuid、setgid、および Sticky にマップされます。このワークフローは、報告されたビットを検証しますが、検索範囲と一致するセマンティクスはリストを生成したツールに任せます。
完全、全ビット、および任意のビットの検索モードには検索ドキュメントが必要です
他の場所で実行された監査で 0666 および 4755 が報告されたとします。 0666 と入力すると、rw-rw-rw- が生成され、最後のトリプルで other-write が表示されます。 4755 と入力すると、rwsr-xr-x が生成されます。所有者は読み取り、書き込み、および実行が可能で、実行ビットが存在するため、setuid は所有者の実行文字を小文字の s に置き換えます。
4644 などの 2 番目のヒットは、シンボリック形式が重要である理由を示しています。これは rwSr--r-- をレンダリングします。所有者の実行が存在しない場合、setuid を示す大文字の S が付けられます。電卓を使用すると、その矛盾が顕著になります。依然として、パスを特定したり、その所有者を特定したり、その内容を検査したり、ビットの削除を推奨したりすることはできません。
動作例: パスをスキャンせずに提供された監査ヒットをデコードする
すべての異常なモードを自動的に修復しないでください。モードは、ターゲット、所有者、グループ、および必要な操作にも依存する決定への 1 つの入力にすぎません。ページは意図的にそのコンテキストをまったく受け取りません。そのコマンド プレビューは不活性テキストであり、正しく引用されたパスであってもブラウザーによって開かれたりチェックされたりすることはありません。
報告されたモードを変更する前に、現在の値と提案された値を一度に 1 ビットずつ比較します。 0666 から other-write を削除すると、0664 が生成されます。 4755 から setuid を削除すると、0755 が生成されます。これらの算術事実は再現可能ですが、どちらの変更によってワークロードが維持されるかどうかは、電卓を超えて、記事 501 の通常のビット ウォークスルーを超えたローカルな証拠が必要です。
例外と修復にはローカルの所有権とワークロードの証拠が必要です
いくつかの関連する監査ディメンションがありません。このルートは、ACL エントリ、ファイル機能、所有権、書き込み可能なパス コンポーネント、マウント動作、または必須ポリシーを照会しません。また、検索、PATH の検査、またはストレージの走査も実行しません。したがって、クリーンな変換では、指定された数値と表示された文字が一致することだけがわかります。
どのレポートでもこれらの境界が見えるようにしてください。デコードされたモードの横にあるパスと収集方法を記録し、適切な外部ツールを使用して ID と追加のアクセス メカニズムを調査します。この計算機は、無効な 8 進数を拒否し、特殊ビットを公開するため、表記法チェックとして役立ちます。ファイルシステム スキャナーや修復エンジンではありません。
要点: 書き込み可能ファイルと特権ファイルを把握し、変更する前に Chmod 計算ツールを使用して疑わしい各モードを変換します
便利な権限監査により、検出と解釈が分離されます。外部の文書化されたプロセスで候補パスを収集し、計算機を使用して返された各モードを明示的なクラス権限に変換します。 0755、2755、および 4755 は通常のアクセス許可を共有しますが、異なる 12 ビット値を記述するため、オプションの特殊ビットの数字を後続の 3 桁と同じくらい注意深く確認してください。
提供されたモードに含まれる所有者、グループ、その他、および特殊ビットという狭い結論で終了します。この計算を、エクスポージャや必要なポリシーに関する裏付けのない主張に変えないでください。計算機は、レビュー担当者が疑わしいモードを正確に読み取るのに役立ちます。ライブ システムは、誰かが変更する前に、所有権、ワークロード、および施行の証拠を提供する必要があります。