JVNDB-2026-032205 | |
LinuxのLinux Kernelにおける解放済みメモリの使用に関する脆弱性 | |
| 概要 | |
Linuxカーネルにおいて、以下の脆弱性が修正されました:HID: letsketchドライバーのunbind時に発生するinrange_timerのUse-After-Free (UAF)問題の修正です。letsketch_driverは.removeコールバックを提供していませんが、letsketch_probe()関数はデバイスごとにタイマーを設定しています。timer_setup(&data->inrange_timer, letsketch_inrange_timeout, 0);このタイマーはペンが検出されるたびにletsketch_raw_event()から100ミリ秒のタイムアウトで再設定され、そのコールバックはdata->input_tabletをデリファレンスし、合成のBTN_TOOL_PENリリースを送信します。letsketch_dataはdevm_kzalloc()で割り当てられており、input_devのフィールドもletsketch_setup_input_tablet()を通じてdevmで割り当てられています。デバイスのunbind(USBの抜去やrmmod)時には、HIDコアがデフォルトの解放処理とdevmのクリーンアップを実行し、letsketch_dataとinputデバイスの両方を解放します。しかし、.removeコールバックが存在しないため、タイマーのキャンセルは行われません。もしraw_eventがunbindから約100ms以内にタイマーを設定していた場合、この保留中のタイマーが解放済みメモリ上で起動し、dataおよびdata->input_tabletのUse-After-Free読み込みが発生し、その後input_report_key()やinput_sync()が解放済みのinput_devに対して処理を行ってしまいます。同様の問題はprobeエラーパスでも発生する可能性があります。hid_hw_start()が常時ポーリングを行うイレギュラーなデバイスでI/Oを有効化し、その後失敗した場合、raw_eventがデータ解放前にタイマーを設定していることがあります。修正内容は.removeコールバックを追加し、まずhid_hw_stop()を呼び出すことです。hid_hw_stop()はraw_event()を送出するURBを同期的に停止するため、戻ると以降タイマーを再設定する経路は存在しません。次にtimer_shutdown_sync()を呼び出し、実行中のコールバックを完了させ、以降のmod_timer()呼び出しを永久に無効化します。同様に、probeエラーパスにもtimer_shutdown_sync()を適用し、タイマーがdataよりも長く生存しないことを保証します。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 7.8 (重要) [NVD値]
| |
| 影響を受けるシステム | |
|
| |
Linux | |
|
| |
| 想定される影響 | |
・当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 | |
| 対策 | |
リリース情報、またはパッチ情報が公開されています。参考情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
|
| |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2026/07/25 |
| 登録日 | 2026/09/07 |
| 最終更新日 | 2026/09/07 |



