San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
San Antonio API Security Summit 2025 に参加しよう!
閉じる
プライバシー設定
ウェブサイト運営に必要なCookieや類似技術を使用しています。追加のCookieは貴社の同意がある場合のみ利用されます。同意は「Agree」をクリックすることでいただけます。どのデータが収集され、どのようにパートナーと共有されているかの詳細は、Cookieポリシープライバシーポリシーをご確認ください。
Cookieは、貴社デバイスの特性や、IPアドレス、閲覧履歴、位置情報、固有識別子などの特定の個人情報を取得、解析、保存するために使用されます。これらのデータは様々な目的で利用されます。分析Cookieによりパフォーマンスを評価し、オンライン体験やキャンペーンの効果向上に役立てます。パーソナライズCookieは、利用状況に応じた情報やサポートを通じ、貴社専用の体験を提供します。広告Cookieは、第三者が貴社のデータをもとにオーディエンスリストを作成し、ソーシャルメディアやネット上でのターゲット広告に使用します。貴社は各ページ下部のリンクから、いつでも同意の許可、拒否、または撤回が可能です。
ご送信ありがとうございます。内容を受け付けました。
申し訳ありません。フォーム送信時にエラーが発生しました。
/
/
Attacks

LDAPインジェクション攻撃とは?

LDAPはよく知られたプロトコルで、多くのWebサイトがLDAPサービスを利用しています。MicrosoftのADやRed Hat Directoryを採用している場合、LDAPはその中核をなします。

認証情報の保管やSSO環境の実現に役立つこのサービスは、リソースへのアクセス管理や変更権限の管理など、多くの面で有用です。

しかし、これらの情報が漏れると、デジタル資産が危険にさらされることになります。

開発者やサイト運営者として、LDAPインジェクションの概要とその影響、そして対策方法を知らなければ、より大きな問題に発展する恐れがあります。以下を参考に、しっかりと理解を深めてください。

LDAPインジェクション攻撃とは?

LDAPインジェクションのすべて

SQLインジェクションを聞いたことがあり、LDAPの仕組みを理解している場合、概要は把握されているかもしれません。しかし、正確な理解のため、シンプルに説明いたします。

LDAPインジェクション攻撃では、攻撃者が問い合わせ入力を操作し、ディレクトリへ不正アクセスを試みます。このディレクトリには、貴社や利用者のメール、ユーザー名、パスワードなどが保存されている可能性があり、侵入されると大きな被害につながります。

  • 事業に不可欠な機密情報の漏洩;
  • 情報の窃盗;
  • ユーザーや顧客データの悪用(金融詐欺を含む);
  • 個人情報の盗用および悪用;
  • 認証情報の改変により、本来の利用者がシステムにアクセスできなくなる恐れ。

LDAPインジェクションはどう動く?

一般的に、攻撃者はLDAPサービスを利用しているデジタル環境のセキュリティ上の隙を探ります。弱いフィルタリング機構を突くため、無加工のユーザー入力(例えば、システムに侵入するためのLDAP問い合わせ)を送信し、アプリへ侵入しようとします。

成功すると、攻撃者は目的に応じてアクセス情報を変更、削除、悪用、または追加することが可能です。

LDAPインジェクションの例を紹介し、より詳しく説明します:

一般的なLDAP問い合わせは、様々な文字、記号、引用符などの組み合わせです。アンパサンドやアスタリスクが複数含まれる場合もあります。攻撃者がLDAP対応のログインページに到達し、ユーザー名を把握している場合、パスワード欄にLDAP問い合わせを入力して認証処理がこの欄を無視するよう仕向けることが可能です。

その結果、攻撃者は入力されたユーザー名のアカウントにアクセスでき、パスワードは不要となります。

同様に、より高度な攻撃では、攻撃者がLDAPディレクトリに侵入し、LDAPツリーを改変する可能性もあります。この場合、権限を奪ったり譲渡したりすることで、サイトや組織全体の資産やデータの権限体系を混乱させる恐れがあります。

Examples of LDAP injection
LDAPインジェクションの例

種類

  1. 情報漏洩

例えば、eコマースサイトや情報を扱うサイトでは、ユーザーが商品検索やカテゴリによる情報の絞込みを行います。攻撃者が共通のパラメータを取得できると、その値に『*』(アスタリスク=全て)を渡すことで、全情報へのアクセスが可能になる恐れがあります。

  1. アクセス制御の回避

この攻撃では、攻撃者はルートディレクトリではなく特定のユーザーのアカウントやデータにアクセスします。弱いフィルタリングの隙を突き、メタ文字(例:記号やアンパサンド)で検証を回避し、認証を突破します。

例えば、攻撃者はユーザー名やパスワードの入力を省略できますが、LDAP問い合わせを利用することで、権限を昇格させることが可能となります。

  1. 権限昇格

貴社内では、誰もがアクセスできる情報も多く存在します。一般的な通知、各種情報、報告書、プロジェクトの詳細などが含まれます。

これは、ユーザーの役割やセキュリティレベルでデータをフィルタしているに過ぎないため、攻撃者が認証時にこれらの情報を無視させることに成功すると、ディレクトリ内の全情報を閲覧することができるようになります。

  1. ブラインドLDAPインジェクション

この手法はSQLインジェクションに非常に似ています。たとえば、サーバーがアクションを起こすために『TRUE』(1)または『FALSE』(0)の回答を求める場合、好みの2進数入力を与えるだけで不正アクセスが可能となります。見た目以上に試行錯誤が多く、実行には時間がかかります。

LDAPインジェクションの例

LDAP問い合わせでは条件演算子が使用可能であり、ここで攻撃者が介入するチャンスが生まれます。一般的な条件問い合わせは、複数の開閉引用符とANDやORの演算を含み、有効な問い合わせとして成立するようパラメータや括弧を挿入できれば、セキュリティや認証を突破できる可能性があります。

  • ANDタイプ

複数の『&』演算子を使用したLDAP問い合わせはANDタイプです。すべての値が一致した場合に成立するため、攻撃者は挿入したコードが結果をFALSE(0)に変えないよう注意する必要があります。

例えば、Titanの女性専用時計の情報を取得するため、攻撃者は実際の問い合わせを次のように改変できます:

例: 

ACTUAL_QUERY&(brand=titan)(type=female))
  • ORタイプ

このタイプでは、与えられた条件のうち1つがTRUEであればよく、処理は左から右に進みます。攻撃者が追加の条件(悪意あるコード)を挿入し、結果がTRUEとなれば、好むデータにアクセスが可能です。

例: 

ACTUAL_QUERY|(brand=titan)(type=*))
  • ANDブラインドタイプ

ANDタイプの問い合わせが出力を返さない場合、サーバーはブラインド攻撃に対して脆弱であることを意味します。攻撃者は出力が得られないオブジェクトを探し、そこから広範なデータを抽出しようとします。

例: 

例えば、あるオンラインベーカリーで、‘chocolate’タイプの『cake』を検索しても何も返らない場合:

(&(objectClass=Cake)(type=Chocolate*))

これは、現在、販売中のチョコレートケーキが存在しないためです。しかし、攻撃者が『*)(objectClass=*))(&(objectClass=void』と検索すると、問い合わせは次のようになります:

(&(objectClass=*)(objectClass=*))(&(objectClass=void)(type=Chocolate*))

結果として、出力にはクッキーやキャンディーなど、すべてのチョコレート関連の商品が含まれます。

  • ORブラインドタイプ

‘OR’タイプのブラインドLDAPインジェクションは、ANDタイプと同様の仕組みで動作しますが、‘OR’条件で構築された問い合わせに適用されます。

例:

先の例で攻撃者がORタイプのLDAP問い合わせを突破するには、以下の問い合わせを利用します:

(|(objectClass=void)(objectClass=void))(&(objectClass=void)(type=Chocolate*))

SQLインジェクションとLDAPインジェクションの比較

どちらの場合も攻撃者は悪意あるコードを挿入しますが、SQLとLDAPでの注入手法は同一とは言えません。主な違いは、問い合わせに使用する言語と、影響を及ぼすシステムやアプリの種類にあります。

SQLインジェクションは、SQLデータベースでデータを検証するウェブフォームを狙います。一方、LDAPディレクトリ内の情報がLDAPインジェクションの対象となるため、組織内のデータや利用者に関する問題が中心です。

LDAPインジェクション攻撃を防ぐ方法

これらの侵入の深刻さは十分ご理解いただけたかと思います。サイト運営者や作成者として、被害を防ぐための対策を知ることが重要です。以下、その方法を説明します:

  • フィルタリング機構の強化

入力を精査することでインジェクションのリスクは低減されます。例えば、アスタリスク、AND、OR、引用符など、問い合わせの構文を変化させる記号に検証を設ければ、フィルタリングの回避は困難になります。

また、許可リストを設定し、特定の記号(例:0~9の数字、A~Zの文字など)のみを入力として受け入れるようにすると、さらに安全です。

  • 連結の回避

LDAP問い合わせの作成時に『(』や『)』を使用しない方が良いです。これにより、攻撃者が括弧を追加して問い合わせの意味を変えることを防止できます。

  • コード解析と動的テスト

静的コードの確認や、アプリ内の各モジュールの品質検証、加えて手動またはツールを用いたテストを行うことで、攻撃者に悪用される前に脆弱性を発見できます。

  • 様々な制御の導入

ネットワーク内で各ユーザーや階層に役割を割り当てる際は、ゼロトラスト最小権限の考え方を採用することが推奨されます。これにより、LDAPサーバへのアクセス管理が効率的になります。別のユーザーやアプリに代わってリクエストを処理する場合、プロキシや認証の実装も有効です。

  • 異常な動作の自動監視

通常、攻撃者はLDAPインジェクション成功前に複数の問い合わせやリクエストを実行します。こうした異常な動作を識別する仕組みを導入すれば、検出は難しくありません。

攻撃者の試みを検出し、被害が及ぶ前にインジェクションを防ぐためのベストプラクティスは以下の通りです:

  • 入力フィールドの最大文字数を設定する;
  • 通常の検索時間を記録し、複雑な問い合わせを避けるためにタイムアウトを設定する;
  • base DNやスコープを調整し、LDAPディレクトリの検索範囲を制限する.
  • セキュリティテスト

アプリおよびAPIセキュリティは無視できません。LDAPディレクトリのデータはこれらを通じて取得されるため、最適なセキュリティテスト手法を模索し、必要に応じて専門家に相談すべきです。APIセキュリティについては、Wallarmのプラットフォームを利用することで、効率的なテストが可能です。

まとめ

LDAPを利用したアプリでは、攻撃者が不注意や脆弱性を突くことがないよう十分注意する必要があります。これを実現するため、LDAPインジェクションやその他のサイバー攻撃を防ぐあらゆる手法を取り入れることが求められます。上記の記事が、適切なセキュリティ対策の一助となれば幸いです。

FAQ

Open
LDAPインジェクション攻撃はなぜ危険なのか?
Open
OWASPはLDAPインジェクション攻撃について何と言っているのですか?
Open
LDAPインジェクション攻撃とは何ですか?
Open
LDAPインジェクション攻撃にはどんな例がある?
Open
LDAPインジェクション攻撃から守るにはどうすればよいですか?

参考資料

最新情報を購読

更新日:
February 25, 2025
学習目標
最新情報を購読
購読
関連トピック