セキュリティの設定ミス
セキュリティの誤設定とは、悪いコードではなく、アプリケーションのコンフィギュレーション設定に起因する一般的な脆弱性を網羅する包括的な用語のようなものです。 これは広範なテーマであり、あなたの技術スタックのような要因に大きく依存します。
多くの場合、このような問題への対処は、設定ファイルやコードの1行を変更するような簡単なことのように思えるが、このような脆弱性の影響や結果は深刻なものになる。
以下、いくつかのカテゴリーを見てみよう。
カテゴリー
ウェブサーバー
ウェブ・サーバーにおける典型的な設定ミスは、ディレクトリ・リスティングを有効にすることである。
Directory Listingが有効であることによる直接的な影響はほとんどないことが多いが、攻撃者は他のミスを発見しやすくなる。意図的に隠されたページ、バックアップファイル、その他似たようなものなどだ。
これらのこと自体も、本質的に良くないやり方であり、不明瞭さによるセキュリティとしてカウントされることは注目に値する。
ディレクトリ・リスティングを無効にするのは簡単で、攻撃者がホストに対する潜在的な攻撃ベクトルを見つけるために、ホストを列挙するのに多くの費用がかかるようにすることで、深層防御を追加する。
フレームワーク
デバッグモード
ほとんどのフレームワークは、開発者向けに「デバッグ」モードを提供している。このモードは、とりわけ、処理されない例外が発生したときにスタックトレースの詳細を表示するのが普通だ。フレームワークによっては、スタックトレースと一緒にコードのスニペットまで表示してくれるものもある。これは開発中に非常に役に立つが、攻撃者に、本当はアクセスすべきではない多くの情報を提供することにもなる。
エンドポイントのモニタリング
また、多くのフレームワークは、本番環境であろうとテスト/開発環境であろうと、アプリケーションのモニタリングを可能にするエンドポイントのセットを持っている。
これには以下のようなものがある:
- メトリクス(プロメテウス)
- 過去ログ
- 環境情報
- パス/URLマッピング
これらの情報は、通常、機密情報ではありませんが、潜在的な攻撃者があなたのアプリケーションをより良く理解するのに役立つ詳 細を提供します。もちろん、あなたの環境やログは実際に機密情報を含んでいるかもしれません。
本番環境と非本番環境の区別
開発/テスト環境では、ディレクトリ一覧、デバッグ・モード、デバッグ・エンドポイントを無効にするなどのガイドラインに従わず、本番環境でのみそうするという間違いをよく犯す。 その理由は、これらの非本番システムはテスト用であり、これらの機能によって提供される情報を得ることが重要だからである。
しかし、この考え方は間違っている。攻撃者は依然として、本番システム以外から情報を探り出し、開示することが可能であり、テスト・システムから収集した情報を利用して、本番システムを攻撃することができる。また、テスト・システムで本番用データベースのコピーを使用している企業も珍しくなく、リスクはさらに高まります。
ゼクセ
非常に深刻なセキュリティの誤設定の1つに、XML外部エンティティ(XXE)がある。
これは、信頼されていないソースから、歴史的にそうであった、エンティティ解決を有効にして解析した場合に発生します。XXEは、特に、任意のファイルの読み取りや、サーバサイドリクエストフォージェリにつながる可能性があります。
詳細と、特にこの簡単な例については、以下の例をチェックしてほしい。