
セキュリティ設定の不備
セキュリティ設定の不備とは、ある種の包括的な用語であり、コードの不備ではなくアプリケーションの設定パラメータに起因して生じる一般的な脆弱性を指します。これは非常に多岐にわたるテーマであり、技術インフラなどの要素に大きく依存します。
これらの問題の解決策は、設定ファイルの変更やたった1行のコード修正のように単純に見えることがよくありますが、これらの脆弱性の影響と結果は深刻なものとなり得ます。
以下のカテゴリの一部を見てみましょう。
カテゴリー
Webサーバー
ディレクトリリストの有効化は、Webサーバーにおける典型的な設定ミスです。
ディレクトリリストの有効化は直接的な影響がほとんどないか全くない場合が多いものの、攻撃者が他の潜在的な脆弱性を容易に発見することを可能にする。これには意図的に隠されたページ、バックアップファイル、その他の類似要素が含まれる可能性がある。
なお、これらすべてはそれ自体、本質的に悪しき慣行であり、闇に紛れる安全策と見なされるものであることに留意すべきである。
ディレクトリ一覧の無効化は非常に簡単であり、防御を強化します。攻撃者がホストに対する潜在的な攻撃ベクトルを見つけるためのホスト列挙を困難にすることで、攻撃コストを増加させるためです。
デバッグモード
ほとんどの開発者向けフレームワークは「デバッグ」モードを提供しています。このモードでは、未処理の例外が発生した際にスタックトレースの詳細を表示するほか、フレームワークによってはスタックトレースの横にコードの抜粋を表示することもあります。これは開発中に非常に有用ですが、攻撃者が本来アクセスすべきでない多くの情報を提供してしまう可能性もあります。
監視エンドポイント
多くのフレームワークには、有効化可能な一連のエンドポイントも備わっており、これにより本番環境でもテスト/開発環境でもアプリケーションを監視することが可能となります。
具体的には以下の要素が挙げられます:
- メトリクス(プロメテウス)
- 新聞
- 環境に関する情報
- パス/URLのマッピング
これらの情報は通常機密情報ではありませんが、それでも潜在的な攻撃者がアプリケーションをより深く理解するのに役立つ情報を提供する場合があります。もちろん、環境やログには実際に機密情報が含まれている可能性があるため、第三者の目に触れた場合に可視化され悪用される可能性のある情報には注意を払うことが重要です。
本番環境と非本番環境の区別
ユーザーはしばしば、ディレクトリリストの無効化、デバッグモード、デバッグ終端ポイントといった指示に従わないという過ちを犯します。これらは開発/テスト環境では適用せず、本番環境でのみ実施する傾向があります。その理由は、これらの非本番システムはテストを目的としており、これらの機能が提供する情報を取得することが重要だからです。
しかし、この考え方は誤りである。攻撃者は常に、本番環境向けではないシステムから情報を収集・漏洩させることが可能であり、テストシステムで収集した情報を用いて本番システムを攻撃する。また、テストシステムに本番データベースのコピーを使用している企業も珍しくなく、これによりリスクはさらに高まる。
ゼクセ
外部XMLエンティティ(XXE)は、非常に深刻なセキュリティ設定の不備の一種である。
これは、エンティティ解決が有効な状態で信頼できないソースから解析を行う場合に発生します。これは従来から常に発生する現象です。XXEは、ファイルの任意読み取りやサーバーサイドでのリクエスト改ざんなどを引き起こす可能性があります。
詳細およびこの特定の例に関する簡単な例については、以下の例を参照してください。