P.K. SHARMA

Cyber security intelligence, AI governance, practitioner analysis

APT can check a package, then install a different one as root, Debian says of CVE-2026-109518

Debian says a man-in-the-middle attacker can replace an APT package after verification and run code as root. By this site's count, 4 of the 8 Ubuntu releases patched are exposed by default because of one retry setting. CISA recorded no exploitation on 4 November. Read 8 November 2026.

By · LinkedIn · · 15 min read

4 of 8 Ubuntu releases are exposed by default, and one setting decides it (derived)

Ubuntu's notice USN-8996-1 patches APT on 8 releases. Canonical's blog post says "Ubuntu 22.04 LTS (Jammy Jellyfish) and newer releases are affected by default". Counting the notice's own table, that is 22.04 LTS, 24.04 LTS, 26.04 LTS and 26.10: 4 of 8 (derived). The other 4, from 14.04 LTS to 20.04 LTS, are exposed only where someone has set Acquire::Retries above zero.

The flaw is CVE-2026-109518. Debian's DSA 6607-1 describes the result in one line: a "man-in-the-middle attacker" can "replace a package after verification, resulting in the execution of arbitrary code as root". Ubuntu says the signature scheme "normally secures package mirrors". On Debian's account the check ran, and the file changed afterwards.

That count says nothing about any attack. As read at 09:32 UTC on Sunday 8 November 2026, CVE-2026-109518 is not in CISA's Known Exploited Vulnerabilities catalogue (version 2026.11.06, released 6 November at 19:44 UTC, 1,769 entries). CISA's enrichment entry in the CVE record gives Exploitation "none", time stamped 4 November. Debian and Ubuntu do not say either way whether anyone has used it. The count also does not say how many machines fetch packages over plain HTTP, how many have an attacker anywhere near that path, or how many of the older machines have retries switched on.

The fixes were published on 4 November, 4 calendar days before this read (derived). Canonical reserved the CVE number on 12 October, 23 calendar days before publication (derived); no primary says when the flaw was reported. Canonical sells Ubuntu Pro, the channel through which the fixes for the four older releases are delivered.

What happened, in the words of the people who fixed it

A researcher reported the flaw to APT's maintainers; Canonical says it was "responsibly disclosed". The CVE record, assigned by Canonical as the numbering authority, titles it "APT RCE via hard link reuse" and classes it as CWE-62 (UNIX hard link) and CWE-367 (time-of-check time-of-use race condition). The record sets out four conditions (the count is derived): an attacker able to manipulate the HTTP traffic "(including a malicious mirror or proxy)"; traffic "triggered by a package install"; a client that will "follow redirects and retry the download of package files"; and a retry setting above zero.

Three primaries describe the middle of the chain, each in different words:

  • Debian's advisory: "APT can merge two different package downloads after an HTTP redirect gives them the same URI", then "Improper file handling when resuming an HTTP download" allows the replacement.
  • APT's maintainers, in their security post: redirects and "standard transient HTTP server errors that cause APT to retry downloads", leading APT to "override existing hardlinks with a chosen payload".
  • Ubuntu's notice: "APT incorrectly handled hard links when encountering redirects and retrying package downloads".

Root follows from what a package is. Ubuntu says that when a system installs a .deb "it executes the package's scripts with root privileges". The maintainers call the result "the potential for remote code execution".

Drawn by this site from the CVE record, Debian's advisory, the APT maintainers' post and Canonical's blog. The order follows Debian's sentence; no primary prints a step by step sequence.

No primary prints the exact sequence inside APT. Debian's tracker page names the fixing commit. This site has not read the patch and goes no further than the record.

Scope, on Canonical's word: the flaw is in the HTTP backend and "affects any APT-based frontend", including aptitude and Ubuntu's graphical tools. It "does not affect software installation via snap packages", and "Other transport methods (such as FTP) are not affected".

The order of publication on 4 November, in UTC: the maintainers' post at 12:00:16 (printed as 13:00:16 +0100), Debian's advisory at 12:07:32, Debian's LTS advisory at 12:46:36, the CVE record at 15:49:02. The maintainers' announcement that updates were available came 3 hours 48 minutes 46 seconds before the CVE record (derived).

A newer default widened the door. It did not build it

The record says "the value 3 is the default starting with Debian 12 (bookworm) and Ubuntu 22.04 LTS (Jammy Jellyfish), so older releases are unaffected in a default configuration". The tempting reading is that a recent default created the problem. The primaries do not support that:

  • The record's affected ranges start at version 0 for both Debian and Ubuntu, well before the default changed.
  • The maintainers say retries have "only been the default since APT 2.3.2", then warn that "many user scripts may have been using it in older releases".
  • Ubuntu patched back to 14.04 LTS, and says older releases are "only affected if the Acquire::Retries APT configuration setting is set to a non-zero value".

The accurate version: the setting moved exposure from people who opted in to everyone on a current release. "Unaffected in a default configuration" describes a fresh install. It does not describe a machine that has spent years under a provisioning script.

Drawn by this site. Versions from Ubuntu's notice, Debian's two advisories and Debian's tracker; the grouping is derived from the CVE record's wording.

Fixed apt version per release, as printed by USN-8996-1, DSA 6607-1, DLA 4880-1 and Debian's tracker, read 8 November 2026. The exposure column is derived from the CVE record and Canonical's blog.

ReleaseFixed version and channelExposed by default?
Ubuntu 26.103.3.3ubuntu0.1, standard supportYes
Ubuntu 26.04 LTS3.2.1ubuntu0.1, standard supportYes
Ubuntu 24.04 LTS2.8.4ubuntu0.1, standard supportYes
Ubuntu 22.04 LTS2.4.15ubuntu0.1, standard supportYes
Ubuntu 20.04 LTS2.0.12+esm1, Ubuntu ProNo, only with retries set
Ubuntu 18.04 LTS1.6.19+esm1, Ubuntu ProNo, only with retries set
Ubuntu 16.04 LTS1.2.36+esm1, Ubuntu Pro with Legacy add-onNo, only with retries set
Ubuntu 14.04 LTS1.0.1ubuntu2.24+esm4, Ubuntu Pro with Legacy add-onNo, only with retries set
Debian 12 bookworm2.6.2, DLA 4880-1Yes
Debian trixie (stable)3.0.4, DSA 6607-1Yes, by the record's "starting with"
Debian forky3.3.6, tracker marks fixedYes, by the record's "starting with"
Debian sid3.3.7 current; tracker lists 3.3.6 as the fixYes, by the record's "starting with"

The ranges, counted. The record lists 21 affected ranges (derived): 13 under Debian and 8 under Ubuntu. Of those, 20 end in a lessThan value, which is the fixed version. One does not: Debian's entry from 1.8.3 ends lessThanOrEqual 1.8.5. That entry has an upper bound and no stated fix. The maintainers' list of fixed branches also goes from 1.8.2.4 straight to 2.0.12. No primary says why. Treat it as affected through 1.8.5 with no fixed version on the record.

Two traps for anyone reading the record with a scanner (this site's reading). First, the suffix. 6 of Ubuntu's 8 fixed strings are a Debian fixed number plus a suffix, for example 2.4.15 for Debian and 2.4.15ubuntu0.1 for Ubuntu, so a bare 2.4.15 on Ubuntu sits below the fix. The 3.3 series differs outright: 3.3.6 under Debian and 3.3.3ubuntu0.1 under Ubuntu. Match each host against its own distribution's entry. Second, the gaps. Each vendor's defaultStatus is "unaffected", so a version between listed ranges passes a literal reading. APT 2.3.2, the version the maintainers name as the start of the default, falls in no listed range. No primary says whether such versions are safe; the maintainers list only stable branches.

Who scored what, and what AT:P and UI:P mean here

Who assigned what. CVE record, NVD record, CISA catalogue, Ubuntu's CVE page and the APT maintainers' post, all read 8 November 2026.

WhoWhat they recordedNote
Canonical, as numbering authorityCVSS 4.0 base 7.7 HighThe only CVSS score in the record
UbuntuPriority HighIts page says to see the score for the reason
APT's maintainers"critical file verification bypass"A label, with no score
CISA, enrichment entryExploitation none, Automatable no, Technical Impact totalTime stamped 4 November; entry updated 5 November
CISA, KEV catalogueNot listedVersion 2026.11.06, as read at 09:32 UTC on Sunday 8 November 2026
NVDStatus "Received"Shows Canonical's score as Secondary; no NVD assessment of its own
DebianNo score in DSA 6607-1, DLA 4880-1 or the tracker pageRecommends upgrading

AT:P, Attack Requirements: Present. FIRST's CVSS 4.0 specification uses this where "The successful attack depends on the presence of specific deployment and execution conditions", and gives two examples: "A race condition must be won" and network injection, meaning "vulnerabilities requiring an on-path attacker". Both fit a record that cites a time-of-check race and an attacker on the HTTP path. The value records that the attack cannot be launched from just anywhere.

UI:P, User Interaction: Passive. FIRST describes "limited interaction by the targeted user" and says "These interactions would be considered involuntary". One of its examples is "using an application which generates traffic over an untrusted or compromised network". Here, the record says the traffic is "triggered by a package install", and Canonical says an attacker can act "only if the target system attempts to install a .deb package".

Canonical publishes no reasoning for either value, so that mapping is this site's reading. One consequence is an inference, and is labelled as one: FIRST's definition allows "a separate user (or user-initiated process)", and Canonical says unattended upgrades are "enabled by default for Ubuntu 16.04 LTS onwards" and "Applies new security updates every 24 hours automatically". Passive here may mean a timer rather than a person. Canonical does not say whether those automatic runs are exposed before the fix lands.

Labels doing the work of a control

"Verified." Canonical says the signature scheme "remains a much stronger integrity protection" than TLS, and nothing here says the cryptography failed. A signature check protects the file that was checked. If a different file is installed, the check has answered the wrong question.

"Unaffected in a default configuration." A default belongs to a clean install. The maintainers' warning about user scripts is the reason to read your own configuration instead of the release number.

"HTTPS." Canonical's sentence is exact: "enabling TLS provides protection against this particular vulnerability when exploited by an on-path attacker". Its zero retries statement is wider, covering a case "whether exploited by an on-path attacker or a potentially malicious mirror". Encrypted delivery from a malicious mirror is still delivery from that mirror, so this site reads the HTTPS advice as covering the path and not the mirror. Canonical does not spell that out, and Debian's pages do not mention HTTPS at all.

What the primaries state, and what they do not

Stated and not stated, from the CVE record, DSA 6607-1, DLA 4880-1, the APT maintainers' post, USN-8996-1 and Canonical's blog, read 8 November 2026.

QuestionStatedNot stated
Has it been used in attacks?CISA: Exploitation none, 4 November. Not in KEV at this read.Any statement from Debian or Ubuntu either way
Is there a public proof of concept?None of the primaries mentions one. The CVSS threat metric is not defined.Whether one exists. This site did not search for one.
Which mirrors or proxies?The category: "a malicious mirror or proxy"Any named mirror, proxy or network
How many machines use plain HTTP?Some community and country mirrors lack HTTPS, says CanonicalAny count, for Debian or Ubuntu
Does HTTPS remove the exposure?Canonical: yes for an on-path attackerDebian says nothing. Canonical does not address TLS against a malicious mirror or a proxy that ends TLS.
Does zero retries stop it?Canonical: "no downloads are retried and the vulnerability cannot be exploited"Debian gives no workaround in DSA 6607-1, DLA 4880-1 or the maintainers' post
Are older releases safe?In a default configuration, yes, says the recordHow many older machines set retries
Derivative distributions?The record says "derivative Linux distributions" are in scopeWhich ones, and their fixed versions
Container and golden images?NothingWhether images carrying old apt need rebuilding, though the logic applies
How would you tell afterwards?NothingNo indicator, log line or check for a past swap

Where the sources differ

These stay as differences. This site does not resolve them.

Differences between the primaries, read 8 November 2026.

PointOne sourceAnother
SeverityAPT's maintainers: "critical"Canonical: CVSS 7.7 High, Ubuntu priority High
CertaintyDebian: "resulting in the execution of arbitrary code as root"Ubuntu's notice: "could possibly use"; maintainers: "the potential for"
What happens to verificationDebian: replaced "after verification"Canonical: installs "even if it fails signature verification"; record: "unverified package"
Retry or resumeDebian: "resuming an HTTP download"Record, Ubuntu and maintainers: retry
Fixed version, 3.3 seriesDebian: 3.3.6Ubuntu: 3.3.3ubuntu0.1
Workaround sourceCanonical: a zero retries option on its own update commandsA participant on oss-security, not Debian: an apt.conf line that "may" help

What else the update carries, and what it leaves out

Debian's advisory says "Additionally this update addresses several out-of-bounds access issues". The maintainers' post lists 6 bundled fixes (derived count) and says "We do not expect any direct security impact outside denial of service" of third party applications that parse files across a privilege boundary, such as PackageKit. It also records a memory exhaustion fix for series 2.6, 2.8 and 3.0.

Two things are deliberately not fixed, on the maintainers' word. "Several out-of-bounds memory accesses exist in apt-ftparchive" stay, because of fix complexity and little testing in practice. And "An out-of-bounds access in the parser for build dependencies has not been fixed", because a rewrite carries too much regression risk. Anyone feeding untrusted .deb files to apt-ftparchive, or untrusted build dependency strings to that parser, should not assume this update covers them.

What to do, in order

Steps 1 to 4 are Canonical's advice for Ubuntu, except where marked. Debian's only instruction is "We recommend that you upgrade your apt packages". The rest are this site's suggestions.

Take this with you

Ranked actions

  • Upgrade now, with retries off for that run. Canonical's order is a full upgrade with Acquire::Retries set to zero, because the patch arrives through the client that needs patching. The exact command is under Technical details.
  • If a full upgrade is not possible, upgrade the apt source package alone, with retries still at zero. Canonical gives this as the fallback. On Debian the same option is this site's suggestion; Debian's pages do not mention it.
  • Confirm the installed version against the table above, using the full version string including any suffix. Canonical prints a command to list it.
  • Where you cannot rule out an attacker on the path, move sources to HTTPS before updating, as Canonical advises. Run apt update afterwards and watch for errors, because some community and country mirrors do not support HTTPS. Debian's pages do not address HTTPS.
  • This site's suggestion: on Ubuntu 20.04 LTS and older, or Debian older than 12, search apt configuration and provisioning scripts for Acquire::Retries. Those machines are exposed only if it is set, and the fix on the older Ubuntu releases needs Ubuntu Pro.
  • This site's suggestion: list what sits on the path between each host and its archive: forward proxies, caching mirrors, build and CI runners, and any network you do not run.
  • This site's suggestion: rebuild container base images and golden images that carry old apt, because a patched host does not patch the image it launches. No primary addresses images.
  • This site's suggestion: do not count unattended upgrades as proof. Canonical says they apply within 24 hours; check the version on a sample of hosts.
  • This site's suggestion: make scanners use each distribution's own entry, and handle separately any apt version falling in a gap between the listed ranges.

Technical details

The condition. This is the record's sentence on the setting. It lives in APT configuration as Acquire::Retries. A defender checks whether any host sets it above zero, or inherits the default of 3.

Text
It requires the client to have a non-zero Acquire::Retries configuration setting; the value 3 is the default starting with Debian 12 (bookworm) and Ubuntu 22.04 LTS (Jammy Jellyfish), so older releases are unaffected in a default configuration
CVE record for CVE-2026-109518, description, assigned by Canonical. Read 8 November 2026.

The score. The vector as Canonical assigned it. AT:P and UI:P are explained above. Feed it to whatever computes your own environmental score.

Text
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
CVE record and Ubuntu's CVE page. Read 8 November 2026.

CISA's enrichment. The three decision points in the record. Exploitation carries a date and can change, so re-read it rather than quoting this copy later.

Text
[
  {
    "Exploitation": "none"
  },
  {
    "Automatable": "no"
  },
  {
    "Technical Impact": "total"
  }
]
timestamp: 2026-11-04T00:00:00+00:00
CISA enrichment container in the CVE record, SSVC version 2.0.3. Layout as in the record's JSON. Read 8 November 2026.

The odd entry. The one range of 21 with no fixed version. Note lessThanOrEqual where every other entry has lessThan.

Text
{
  "status": "affected",
  "version": "1.8.3",
  "lessThanOrEqual": "1.8.5",
  "versionType": "dpkg"
}
CVE record, Debian product entry, copied from the JSON. Read 8 November 2026.

Fixed versions. Compare with the installed package. Layout is this site's; the version strings are as printed.

Text
Ubuntu (USN-8996-1)
  26.10      stonking  apt 3.3.3ubuntu0.1
  26.04 LTS  resolute  apt 3.2.1ubuntu0.1
  24.04 LTS  noble     apt 2.8.4ubuntu0.1
  22.04 LTS  jammy     apt 2.4.15ubuntu0.1
  20.04 LTS  focal     apt 2.0.12+esm1
  18.04 LTS  bionic    apt 1.6.19+esm1
  16.04 LTS  xenial    apt 1.2.36+esm1
  14.04 LTS  trusty    apt 1.0.1ubuntu2.24+esm4

Debian
  bookworm (security)  2.6.2  DLA-4880-1
  trixie (security)    3.0.4  DSA-6607-1
  forky                3.3.6  tracker status: fixed
  sid                  3.3.7  tracker status: fixed (fixed version listed for unstable: 3.3.6)
Ubuntu's USN-8996-1, Debian's DSA 6607-1 and DLA 4880-1, and Debian's tracker. Read 8 November 2026.

Canonical's commands. Listing the installed version, then the recommended upgrade, then the fallback. These are Canonical's, for Ubuntu, and each sets retries to zero for that run only.

Text
apt list --installed '?source-package(^apt$)'

sudo apt update && sudo apt upgrade -o Acquire::Retries=0

sudo apt update && sudo apt install -o Acquire::Retries=0 --only-upgrade '?source-package(^apt$)'
Canonical's blog post on CVE-2026-109518, 4 November 2026. Copied exactly. Read 8 November 2026.

Canonical's HTTPS switch. Rewrites Ubuntu archive URLs in your sources files. Canonical notes it does not touch other mirrors or repositories. Run apt update afterwards.

Text
sudo sed -Ei 's!http://((([a-z]+\.)?archive|security|ports)\.ubuntu\.com)!https://\1!' /etc/apt/sources.list /etc/apt/sources.list.d/*.list /etc/apt/sources.list.d/*.sources
Canonical's blog post on CVE-2026-109518, 4 November 2026. Copied exactly. Read 8 November 2026.

The fixing commit. Debian's tracker names it for 3.3.6. Maintainers of derivative distributions can use it to check whether they carry the fix. This site has not read the commit.

Text
5af16a8ad0f155233dfb10b7c92ad1903112ef79 (3.3.6)
Debian security tracker notes for CVE-2026-109518, commit identifier and version as printed. Read 8 November 2026.

A participant on the oss-security list separately suggested adding a zero retries line to apt.conf and wrote that it "may mitigate the issue until you upgrade". That is not Debian's or Ubuntu's advice. No primary prints attack traffic or exploit steps, and none appears here.

The question Debian and Ubuntu leave open

Every primary tells you how to stop this from now on. None tells you how to find out whether it already happened. If a machine installed a swapped package before it was patched, the package would have passed through the normal install path with root privileges, and neither Debian nor Ubuntu names any indicator, log line or check that would show it. For a host that has fetched packages over a network you do not control: what evidence do you have that the package you installed is the package you checked?

Key facts

Sources

  1. PrimaryCVE record for CVE-2026-109518: description, affected ranges, CVSS 4.0 vector and the CISA enrichment container. Read in fullCVE Program (assigned by Canonical)accessed 2026-11-08
  2. PrimaryDSA 6607-1 apt security update, 4 November 2026: the mechanism and the trixie fix. Read in fullDebianaccessed 2026-11-08
  3. PrimaryDLA 4880-1 apt security update, 4 November 2026: the bookworm fix. Read in fullDebian LTSaccessed 2026-11-08
  4. PrimaryAPT-2026-11-01 security update, 4 November 2026: the retry condition, fixed branches, bundled and excluded fixes. Read in fullAPT maintainers (Debian deity list)accessed 2026-11-08
  5. PrimaryTracker page for CVE-2026-109518: fixed versions per branch and the named commit. Read in fullDebian security trackeraccessed 2026-11-08
  6. PrimaryTracker page for the apt source package: versions per branch. Read in fullDebian security trackeraccessed 2026-11-08
  7. PrimaryUSN-8996-1 APT vulnerability, 4 November 2026: fixed versions for 8 releases. Read in fullCanonical (Ubuntu)accessed 2026-11-08
  8. PrimaryUbuntu's page for CVE-2026-109518: priority, status per release and the CVSS breakdown. Read in fullCanonical (Ubuntu)accessed 2026-11-08
  9. PrimaryCVE-2026-109518 APT vulnerability fixes available, 4 November 2026: exposure by release, HTTPS, zero retries and commands. Read in fullCanonical (Ubuntu)accessed 2026-11-08
  10. PrimaryNVD record for CVE-2026-109518: status Received, Canonical's score listed as SecondaryNIST NVDaccessed 2026-11-08
  11. PrimaryKnown Exploited Vulnerabilities catalogue, version 2026.11.06: CVE-2026-109518 not listedCISAaccessed 2026-11-08
  12. PrimaryCVSS v4.0 specification: definitions of Attack Requirements and User InteractionFIRSTaccessed 2026-11-08
  13. Reported byList post of 4 November 2026 relaying the advisory and suggesting a zero retries setting. Not Debian's or Ubuntu's adviceoss-security list (Openwall archive)accessed 2026-11-08

Share this briefing

Know someone who owns this problem? Send it to them.

Related briefings

The briefing, in your inbox

Practitioner analysis of cyber and AI security news. No vendor noise.

How often

Every new briefing in one email, at 7am, or at 7am, 12:30pm and 6pm. Nothing is sent when nothing is new. Unsubscribe any time.