<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Sun, 04 Oct 2026 09:44:14 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-64273 — Input: iforce - bound the device-reported force-feedback effect index</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-64273</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;Input: iforce - bound the device-reported force-feedback effect index&lt;/p&gt;
&lt;p&gt;iforce_process_packet() handles a status report (packet id 0x02) by
taking a force-feedback effect index straight from the device wire and
using it to address the per-effect state array:&lt;/p&gt;
&lt;p&gt;i = data[1] &amp;amp; 0x7f;
	if (data[1] &amp;amp; 0x80) {
		if (!test_and_set_bit(FF_CORE_IS_PLAYED,
				      iforce-&amp;gt;core_effects[i].flags))
			...
	} else if (test_and_clear_bit(FF_CORE_IS_PLAYED,
				      iforce-&amp;gt;core_effects[i].flags)) {
		...
	}&lt;/p&gt;
&lt;p&gt;The index is masked only with 0x7f, so it ranges 0..127, but
core_effects[] holds only IFORCE_EFFECTS_MAX (32) entries.  For an index
of 32..127 the test_and_set_bit()/test_and_clear_bit() is an
out-of-bounds single-bit read-modify-write past the array.  core_effects[]
is the second-to-last member of struct iforce, so the write lands in the
trailing members and beyond the embedding kzalloc()&amp;#39;d iforce_serio /
iforce_usb object.&lt;/p&gt;
&lt;p&gt;data[1] is unvalidated device payload on both transports (the USB
interrupt endpoint and serio), and the status path is not gated on force
feedback being present, so a malicious or counterfeit device can set or
clear a bit at an attacker-chosen offset past the object.&lt;/p&gt;
&lt;p&gt;Reject an out-of-range index instead of indexing with it.  Bound against
the array dimension IFORCE_EFFECTS_MAX rather than dev-&amp;gt;ff-&amp;gt;max_effects so
the check guarantees memory safety regardless of how many effects the
device regi…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;Input: iforce - bound the device-reported force-feedback effect index&lt;/p&gt;
&lt;p&gt;iforce_process_packet() handles a status report (packet id 0x02) by
taking a force-feedback effect index straight from the device wire and
using it to address the per-effect state array:&lt;/p&gt;
&lt;p&gt;i = data[1] &amp;amp; 0x7f;
	if (data[1] &amp;amp; 0x80) {
		if (!test_and_set_bit(FF_CORE_IS_PLAYED,
				      iforce-&amp;gt;core_effects[i].flags))
			...
	} else if (test_and_clear_bit(FF_CORE_IS_PLAYED,
				      iforce-&amp;gt;core_effects[i].flags)) {
		...
	}&lt;/p&gt;
&lt;p&gt;The index is masked only with 0x7f, so it ranges 0..127, but
core_effects[] holds only IFORCE_EFFECTS_MAX (32) entries.  For an index
of 32..127 the test_and_set_bit()/test_and_clear_bit() is an
out-of-bounds single-bit read-modify-write past the array.  core_effects[]
is the second-to-last member of struct iforce, so the write lands in the
trailing members and beyond the embedding kzalloc()&amp;#39;d iforce_serio /
iforce_usb object.&lt;/p&gt;
&lt;p&gt;data[1] is unvalidated device payload on both transports (the USB
interrupt endpoint and serio), and the status path is not gated on force
feedback being present, so a malicious or counterfeit device can set or
clear a bit at an attacker-chosen offset past the object.&lt;/p&gt;
&lt;p&gt;Reject an out-of-range index instead of indexing with it.  Bound against
the array dimension IFORCE_EFFECTS_MAX rather than dev-&amp;gt;ff-&amp;gt;max_effects so
the check guarantees memory safety regardless of how many effects the
device regi…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-64273</guid>
    </item>
  </channel>
</rss>
