{"id":28470,"date":"2026-09-25T00:31:31","date_gmt":"2026-09-24T16:31:31","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93206"},"modified":"2026-09-25T00:31:31","modified_gmt":"2026-09-24T16:31:31","slug":"cve-2026-93206","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-93206","title":{"rendered":"CVE-2026-93206 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nPCI\/proc: Use file_ns"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>PCI\/proc: Use file_ns_capable() when checking config space read access<\/p>\n<p>proc_bus_pci_read() decides how much of the config space is readable based<br \/>\non capable(CAP_SYS_ADMIN), which checks the credentials of the task calling<br \/>\nread(), not the credentials of the process that opened the file.<\/p>\n<p>The sysfs equivalent, pci_read_config(), has checked the credentials of the<br \/>\nopening process since commit de139a339395 (&#8220;pci: check caps from sysfs file<br \/>\nopen to read device dependent config space&#8221;), so a privileged process can<br \/>\nopen the config space file and pass the file descriptor to an unprivileged<br \/>\nprocess (for example, a process running a KVM guest with an assigned<br \/>\ndevice), which can then read the entire config space.  The check was<br \/>\nsubsequently routed through the LSM framework in commit 47970b1b2aa6 (&#8220;pci:<br \/>\nuse security_capable() when checking capablities during config space read&#8221;)<br \/>\nand converted to the dedicated helper in commit ab0fa82b2df9 (&#8220;pci-sysfs:<br \/>\nuse proper file capability helper function&#8221;).<\/p>\n<p>Thus, the two interfaces check the same capability against different<br \/>\ncredentials.  Checking the credentials of the task calling read() makes the<br \/>\noutcome depend on who reads rather than who opened, so the restriction is<br \/>\nbypassed whenever a more privileged process reads through the descriptor.<br \/>\nChecking the credentials recorded in file-&gt;f_cred settles the decision at<br \/>\nopen() time and ties it to the file, where it cannot change with the<br \/>\ncaller.<\/p>\n<p>Use file_ns_capable() to check CAP_SYS_ADMIN against the credentials in<br \/>\neffect when the file was opened, bringing the procfs interface in line with<br \/>\nthe sysfs behaviour.<\/p>\n<p>As a result, a file descriptor opened by a privileged process and passed to<br \/>\nan unprivileged one now allows the entire config space to be read through<br \/>\nprocfs, matching sysfs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>PCI\/proc: Use file_ns_capable() when checking config space read access<\/p>\n<p>proc_bus_pci_read() decides how much of the config space is<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-28470","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/28470","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=28470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}