[論文レビュー] Injection Attacks Reloaded: Tunnelling Malicious Payloads over DNS
この論文は、DNSの透明性という設計原則に起因する深刻なセキュリティ脆弱性を明らかにしている。悪意あるペイロードがDNSレコードにエンコードされ、アプリケーションやサービスを標的にしたインジェクション攻撃(DNSキャッシュポイズニングやリモートコード実行など)が可能になる。著者らは、96%以上のオープンDNSリゾルバーが脆弱であることを実証しており、DNSSEC や入力のクリーニングといった従来の防御対策を回避している。
The traditional design principle for Internet protocols indicates: "Be strict when sending and tolerant when receiving" [RFC1958], and DNS is no exception to this. The transparency of DNS in handling the DNS records, also standardised specifically for DNS [RFC3597], is one of the key features that made it such a popular platform facilitating a constantly increasing number of new applications. An application simply creates a new DNS record and can instantly start distributing it over DNS without requiring any changes to the DNS servers and platforms. Our Internet wide study confirms that more than 1.3M (96% of tested) open DNS resolvers are standard compliant and treat DNS records transparently. In this work we show that this `transparency' introduces a severe vulnerability in the Internet: we demonstrate a new method to launch string injection attacks by encoding malicious payloads into DNS records. We show how to weaponise such DNS records to attack popular applications. For instance, we apply string injection to launch a new type of DNS cache poisoning attack, which we evaluated against a population of open resolvers and found 105K to be vulnerable. Such cache poisoning cannot be prevented with common setups of DNSSEC. Our attacks apply to internal as well as to public services, for instance, we reveal that all eduroam services are vulnerable to our injection attacks, allowing us to launch exploits ranging from unauthorised access to eduroam networks to resource starvation. Depending on the application, our attacks cause system crashes, data corruption and leakage, degradation of security, and can introduce remote code execution and arbitrary errors. In our evaluation of the attacks in the Internet we find that all the standard compliant open DNS resolvers we tested allow our injection attacks against applications and users on their networks.
研究の動機と目的
- DNSレコードの透明な処理が、検証を行わないまま信頼できないデータを保持するというセキュリティ的影響を調査すること。
- DNSデータを処理するアプリケーションにおける入力検証の欠如が、新たなインジェクション攻撃の種類を可能にする仕組みを同定すること。
- DNSSEC、DNS over HTTPS、DNS over TLS といった既存の防御策が、新たに明らかになった攻撃ベクトルに対してどれほど有効であるかを評価すること。
- DNS入力の検証が行われない限り、eduroam や LDAP といったよく保護されたシステムでさえも、これらの攻撃に対して脆弱であることを実証すること。
- アプリケーションレベルでのDNSデータ検証を提唱し、下位レイヤー(DNSなど)がすべてのデータ整合性チェックを処理すべきという前提を覆すこと。
提案手法
- 著者らは、下流のアプリケーションにおける文字列解釈の欠陥を悪用するように、ペイロードをエンコードした悪意あるDNSレコードを設計した。
- 300万件のオープンDNSリゾルバーを対象とした大規模なインターネット測定により、96%がDNSレコードの内容を変更せずに保持していることを確認した。
- 攻撃モデルでは、社会的エンジニアリング(電子メール、広告ネットワークなど)を用いてリゾルバーをだませ、悪意あるレコードをキャッシュさせ、それを被害者のアプリケーションに届ける。
- 実世界のシステムに対して、DNSキャッシュポイズニング、XSS、LDAPインジェクションといった攻撃を、仕組まれたDNSレスポンスを用いて実装・テストした。
- DNSSEC、DoT、DoH などの防御策の耐性を評価し、アプリケーションレイヤーでの検証が行われないため、これらの攻撃を防げないことを示した。
- 攻撃の脅威モデル分析を実施し、DNSリバインディングや従来のWebインジェクション攻撃と比較して、配信メカニズムと影響の点で重要な相違を明らかにした。
実験結果
リサーチクエスチョン
- RQ1DNSがレコードを処理する際の透明性が、新たなインジェクション攻撃の表面をどれほど拡大させるか?
- RQ2暗号的保護やトランスポート層保護を備えたDNSSEC、DoT、DoH といった既存の防御策が、なぜこれらのインジェクション攻撃を防げないのか?
- RQ3これらの脆弱性は、実際のDNSインfra構造、特にオープンリゾルバーにおいてどれほど広がっているか?
- RQ4eduroam や LDAP、DNSキャッシュといったアプリケーションやサービスでは、これらの攻撃がどの程度効果的か?
- RQ5プロTOCOLの透明性とアプリケーションの信頼性の間のセキュリティギャップを埋めるために、どのようなアーキテクチャ的変更が必要か?
主な発見
- テストされたオープンDNSリゾルバーの130万件以上(96%)が、標準準拠であり、悪意あるペイロードを変更せずに保持している。
- 著者らは、10万5千件のオープンリゾルバーに対してDNSキャッシュポイズニング攻撃を成功させ、下流アプリケーションにおける入力検証の欠如を悪用した。
- テストされたすべてのeduroamサービスが、インジェクション攻撃に対して脆弱であり、不正アクセスやリソース枯渇が可能である。
- Webアプリケーションにおける従来の入力クリーニングは、悪意あるデータがユーザー入力ではなくDNS経由で届けられるため、この攻撃を防げない。
- DNSSECは一般的な構成ではこれらの攻撃を防げない。なぜなら、攻撃はDNSデータの改ざんではなく、アプリケーションレイヤーでの誤解釈を狙っているからである。
- DNS over HTTPS や DNS over TLS といった最新の保護策ですら、アプリケーションレイヤーでDNSレコードの意味的コンテンツを検証しない限り、攻撃を緩和できない。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。