CoreDNS Vulnerability Allows Attackers to Poison DNS Cache and Block Updates
2025/09/11 gbhackers — CoreDNS の etcd プラグインに存在する深刻な脆弱性により、攻撃者が DNS レコードを長期間キャッシュに保持し、正当な更新を事実上ブロックできる可能性があるという。この脆弱性 CVE-2025-58063 は、etcd リース ID の不適切な処理に起因するものである。GitHub の研究者によると、この問題が影響を及ぼす範囲は、CoreDNS のバージョン 1.2.0 以降であり、バージョン 1.12.4 で修正されている。セキュリティ・チームにとって必要なことは、TTL 設定の更新および見直しを早急に実施し、長期的なキャッシュ・ポイズニングを防ぐことである。

脆弱性の詳細
“plugin/etcd/etcd.go” ファイルの TTL() 関数が、誤って 64-Bit のリース ID を、32-Bit の符号なし整数に変換することで、この脆弱性は発生する。
本来において、リース ID は期間を表す値ではなく、不透明 (opaque) な識別子として使用されるものである。したがって、切り捨てられた ID を TTL としてコードが扱うことで、きわめて大きな値が生成される可能性がある。
| CVE ID | Vulnerability | Affected Versions | Patched Version | Severity |
| CVE-2025-58063 | DNS Cache Pinning via etcd Lease ID Confusion | ≥1.2.0 | 1.12.4 | High |
それにより、etcd への書き込み権限を持つ攻撃者は、DNS レコードに任意のリースを付与できるため、CoreDNS は数十年単位の TTL を持つエントリを処理してしまう。厳格な TTL 上限を持たない下流のリゾルバは、レコードを無期限にキャッシュし、その後の更新や削除を無視することになる。
最初に、攻撃者は etcd バックエンドへの書き込み権限を取得する。そのような事態を発生させるものとしては、ロールのミスコンフィグ/エンドポイントの露出/サービス・アカウント認証情報の窃取などが挙げられる。
続いて攻撃者は、実際の有効期間を無視するリースを付与し、CoreDNS のサービス検出パスにある DNS キーを更新する。それにより CoreDNS は、レコードと偽の TTL をレスポンスとして返す。
このレコードが自然に期限切れになるまで、また、リゾルバがハードキャップを適用するまで、クライアントとリゾルバはレコードを保持する。その期間中、正当な更新やロールバックはクライアントからは見えない。
したがって、IP ローテーション/フェイルオーバー/緊急パッチといったサービス変更が無視され、DNS ベースのサービス検出が長期間にわたり中断される可能性がある。
すでに CoreDNS のメンテナーは、バージョン 1.12.4 をリリースし、この問題に対処している。具体的には、etcd のリース API にクエリを実行して、実際のリース期間を取得し、設定可能な TTL 制限を導入することになったという。
管理者にとって必要なことは、修正済みバージョンへと、速やかにアップグレードすることだ。また、迅速なアップグレードが困難な環境の場合には、DNS リゾルバまたはゲートキーパー・プロキシに TTL 制限を適用し、過剰な値を抑制すべきである。
さらに、etcd の権限を定期的に監査し、サービス・アカウント認証情報をローテーションすることで、不正な書き込みによるリスクを低減することができる。
CoreDNS の etcd プラグインに、深刻な脆弱性が発生しました。原因は、リース ID の誤った扱いにあり、単なる識別子である値を TTL として解釈してしまうという問題を引き起こしています。この変換ミスによって、非常に長い TTL が設定され、DNS レコードが不自然に長期間キャッシュされるという問題が生じます。結果として、正しい更新や削除が反映されなくなり、サービスの可用性に影響する可能性があると、この記事は指摘しています。ご利用のチームは、ご注意ください。よろしければ、DNS で検索も、ご参照ください。
You must be logged in to post a comment.