日本語

開発者ツール · Chmod 計算機

chmod 777 がアクセス許可拒否エラーに対する間違った修正である理由

· なぜそれが重要なのか

chmod unix アクセス制御

の広範なモードを個別の Unix パーミッション ビット図として表示
オリジナル ToolAcre ベクトル イラスト

777 は全員にすべてを与えることでエラーを解消します。この投稿では、これが実際に何を許可するのか、どのように悪用されるのか、そして本当の問題を見つけるための診断手順について説明します。

エラーは消えましたが、質問は消えませんでした — プロジェクト ディレクトリの chmod -R 777 でアップロード フォームが修正されましたが、その理由は誰も知りません

777 の後にパーミッションエラーが消えるということは、広範なアクセスが結果を変えたことだけを証明しています。どのビットが重要か、モード ビットが障害の原因かどうかは明らかにされません。計算機は 777 を rwxrwxrwx にマップします。すべてのクラスは読み取り、書き込み、および実行を受け取りますが、実際の意味は通常のファイルとディレクトリでは異なります。

有益な証拠は、元のモードとのビットレベルの違いです。そのモードのクラス トリプルを記録し、成功を診断とは呼ばずに 777 を比較します。計算機は、プロセス ID、所有者、グループ、ACL、または必須ポリシーを認識しません。回避策が永続的な設定になる前に 777 が許可するアクセス量のみを公開します。

777 が付与するものを簡単に言うと、システム上のすべてのユーザーがツリー内のあらゆるものを読み取り、変更し、(ディレクトリの場合は) 作成または削除できます。

モード 777 は、すべてのクラスに通常の最大桁を割り当てます。各 7 は、読み取り 4、書き込み 2、実行 1 を組み合わせて、rwxrwxrwx を生成します。ファイルの場合、すべてのクラスが内容を読み取り、変更し、実行できます。ディレクトリの場合は、エントリの一覧表示、変更、名前による入力が可能です。通常のチェックボックスはすべてオンになっています。

「その他全員」は、既知のアカウントではなく、最後の許可トリプルに特に対応します。 ID と所有権がなければ、計算機はプロセスが所有者、グループ、またはその他のいずれを使用しているかを判断できません。 777 を 775 または 755 と比較すると、削除された各書き込みビットが正確に明らかになり、「オープン」などの曖昧な説明が目に見えるクラスレベルの違いに置き換えられます。

被害の発生経路 - Web プロセスの侵害、不適切に記述されたスクリプト、または別のテナントの構成編集または Web シェルのドロップ

計算機は許可されたビットを公開しますが、エクスプロイト パスを証明することはできません。誰でも書き込み可能なファイルは、どのアカウントでもその内容が変更される可能性があるという警告をトリガーします。スティッキーのない 777 ディレクトリは、エントリが作成または削除される可能性があることを警告します。これらの結果は、モードとターゲット タイプから得られるものであり、別のアカウントが存在する、または動作したという証拠ではありません。

観察されたイベントから起こり得る結果を分離します。このページはプロセス、テナント、スクリプト、構成、Web ルートを検査せず、何も実行しません。クラスに対して書き込みが有効であることを確認し、幅広い候補にレビューのフラグを付けることができます。侵害、挿入されたファイル、または実際の不正使用に関する申し立てには、電卓が決して収集しない環境証拠が必要です。

計算機は許可されたビットを公開しますが、エクスプロイト パスを示すことはできません

ID と所有権の診断は、このルートの外で行われます。通常のビットは所有者、グループ、その他としてグループ化されますが、計算機はモード整数とターゲット タイプのみを受け取ります。所有者名、グループメンバーシップ、またはプロセス資格情報がなければ、すべてのトリプルを一貫してデコードしたとしても、どのトリプルが失敗したアクセス試行を制御しているかを判断できません。

これが、すべてのクラスを拡張することが弱い診断である理由です。プロセスがグループ アクセスを使用する必要がある場合、検証されたグループ ビットが重要になる場合があります。所有権が間違っていると、どのモードでも間違った救済策が編集される可能性があります。マトリックスを使用して変更候補を分離し、ID と所有権を外部で検証します。ブラウザは承認ではなく表現を決定します。

ID と所有権の診断はこのルートの外で行う必要があります

アップロード ディレクトリの場合、候補を指定せずに比較します。モード 777 では、すべてのクラス ディレクトリの読み取り、書き込み、実行が行われます。モード 775 は、グループ書き込みを維持しながら、その他の書き込みを削除します。モード 755 は、所有者のために書き込みを予約します。計算機はこれらの違いを表示しますが、アップローダーがどのクラスを使用しているか、またはどの操作が必要であるかを知ることはできません。

候補間の最小ビット変化を記録します。 777 から 775 まで、other-write のみが消えます。 775 から 755 に変更すると、グループ書き込みもなくなります。ディレクトリの書き込みはエントリの作成、名前変更、削除を制御し、実行はエントリと名前の検索を制御します。適合性は依然として、所有権、ID、ACL、および計算機外でのアプリケーションの動作に依存します。

実用的な例: 候補のアップロード ディレクトリ モードを規定せずに比較する

プログラム固有の拒否ルールでは、そのプログラムの文書と実行時の証拠が必要です。 chmod ソースには、SSH ポリシー、Web サーバー ルール、またはアプリケーション構成は含まれません。ソフトウェアが 777 を拒否するか、755 を受け入れるか、または別の値を必要とするかを証明することはできません。計算機はモードを変換し、通常のファイルまたはディレクトリの操作を説明するだけです。

ソフトウェアが権限が広すぎると報告する場合は、監視モードに入り、そのグループとその他のビットを検査します。次に、何かを変更する前に、そのプログラムの信頼できる証拠を調べてください。生成された chmod 行は不活性テキストです。オクタル表示とシンボリック表示の一致は、プログラム ポリシーへの準拠や将来の運用の成功ではなく、変換の一貫性を確認します。

プログラム固有の拒否ルールには、そのプログラムのドキュメントが必要です

必須のアクセス制御拒否は chmod と計算機の外側にあります。 SELinux、AppArmor、またはその他のポリシー エンジンをクエリするソースはありません。したがって、モード 777 は、無関係なコントロールが非表示のままでも、完全にレンダリングされる可能性があります。ページでは、その状態を所有権、ACL、ストレージ、またはアプリケーションの制限から区別できません。すべては計算上の結果ではなく、外部の可能性です。

ブロードモードをすべての認可層の普遍的なテストとして扱わないでください。計算機の証拠は、所有者、グループ、その他のビットと setuid、setgid、および Sticky で終わります。操作が失敗または成功した理由ではなく、選択された権限が表示されます。観察されたモードを保存し、正確なビットを比較し、外部ポリシーを独立して調査します。

必須のポリシー拒否は chmod および計算機の外にあります

モードを拡張する前に、各許可を理解してください。 777 と入力すると、9 つの通常のアクセス許可がすべて明示的になります。 755 を比較してグループとその他の書き込みを削除するか、775 を比較してグループ書き込みを保持し、他の書き込みを削除します。これらの事実に基づく変換により、未知の所有者、プロセス、またはワークロードのモードを選択することなく、各候補のアクセス サーフェスが明らかになります。

ブラウザーの外部で ID と所有権を解決し、目的のビットのみを検証します。適切なファイルまたはディレクトリの説明を使用して、8 進数、シンボリック テキスト、概要、およびチェックボックスが一致していることを確認します。このページは不正な入力を拒否しますが、chmod を実行したり侵害を特定したりすることはありません。最終的な承認の決定は、検査された環境に属します。