CERT、dnsmasqの深刻なセキュリティ脆弱性6件のCVEを公開
(lists.thekelleys.org.uk)- CERTが2026年5月11日にdnsmasqの深刻なセキュリティ脆弱性6件に関するCVEセットを公開
- 脆弱性はいずれも古いバグで、非常に古いバージョンを除くほぼすべてのdnsmasqバージョンに影響
- CVEはベンダーに事前開示されており、各ベンダーはdnsmasqパッケージのパッチ版を適時配布する必要がある
- 安定版リリース dnsmasq 2.92 にパッチを適用した2.92rel2が作成され、従来のダウンロード先から入手可能
- まもなくdnsmasq-2.93rc1タグが作成される予定で、テストを経て約1週間以内の2.93リリースを目標としている
dnsmasq脆弱性の公開とパッチ
- CERTが2026年5月11日にdnsmasqの深刻なセキュリティ脆弱性6件に関するCVEセットを公開
- 脆弱性はいずれも古いバグで、非常に古いバージョンを除くほぼすべてのdnsmasqバージョンに適用される
- CVEはベンダーに事前開示されており、各ベンダーはdnsmasqパッケージのパッチ版を適時配布する必要がある
- 詳細情報とパッチはhttps://thekelleys.org.uk/dnsmasq/CVE/で確認可能
- 安定版リリース dnsmasq 2.92 にパッチを適用した2.92rel2が作成され、従来のダウンロード先から入手可能
- 開発ツリーにも同時期に修正コミットが上がる予定で、一部はバックポートと同じパッチを使い、一部は根本原因に対処するより包括的な書き直しとなっている
AIベースのレポート増加と2.93計画
- ここ数か月でAIベースのセキュリティ研究によりバグレポートが大幅に増え、重複排除とバグ分類に多くの時間がかかっている
- バグはベンダーへの事前開示が必要な項目と、公開後に即時修正した方がよい項目に分けられ、この区分は避けがたく主観的である
- 同じバグを複数の“good guys”が繰り返し見つけている以上、“bad guys”も発見できた可能性があり、長いエンバーゴの実効性は高くないと見ている
- エンバーゴの調整とバックポート提供には、すべての参加者に多くの時間と労力が必要となる
- ほとんどのバグは今後のリリースで修正し、新しいdnsmasqリリースを可能な限りバグの少ない状態にすることが優先される
- 発表前の数週間にわたりgitリポジトリに多くのセキュリティ修正コミットが上がっていたことも、この方針とつながっている
- まもなくdnsmasq-2.93rc1タグを作成する予定で、安定版 2.93 をできるだけ早く出すことを目標としている
- リリース候補のテストは重要であり、可能なユーザーは早めにテストすべきである
- 順調に進めば2.93は約1週間以内にリリースされる可能性がある
- AI生成バグレポートの“tsunami”は止まる気配がなく、同じプロセスが近いうちに再び繰り返される可能性がある
- 2.93に進行中のバグの流れをできるだけ多く反映することと、適時にリリースすることの間には緊張関係があり、優先順位はタイムリーなリリースにある
1件のコメント
Hacker Newsのコメント
Cで書かれたコードをメモリ安全な言語に置き換えることが、いよいよ急務になる転換点のように思える
最近見つかる脆弱性の大半はメモリ安全でない言語と直接関係しており、DNS/DHCPサーバーをRustやGoで、できれば
unsafeなしに書けないと正当化するのはかなり難しそうだAIセキュリティ研究者たちは少なくとも何かはしている。すべてをRustで書き直すのがそんなに簡単なら、こういう事故の翌日には堅牢なRust代替が出てきているはずだ
そうならないのは、こういうことをしてもGitHubスターを得にくいからだ
「最大サイズがわからないから全部動的であるべきだ」が本当に正しいのか疑問だ。プログラムが入力の許容最大サイズを宣言し、それを超えたらエラーにするかリングバッファを使うのは、別に世界の終わりではない
サイズがわかるなら、それに合わせて設計できる。RAMは有限なのに、その中のあらゆる層が無限であるかのように設計されているのは奇妙だ
Rustへの置き換えは莫大な時間の無駄に見えるし、プログラムを有限なシステム資源という現実に合わせてモデル化できていない根本問題を解決しない。メモリだけの問題でもない。Chromeがユーザー端末に4GBモデルを載せる例も似た話だ
https://xchglabs.com/blog/dnsmasq-five-cves.html
OpenWRTが新しいビルドを出したのか気になっていたが、答えはまだで、作業中だ
https://forum.openwrt.org/t/dnsmasq-set-of-serious-cves/2500...
https://github.com/mirror/dd-wrt/issues/465
https://svn.dd-wrt.com/changeset/64944
https://svn.dd-wrt.com/changeset/64905
リリースは「coming soon」とのこと
私のMaraDNSは、AI支援のセキュリティ監査時代に入ってから、かなり広範に監査されてきた
2023年以降、深刻なセキュリティバグは1件も見つかっていない [1]
監査者が見つけたのは、「Deadwoodが完全再帰モードのときに妙なパケットを受けると、普段よりリソース解放に時間がかかる」[2] とか、「MaraDNSに含まれる補助ユーティリティが2022年からそもそもコンパイルすらできていないのに、
$HOMEが50文字を超える場合にだけバッファオーバーフローがある」[3] といったものだけだ深く実践的なセキュリティ監査を受けている今、MaraDNSがかなり安全だという点には個人的にとても満足している
[1] https://samboy.github.io/MaraDNS/webpage/security.html
[2] https://github.com/samboy/MaraDNS/discussions/136
[3] https://github.com/samboy/MaraDNS/pull/137
Luaにもセキュリティ修正がなかったわけではない
私にも自作ライブラリがいくつかあるが、1991年以降、深刻なセキュリティバグは1件も見つかっていない。もちろん誰も私のライブラリを使っていない
実績をけなすつもりはないが、こういう主張はユーザーベースがどうかという文脈と一緒に語るのが重要だ
この宣伝はdnsmasqの議論にほとんど価値がない
より広く使われているソフトウェアほど、より多く精査され、より多くのバグや境界事例が見つかる
幸い、このソフトウェアがほとんど更新されない何百万台もの機器で使われているわけではないだろう
かなり深刻だ
「DNSクエリを送れる、あるいはDNS応答を返せるリモート攻撃者が、ヒープ上で大きな範囲外書き込みを引き起こせる」
不正なDNS応答は「無限ループを誘発し、dnsmasqがすべてのクエリに応答しなくなる」可能性がある
悪意あるDHCPリクエストはバッファオーバーフローを引き起こしうる
AIバグレポートの津波がすべてのプロジェクトにあるわけではない。上で言った通り、MaraDNSにはなかった
djbdnsやtinydnsにもなかっただろうと思う。もしあれば大々的に知らされていたはずだ
なぜあるプロジェクトは極端に人気が出て、別のプロジェクトはそうならないのか、ずっと理解できなかった
「公開するには危険すぎる」ツールがすべてのプロジェクトをスキャンしつつ、問題のあるところにだけ選択的に連絡しているようにも見える。そうすれば、自分たちのツールが何も見つけられなかった事実を認めずに済むからだ
dnsmasqを使うのが好きだったことはない。1つのツールにあまりに多くを詰め込みすぎている感じだった
ローカルのキャッシングリゾルバ、DHCPサーバー、TFTP/PXEブート設定は、常に別々に構成するほうを好んできた
たとえば、
*.example.comへのクエリを特定の上位サーバーに送る機能、フィッシングサイトにNXDOMAINを返す機能、*.example.orgに解決されたすべてのIPをポリシールーティング用のipsetに追加する機能だ最後の機能は、BSDには
ipsetがないのにFreeBSDでも動作する。*.example_xyz.comのリストは非常に大きくなりうるが、最近のdnsmasqはこれを効率よく処理すると言われている10点満点で10点、後悔なし、薦められる
たとえばOpnsenseはDHCP部分だけdnsmasqを使い、DNSにはunboundを使っているが、これが少し「変」に感じる
DHCPとDNSはつながっているし、PXEにはDHCPエントリが必要だ。簡単な構成をしたいなら、そうでなければ設定文法の違うデーモン最低3つをつなぎ合わせる必要がある
この分野の経験がもっとある人に聞きたい初心者質問なのだが、なぜこの領域のソフトウェアはErlangのようなガベージコレクションと並行性を備えた言語ランタイムで、もっと多く書かれていないのだろうか
性能面の損失が大きすぎたし、当時安定していたのかもわかりにくい不透明なランタイムがあり、コントリビューターも少なく、ほとんどのシステムに入っていない依存関係のフットプリントも大きかった
2015年ごろに本番システムでErlangを使ったときでさえ、本来の想定用途から少し外れると荒い部分があった。Erlangだけの批判ではなく、多くの言語やランタイムが似たようなものだった
今後数週間から数か月にわたって影響を受け続けるこの手のシステムのかなり多くも、似た背景を持っている。Linuxカーネルで当時選べた潜在的代替はC++くらいだった。セキュリティ問題の常連であるOpenSSLは1998年に始まっている
「ネットワークアクセスのある新規プロジェクトをCで書くな」という点には私も非常に強く同意するが、1998年に戻ったとして、他にどんな選択肢が現実的だったかを言うのは難しい
より安全な言語はあったが、Cコミュニティよりはるかに小さく、安定性を保証するのも難しかった。Javaはすでに存在していたが、ネットワークサーバーの本格的候補になった正確な時期はわからず、だいたい2000年代後半くらいだと思う。1999年に見たJavaはまだそうではなかった
たとえば2011年に、比較的重要でない用途でHaskellのネットワークサーバーを運用したことがあるが、本番ネットワークとしてはそれほど極端でもない条件で倒れた。2013年に同じコードベースをコア実行ループの変更なしで再利用したら約90%改善したので、私のコードというよりHaskell側の問題だったと思う
それでも実運用に入れられるほどではなかったが、少なくとも失敗の原因が私のコードではなかったことは示せた。つまり、たとえHaskellが2000年代に存在していたとしても、当時のネットワークサーバーの現実的選択肢とは言いがたかったということだ
今は昔よりずっと選択肢が多い
structをネットワークパケットに直接マッピングできるのでかなり簡単だ他の言語では、そう単純でないことが多い
もちろん、より遅く、より大きくなるという点もある