CDN Forwarding Loop攻撃とは、CDNに悪意を持った設定を行うことにより、CDNサービスを高負荷にする攻撃/脆弱性である(CDNにより他のWebサーバに対するDOS攻撃を行うものではなく、CDN自体を機能不全に陥れる攻撃である)。
また、この脆弱性による負荷の上昇は、CDNへの意図的な攻撃だけでなく、ユーザによる単純な設定ミスでも発生する。ただし、その影響は限定的であり、この攻撃単体でCDNを機能停止に陥れるのは困難である。
基本的な攻撃テクニック
- 設定
- CDNにおけるオリジンサーバに、CDNの配信サーバを設定する。
- 目的
- ループ回数
ループの種類
- Self-Loop:単独CDNサーバ内部におけるリクエストループ
- Intra-CDN Loop:あるCDN事業者内におけるリクエストループ
- Inter-CDN Loop:CDN事業者をまたがったリクエストループ
- Dam Flooding:高度なオリジン制御を行うリクエストループ※
- ※オリジン設定ににホスト名を使用し、ループを最大化するようにホストのIPアドレスを制御する。
対策
- 社会面
- 安易なオンラインサインアップの中止(ユーザの匿名性を排除する)
- 機能面
- オリジンサーバ設定におけるIPアドレスの識別
- CDNサーバ群のIPアドレスレンジをオリジンサーバとしない
- CDNに特徴的なリクエストヘッダの追加
- CDNサーバでは、このリクエストヘッダを持つリクエストを中継しない
- タイムアウトの設定
- abort-forwardingを設定し、(最初の)ユーザリクエストから規定値以内に完了しないループを強制切断する。
- オリジンサーバ設定におけるIPアドレスの識別
- 課題
- 上記対策を行わないCDN事業者がいる場合、Inter-CDN LoopによりCDN全体が危険に陥る。
参考文
- https://www.internetsociety.org/sites/default/files/blogs-media/forwarding-loop-attacks-content-delivery-networks.pdf
- https://www.internetsociety.org/sites/default/files/04_2-ndss2016-slides.pdf
- http://jvndb.jvn.jp/ja/contents/2016/JVNDB-2016-001538.html