JVNDB-2026-027760 | |
Zephyr ProjectのZephyrにおける複数の脆弱性 | |
| 概要 | |
subsys/mgmt/hawkbit にある hawkBit デバイス管理クライアントは、update server からの HTTP レスポンスの本文を response_json_cb() 関数(subsys/mgmt/hawkbit/hawkbit.c)内でヒープバッファに蓄積します。このバッファは受信した本文のバイト数を保持できるサイズに設定されていますが、終端のヌル(NUL)文字用のスペースを確保していません。レスポンスの全データが到着すると、コードは response_data[downloaded_size] = '\0' と書き込みますが、蓄積された本文の長さが割り当てサイズと同じ場合、この終端文字はヒープオブジェクトの末尾の1バイト先に書き込まれます(ヒープベースの境界外書き込み、CWE-122 / CWE-787)。本文の長さと断片化は、解析された HTTP レスポンス(rsp->body_frag_start / rsp->body_frag_len)から直接取得されており、リモートの hawkBit サーバーによって完全に制御されています。サーバーは独自にレスポンスの長さを決定します。トリガーの正確な動作はバッファの拡張方法に依存し、どちらの形式もリモートから到達可能です。v4.0.0 以降では再割り当ては正確に downloaded_size + body_len のサイズで行われるため、初期バッファ1100バイトを超えるレスポンス本文では境界外書き込みが確定的に発生します。これらのサイズは hawkBit のデプロイメントメタデータとしては通常のサイズです。v4.0.0 より前では、バッファは倍増方式で拡張され、成長チェック ((downloaded_size + body_len) > response_buffer_size) は等号では偽となるため、現在の割り当てサイズと本文長がちょうど等しい場合(デフォルトの初期バッファは1100バイト)、再割り当てがスキップされ、終端文字は1100バイトのオブジェクトの response_data[1100] に書き込まれます。HTTP の長さ不整合チェックでは、宣言された長さと受信長が一致しているため検出されません。この問題は、悪意ある、またはマルウェアに感染した中間者攻撃を行う更新サーバー(TLS は任意であり、有効でも敵対的なサーバーからの保護にはなりません)から到達可能であり、レスポンス内容の認証もクライアント側の長さ制限も存在しません。この境界外書き込みは割り当てサイズ直後の単一のヌルバイトを書き込み、隣接するアロケータのメタデータや次の割り当て領域を破壊します。実際の影響はヒープ破損によるサービス拒否を引き起こし(後続の割り当てや解放時に障害が発生します)、影響範囲はアロケータ依存で限定的ですが、さらなる破損もあり得ます。修正はバッファを本文長に1バイトを加えたサイズで確保し、memcpy でコピーすることで終端文字が必ず割り当て領域内に収まるようにしています。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 7.5 (重要) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Zephyr Project | |
本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。 | |
| 想定される影響 | |
・当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
ベンダ情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
GitHub | |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/08/03 |
| 登録日 | 2026/08/12 |
| 最終更新日 | 2026/08/12 |



