CVE-2026-102716 in ThreadX
要約
〜によって VulDB • 2026年09月29日
認証されていないクライアントが、パーサーが変換できないSessionヘッダーを含む数十件のリクエストによってRTSPサーバーのパケットプールを枯渇させることができます。
Sessionブランチは、RTステータスコードの代わりに生のNetXエラーコードを返します:
```c /* addons/rtsp/nx_rtsp_server.c:2754 */ status = _nx_utility_string_to_uint(field_value_ptr, field_value_length, &session_id); if (status) {
return(status); /* NX_INVALID_PARAMETERS / NX_SIZE_ERROR / NX_OVERFLOW */ } ```
同じ関数の他のすべてのブランチは、失敗をまずRTSPステータスコードに変換します。18行前にあるCSeqブランチもまさにそれを行っています(2736行目はNX_RTSP_STATUS_CODE_BAD_REQUESTを返す)。生コードが`_nx_rtsp_server_error_response_send`(nx_rtsp_server.c:1234)に到達すると、これはそれを認識できず、すでに割り当てたレスポンスパケットを解放せずに戻るパスを取り、そのブロックはプールに戻りません。
空のSessionヘッダーを持つ6件のリクエストが22個のパケットプールに対して行われた場合: ``` valid requests: after request 6: pool available = 21, AFTER = 22 / 22 malformed requests: after request 6: pool available = 16, AFTER = 17 / 22 ```
リクエストごとに1つのブロックが生成され、クライアントが切断しても解放されません。26件のリクエストでプールはゼロになり、サーバーは割り当てに失敗し始めます。その後、誰もサービスを受けられなくなります。もしこのプールが shipped sampleのようにアプリケーションの他の部分と共有されている場合、スタック全体もそれに伴って停止します。
Sessionブランチにおける`_nx_utility_string_to_uint`の失敗をCSeqブランチと同様にNX_RTSP_STATUS_CODE_BAD_REQUESTに変換し、かつ`_nx_rtsp_server_error_response_send`のすべての終了パスでレスポンスパケットを解放してください。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.