{"id":40492,"date":"2026-11-06T15:20:43","date_gmt":"2026-11-06T07:20:43","guid":{"rendered":"https:\/\/www.deepin.org\/?p=40492"},"modified":"2026-11-06T15:23:17","modified_gmt":"2026-11-06T07:23:17","slug":"cve-2026-109518-vulnerability-fix","status":"publish","type":"post","link":"https:\/\/www.deepin.org.cn\/en\/cve-2026-109518-vulnerability-fix\/","title":{"rendered":"Urgent Security Update | APT Download Verification Bypass \u2014 Please Update Now"},"content":{"rendered":"<img loading=\"lazy\" class=\"alignnone size-full wp-image-40493\" src=\"https:\/\/www.deepin.org\/wp-content\/uploads\/2026\/11\/\u82f1\u6587_\u526f\u672c.png\" alt=\"\" width=\"900\" height=\"383\" srcset=\"https:\/\/www.deepin.org.cn\/wp-content\/uploads\/2026\/11\/\u82f1\u6587_\u526f\u672c.png 900w, https:\/\/www.deepin.org.cn\/wp-content\/uploads\/2026\/11\/\u82f1\u6587_\u526f\u672c-300x128.png 300w, https:\/\/www.deepin.org.cn\/wp-content\/uploads\/2026\/11\/\u82f1\u6587_\u526f\u672c-150x64.png 150w, https:\/\/www.deepin.org.cn\/wp-content\/uploads\/2026\/11\/\u82f1\u6587_\u526f\u672c-768x327.png 768w, https:\/\/www.deepin.org.cn\/wp-content\/uploads\/2026\/11\/\u82f1\u6587_\u526f\u672c-24x10.png 24w, https:\/\/www.deepin.org.cn\/wp-content\/uploads\/2026\/11\/\u82f1\u6587_\u526f\u672c-36x15.png 36w, https:\/\/www.deepin.org.cn\/wp-content\/uploads\/2026\/11\/\u82f1\u6587_\u526f\u672c-48x20.png 48w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">Dear deepin users and community members,<\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">A vulnerability has been discovered in APT, the package manager, that allows package integrity verification to be bypassed. Under specific conditions, an attacker positioned on the network path can substitute a package of their own making for one that has already passed verification, and have it executed with root privileges.<\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">Since APT is the component through which every system update passes, the impact of exploitation would be substantial. All users are advised to update as soon as possible.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h1 class=\"md-end-block md-heading\"><strong><span class=\"md-plain\">Vulnerability details<\/span><\/strong><\/h1>\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s \"><strong><span class=\"md-plain\">CVE ID:<\/span><\/strong><\/span><span class=\"md-plain\"> CVE-2026-109518<\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s \"><strong><span class=\"md-plain\">Description:<\/span><\/strong><\/span><span class=\"md-plain\"> When following an HTTP redirect, APT can merge two different package downloads into the same target file. If the download is then retried (resumed), the reused hard link is handled improperly, opening a window between verification and use \u2014 a time-of-check to time-of-use (TOCTOU) condition. An attacker can replace the contents of a package after it has been verified, so that the package ultimately installed differs from the one that was checked. This bypasses the verification boundary without requiring a valid signature on the replacement package. Reported by Max Justicz.<\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s \"><strong><span class=\"md-plain\">Severity:<\/span><\/strong><\/span><span class=\"md-plain\"> \u26a0\ufe0f\u26a0\ufe0f\u26a0\ufe0f <\/span><span class=\"md-pair-s \"><strong><span class=\"md-plain\">High<\/span><\/strong><\/span><span class=\"md-plain\"> (CVSS v4.0: 7.7)<\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s \"><strong><span class=\"md-plain\">Prerequisites:<\/span><\/strong><\/span><\/p>\n<ol class=\"ol-list\" start=\"\">\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">The attacker is on the network path (same LAN, a rogue proxy, or a compromised mirror);<\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">The package repository is fetched over HTTP and redirects are followed;<\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s\" spellcheck=\"false\"><code>Acquire::Retries<\/code><\/span><span class=\"md-plain\"> is non-zero.<\/span><\/p>\n<\/li>\n<\/ol>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">A successfully installed package runs with root privileges. No exploitation in the wild has been reported to date.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h1 class=\"md-end-block md-heading\"><strong><span class=\"md-plain\">Affected systems<\/span><\/strong><\/h1>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">All deepin 25 users who have not yet applied this update.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h1 class=\"md-end-block md-heading\"><strong><span class=\"md-plain\">Fix<\/span><\/strong><\/h1>\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s \"><strong><span class=\"md-plain\">deepin 25:<\/span><\/strong><\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s\" spellcheck=\"false\"><code>apt<\/code><\/span><span class=\"md-plain\"> has been updated to <\/span><span class=\"md-pair-s \"><strong><span class=\"md-plain\">2.8.4deepin1<\/span><\/strong><\/span><span class=\"md-plain\">, which includes the upstream security update: the download methods now open target files <\/span><span class=\"md-pair-s \"><strong><span class=\"md-plain\">exclusively (O_EXCL)<\/span><\/strong><\/span><span class=\"md-plain\">, so two downloads can no longer share and merge into the same file. Five out-of-bounds access issues are fixed as well:<\/span><\/p>\n<ul class=\"ul-list\" data-mark=\"-\">\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s\" spellcheck=\"false\"><code>deb<\/code><\/span><span class=\"md-plain\">: guard against unsigned underflow when trimming control newlines;<\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s\" spellcheck=\"false\"><code>gpgv<\/code><\/span><span class=\"md-plain\">: do not advance past the null terminator in <\/span><span class=\"md-pair-s\" spellcheck=\"false\"><code>PushEntryWithKeyID<\/code><\/span><span class=\"md-plain\">;<\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s\" spellcheck=\"false\"><code>debDebFileParser<\/code><\/span><span class=\"md-plain\">: reject <\/span><span class=\"md-pair-s\" spellcheck=\"false\"><code>.deb<\/code><\/span><span class=\"md-plain\"> packages missing a <\/span><span class=\"md-pair-s\" spellcheck=\"false\"><code>Version<\/code><\/span><span class=\"md-plain\"> field;<\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s\" spellcheck=\"false\"><code>srvrec<\/code><\/span><span class=\"md-plain\">: reject <\/span><span class=\"md-pair-s\" spellcheck=\"false\"><code>res_query<\/code><\/span><span class=\"md-plain\"> answers larger than the buffer;<\/span><\/p>\n<\/li>\n<li class=\"md-list-item\">\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s\" spellcheck=\"false\"><code>tagfile<\/code><\/span><span class=\"md-plain\">: fix the unbounded backward scan in <\/span><span class=\"md-pair-s\" spellcheck=\"false\"><code>Fill()<\/code><\/span><span class=\"md-plain\">'s trailing-newline check.<\/span><\/p>\n<\/li>\n<\/ul>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">Please update via <\/span><span class=\"md-pair-s \"><strong><span class=\"md-plain\">Control Center<\/span><\/strong><\/span><span class=\"md-plain\">, or from a terminal:<\/span><\/p>\n<p><span role=\"presentation\">sudo apt update &amp;&amp; sudo apt dist-upgrade<\/span><\/p>\n<p class=\"md-end-block md-p\"><span class=\"md-plain\">Afterwards, confirm the version with <\/span><span class=\"md-pair-s\" spellcheck=\"false\"><code>apt --version<\/code><\/span><span class=\"md-plain\"> (expect <\/span><span class=\"md-pair-s\" spellcheck=\"false\"><code>2.8.4deepin1<\/code><\/span><span class=\"md-plain\">). <\/span><span class=\"md-pair-s \"><strong><span class=\"md-plain\">No reboot is required.<\/span><\/strong><\/span><\/p>\n<blockquote>\n<p class=\"md-end-block md-p\"><span class=\"md-pair-s \"><strong><span class=\"md-plain\">Note:<\/span><\/strong><\/span><span class=\"md-plain\"> the download of the patched apt itself is still performed by the old, vulnerable apt. We recommend completing this update from a trusted network. If you cannot update immediately, running <\/span><span class=\"md-pair-s\" spellcheck=\"false\"><code>sudo apt -o Acquire::Retries=0 update<\/code><\/span><span class=\"md-plain\"> disables download retries and removes one required condition \u2014 this is a temporary mitigation only and does not replace the update.<\/span><\/p>\n<\/blockquote>\n<div class=\"md-hr md-end-block\" tabindex=\"-1\">\n<hr \/>\n<\/div>\n<p class=\"md-end-block md-p md-focus\"><span class=\"md-plain\">That's all for this update. Thank you, as always, for supporting the deepin community!<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>Dear deepin users and community members, A vulnerability has been discovered in APT, the package manager, that allows package integrity verification to be bypassed. Under specific conditions, an attacker positioned on the network path can substitute a package of their own making for one that has already passed verification, and have it executed with root privileges. Since APT is the component through which every system update passes, the impact of exploitation would be substantial. All users are advised to update as soon as possible. &nbsp; Vulnerability details CVE ID: CVE-2026-109518 Description: When following an HTTP redirect, APT can merge two ...<a href=https:\/\/www.deepin.org.cn\/en\/cve-2026-109518-vulnerability-fix\/>Read more<\/a><\/p>\n","protected":false},"author":18825,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[213,93],"tags":[],"_links":{"self":[{"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/posts\/40492"}],"collection":[{"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/users\/18825"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/comments?post=40492"}],"version-history":[{"count":3,"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/posts\/40492\/revisions"}],"predecessor-version":[{"id":40497,"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/posts\/40492\/revisions\/40497"}],"wp:attachment":[{"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/media?parent=40492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/categories?post=40492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deepin.org.cn\/en\/wp-json\/wp\/v2\/tags?post=40492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}