JVNDB-2026-022663 | |
Zephyr ProjectのZephyrにおける解放済みメモリの使用に関する脆弱性 | |
| 概要 | |
Zephyrの非同期SNTPクライアント(subsys/net/lib/sntp/sntp.c、sntp_close_async)は、ネットワークソケットサービスから切り離した直後に、呼び出しスレッドからUDPソケットファイルディスクリプタを直接閉じており、ソケットサービスのポールスレッドと同期を取っていませんでした。ソケットサービススレッドはzvfs_pollを介して各ソケットをポーリングしており、(zsock_poll_prepare_ctx内で)k_poll_eventをソケットのnet_context(&ctx->recv_q)に向けて登録し、参照やロックを保持せずにk_pollでブロックします。net_contextオブジェクトは固定プール(contexts[CONFIG_NET_MAX_CONTEXTS])から割り当てられ、クローズ後に再利用されます。sntp_close_asyncがポールスレッドとは異なるスレッドから呼び出された場合(ツリー内の利用者subs ys/net/lib/config/init_clock_sntp.cにて、システムワークキュー上でSNTPタイムアウトハンドラが実行される一方で、ソケットサービススレッドが同じfd上のpollでブロックしている状況)、クローズによりnet_contextが解放され再利用される可能性がありますが、ポールスレッドは依然として解放済みオブジェクトにポーラーノードをリンクしたままになります。その結果、カーネルのポール構造に対するuse-after-freeやオブジェクト混同が発生します。SNTPのタイムアウト経路は通常の応答なし失敗モードであるため、ネットワークピアやオフパス攻撃者がSNTP/NTPの応答を遅延または破棄することで、競合状態のあるクローズを繰り返し(さらにNET_CONFIG_SNTP_INIT_RESYNCの周期的な動作で)誘発可能です。最も考えられる結果はネットワーキングスレッドのクラッシュ(サービス拒否)であり、解放されたコンテキストスロットが再割り当てされる際にメモリ破損が発生する可能性もあります。修正は、クローズ処理をnet_socket_service_close(NET_SOCKET_SERVICE_CLOSE_SOCKETS)を通じてソケットサービススレッド自身に延期し、ポール処理を行う同一スレッドがクローズも担当するようにして競合を排除しています。影響を受けるリリースはv4.2.0からv4.4.0です。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 5.9 (警告) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Zephyr Project | |
本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。 | |
| 想定される影響 | |
・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
ベンダ情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
GitHub | |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/06/30 |
| 登録日 | 2026/07/08 |
| 最終更新日 | 2026/07/08 |



