CVE-2026-64274 in Linux
要約
〜によって VulDB • 2026年07月25日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
Input: goodix - デバイスが報告する接触点の数を制限する
goodix_ts_read_input_report()関数は、デバイスから報告されたタッチポイントの数をスタック上のバッファにコピーします。
u8 point_data[2 + GOODIX_MAX_CONTACT_SIZE * GOODIX_MAX_CONTACTS];
このバッファは最大GOODIX_MAX_CONTACTS(10)個の接触点に対応するサイズで確保されています。唯一の実行時のチェックでは、割り込みごとのカウントがts->max_touch_numに対して制限されますが、この値はデバイスの設定ブロック内の4ビットフィールドからそのまま取得されており、上限処理が行われません。
ts->max_touch_num = ts->config[MAX_CONTACTS_LOC] & 0x0f;
このニブル(下位4ビット)の値は0〜15となり得るため、故障した悪意のあるコントローラや偽造品(またはI2Cバスを改ざんする攻撃者)が最大15個の接触点を報告することが可能です。goodix_ts_read_input_report()関数はその後、最大15までのtouch_numを受け入れ、2回目のgoodix_i2c_read()呼び出しにより、単一接触点ヘッダからts->contact_size * (touch_num - 1)バイト分をpoint_data配列に書き込みます。これにより、92バイトのバッファに対して最大30バイト(9バイト形式のレポートでは45バイト)分のスタック外書き出しが発生します。
設定を読み込む際にmax_touch_numをGOODIX_MAX_CONTACTS(point_data[]が対応する接触点数)で制限するようにしました。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.