{"id":15189,"date":"2026-09-04T19:02:30","date_gmt":"2026-09-04T11:02:30","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-64191"},"modified":"2026-09-04T19:02:30","modified_gmt":"2026-09-04T11:02:30","slug":"cve-2026-64191","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-64191","title":{"rendered":"CVE-2026-64191 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ni2c: stub: Reject I2C"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>i2c: stub: Reject I2C block transfers with invalid length<\/p>\n<p>The I2C_SMBUS_I2C_BLOCK_DATA case in stub_xfer() uses data-&gt;block[0]<br \/>\nas the transfer length. The existing check only clamps it to avoid<br \/>\noverrunning the chip-&gt;words[256] register array, but does not validate<br \/>\nit against I2C_SMBUS_BLOCK_MAX (32), which is the limit of the union<br \/>\ni2c_smbus_data.block buffer (34 bytes total). The driver is a<br \/>\ndevelopment\/test tool (CONFIG_I2C_STUB=m, not built by default)<br \/>\nthat must be loaded with a chip_addr= parameter.<\/p>\n<p>A local user with access to \/dev\/i2c-* can issue an I2C_SMBUS ioctl<br \/>\nwith I2C_SMBUS_I2C_BLOCK_DATA and data-&gt;block[0] &gt; 32, causing<br \/>\nstub_xfer() to read or write past the end of the union<br \/>\ni2c_smbus_data.block buffer:<\/p>\n<p> BUG: KASAN: stack-out-of-bounds in stub_xfer (drivers\/i2c\/i2c-stub.c:223)<br \/>\n Read of size 1 at addr ffff88800abcfd92 by task exploit\/81<br \/>\n Call Trace:<\/p>\n<p>  stub_xfer (drivers\/i2c\/i2c-stub.c:223)<br \/>\n  __i2c_smbus_xfer (drivers\/i2c\/i2c-core-smbus.c:593)<br \/>\n  i2c_smbus_xfer (drivers\/i2c\/i2c-core-smbus.c:536)<br \/>\n  i2cdev_ioctl_smbus (drivers\/i2c\/i2c-dev.c:391)<br \/>\n  i2cdev_ioctl (drivers\/i2c\/i2c-dev.c:478)<br \/>\n  __x64_sys_ioctl (fs\/ioctl.c:583)<br \/>\n  do_syscall_64 (arch\/x86\/entry\/syscall_64.c:94)<br \/>\n  entry_SYSCALL_64_after_hwframe (arch\/x86\/entry\/entry_64.S:130)<\/p>\n<p>The bug exists because i2c-stub implements .smbus_xfer directly,<br \/>\nbypassing the I2C_SMBUS_BLOCK_MAX validation in<br \/>\ni2c_smbus_xfer_emulated(). The I2C_SMBUS_BLOCK_DATA case in the same<br \/>\nfunction correctly validates against I2C_SMBUS_BLOCK_MAX, but the<br \/>\nI2C_SMBUS_I2C_BLOCK_DATA case does not.<\/p>\n<p>Fix by rejecting transfers with data-&gt;block[0] == 0 or<br \/>\ndata-&gt;block[0] &gt; I2C_SMBUS_BLOCK_MAX with -EINVAL, consistent with<br \/>\nboth the I2C_SMBUS_BLOCK_DATA case in the same function and the<br \/>\nI2C_SMBUS_I2C_BLOCK_DATA validation in i2c_smbus_xfer_emulated().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>i2c: stub: Reject I2C block transfers with invalid length<\/p>\n<p>The I2C_SMBUS_I2C_BLOCK_DATA case in stub_xfer() uses data-&gt;block[0]<br \/>\nas <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-15189","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/15189","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15189"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=15189"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=15189"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}