セキュリティの設定ミス
セキュリティ設定ミスとは、不適切なコードではなく、アプリケーションの構成設定が原因で発生する一般的な脆弱性を指す包括的な用語です。これは多岐にわたるテーマであり、使用しているテクノロジースタックなどの要因に大きく依存します。
多くの場合、これらの問題への対処は、構成ファイルや1行のコードを変更するなど、簡単に思えるものですが、これらの脆弱性の影響と結果は深刻な場合があります。
以下のカテゴリのいくつかを見てみましょう。
カテゴリー
ウェブサーバー
ウェブサーバーでの典型的な設定ミスは、ディレクトリリストの有効化です。
多くの場合、ディレクトリリストを有効にしても直接的な影響はほとんどありませんが、攻撃者は他にも存在する可能性のある間違いを簡単に発見できます。これらには、意図的に非表示にしたページ、バックアップファイル、その他の類似アイテムなどが考えられます。
これらのこと自体も本質的に不適切なプラクティスであり、あいまいさからセキュリティと見なされることは注目に値します。
ディレクトリリストは簡単に無効にでき、攻撃者がホストに対する潜在的な攻撃ベクトルを見つけるためにホストを列挙するコストが高くなるため、防御が強化されます。
フレームワーク
デバッグモード
ほとんどのフレームワークは、開発者向けに「デバッグ」モードを提供しています。このモードでは、とりわけ、未処理の例外が発生したときにスタックトレースの詳細が表示されます。フレームワークによっては、スタックトレースの横にコードスニペットが表示されることもあります。これは開発中に非常に役立ちますが、攻撃者が実際にアクセスしてはいけない情報を大量に提供する可能性もあります。
エンドポイントの監視
多くのフレームワークには、本番環境でもテスト/開発環境でも、アプリケーションの監視を可能にする有効化可能なエンドポイントのセットもあります。
これらには次のものが含まれます。
- メトリクス (プロメテウス)
- ログ
- 環境情報
- パス/URL マッピング
この情報はそうではありませんが 通常 機密性が高く、潜在的な攻撃者がアプリケーションをよりよく理解するのに役立つ詳細情報を提供できます。もちろん、環境やログによっては 実際に 機密情報が含まれているため、覗き見された場合に何が目に見えて利用される可能性があるかに注意することが重要です。
本番環境と非本番環境の違い
開発/テスト環境では、ディレクトリリスト、デバッグモード、デバッグエンドポイントの無効化などのガイドラインに従わないという間違いを犯す人がよくいますが、これは本番環境でのみ行います。その理由は、これらの非本番システムはテスト用であり、これらの機能によって提供される情報を取得することが重要であるということです。
しかし、この考え方は見当違いです。攻撃者は、本番システム以外のシステムから情報を調べて開示し、テストシステムから収集した情報を利用して本番システムを攻撃することはまだ可能です。また、本番環境のデータベースのコピーをテストシステムで使用している企業も珍しくなく、リスクはさらに高まります。
XXE
非常に深刻なセキュリティ設定ミスの 1 つに、XML 外部エンティティ (XXE) があります。
これは、これまでそうであったエンティティ解決を有効にして、信頼できないソースから解析した場合に発生します。XXE は、とりわけ、任意のファイルの読み取りやサーバー側のリクエスト偽造を引き起こす可能性があります。
詳細については、以下の例と、特にこの例の簡単な例を確認してください。
Secure coding made practical
Explore secure coding guidelines to understand and mitigate software vulnerabilities like the OWASP Top 10, and dive into guided training Missions to practices in real-world app simulations.