公開日:2022/05/10 最終更新日:2022/05/10

JVNVU#96479085
uClibcおよびuClibc-ngにDNSキャッシュポイズニングの問題

概要

uClibcおよびuClibc-ngには、DNSヘッダのトランザクションIDがランダム化されていないことに起因してDNSキャッシュポイズニング攻撃が可能となる脆弱性が存在します。

影響を受けるシステム

  • uClibc
  • uClibc-ng

詳細情報

uClibcおよびuClibc-ngは組み込み製品で多く用いられている軽量なC言語ライブラリです。uClibcは2012年5月を最後に開発が停止しており、2014年7月からは後継のuClibc-ngの開発が今日まで継続されています。

uClibcおよびuClibc-ngには、DNSヘッダのトランザクションIDがランダム化されていない脆弱性(CVE-2022-30295、CWE-330)が存在します。これにより、攻撃者が悪意のあるDNSパケットを送信し不正なDNSキャッシュを登録させることにより、ユーザを任意のサイトへリダイレクトさせるDNSキャッシュポイズニング攻撃の被害を受ける可能性があります。

想定される影響

キャッシュポイズニング攻撃によって偽のDNS情報をキャッシュさせられ、ユーザが偽のサイトに誘導される可能性があります。

対策方法

2022年5月10日現在、本脆弱性の修正パッチは提供されていません。
ベンダからの情報を注視し、製品のファームウェアを常に最新に保つよう心がけてください。

uClibcおよびuClibc-ngを用いて製品を開発している場合、DNSヘッダのトランザクションIDをランダム化する修正を行ってください。
発見者によると、本脆弱性の原因は /libc/inet/resolv.c 内の __dns_lookup 関数において、単純にインクリメント処理された変数 local_id をトランザクションIDとして使用していることにあります。

ベンダ情報

ベンダ リンク
uClibc uClibc
uClibc-ng uClibc-ng - Embedded C library

参考情報

  1. Nozomi Networks
    Nozomi Networks Discovers Unpatched DNS Bug in Popular C Standard Library Putting IoT at Risk
  2. CERT/CC Vulnerability Note VU#473698
    uClibc, uClibc-ng libraries have monotonically increasing DNS transaction ID

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE
JVN iPedia