APT 是 Debian 與 Ubuntu 用來下載、安裝軟體套件的工具。Debian 與 Ubuntu 在 2026 年 11 月 4 日發布更新,修補編號 CVE-2026-109518 的漏洞:能竄改 HTTP 下載流量的攻擊者,可以在套件通過驗證之後把它換成惡意套件,安裝時以 root 權限執行。Debian 12、Ubuntu 22.04 以後的版本在預設設定下都受影響。
APT 開發者在公告中把它標為 critical(重大)的驗證繞過漏洞,Ubuntu 在自己的分級中評為 High(高)。這篇會從 APT 怎麼驗證套件開始,把漏洞原理、受影響的條件、各版本修補、更新指令、暫時解法與自動更新一起整理。
APT 漏洞 CVE-2026-109518 是什麼
APT(Advanced Package Tool)是 Debian 專案開發的套件管理工具,Debian、Ubuntu 以及 Linux Mint、Raspberry Pi OS 等衍生發行版都用它安裝和更新軟體,平常執行的 apt、apt-get 就是 APT 的指令。APT 從套件庫下載 .deb 套件檔,再交給 dpkg 以 root 權限安裝,套件裡的安裝腳本也會以 root 執行,所以安裝到被換掉的套件,等於讓攻擊者取得 root 權限。
APT 用簽章與雜湊確認套件沒被竄改:套件庫的 InRelease(或 Release)檔有 GPG 簽章,裡面列出套件索引檔的雜湊,索引檔再列出每個 .deb 的 SHA256,下載完的套件雜湊對不上就拒絕安裝。因為有這層驗證,Debian 與 Ubuntu 的預設套件來源使用沒有加密的 HTTP,傳輸途中被竄改的檔案會在驗證時被擋下。CVE-2026-109518 讓套件在通過驗證之後還能被換掉,繞過了這層保護。
CVSS(Common Vulnerability Scoring System)是業界通用的漏洞嚴重度評分,滿分 10 分;3.1 與 4.0 是兩個版本的評分標準,計算的項目不同,所以同一個漏洞會有兩個分數。CVE 紀錄由 Ubuntu 的開發商 Canonical 建立,給的是 CVSS 4.0 的 7.7 分;Red Hat 另外給了 CVSS 3.1 的 8.1 分,標示為初步評分。
| 項目 | 內容 |
|---|---|
| 編號 | CVE-2026-109518 |
| CVSS 4.0 | 7.7(Canonical) |
| CVSS 3.1 | 8.1(Red Hat 初評) |
| 影響範圍 | Debian 12、Ubuntu 22.04 起 |
| 回報者 | Max Justicz |
| 公開日期 | 2026 年 11 月 4 日 |
同一次更新也修了幾個越界存取(out-of-bounds)的問題。依 APT 開發者的安全更新公告 ,這些主要是拒絕服務的風險,影響的多半是以 root 執行、會解析外來 .deb 檔的第三方工具。
漏洞怎麼在驗證後換掉套件
攻擊者利用的是 APT 在轉址與重試時對檔案的處理:兩個下載被合併成同一個網址後,重試時寫入的資料會透過硬連結(hard link)蓋到已經通過驗證的套件檔。硬連結是讓兩個檔名指向磁碟上的同一份資料,寫入其中一個,另一個看到的內容也會跟著改變。依 Debian 的安全公告 與 APT 開發者、Ubuntu 的說明,整個過程分成四步:
- 轉址讓兩個下載變成同一個網址:攻擊者攔截 HTTP 流量,用轉址(redirect)讓兩個套件的請求變成同一個網址,APT 把兩個下載合併處理。
- 暫時性錯誤觸發重試:攻擊者回應暫時性的伺服器錯誤,讓 APT 重試下載。
- 續傳寫進硬連結:重試時 APT 會續傳,直接寫入既有的檔案。這個檔案是硬連結時,指向同一份資料的另一個套件檔也會被改掉,已通過驗證的套件就被換成攻擊者的內容。
- 以 root 安裝:dpkg 安裝的是被換掉的檔案,套件裡的安裝腳本以 root 權限執行。

第二步的重試由 Acquire::Retries 決定,這是 APT 下載失敗時自動重試的次數。CVE 說明寫明 Acquire::Retries 不是 0 才會觸發,設成 0 就不會重試,這也是後面暫時解法的依據。
哪些系統受影響
Acquire::Retries 不是 0 的系統都受影響。APT 從 2.3.2 版起把預設值改成 3,所以 Debian 12(APT 2.6)、Ubuntu 22.04(APT 2.4)以後的版本在預設設定下都受影響。Debian 11、Ubuntu 20.04 以前的版本預設不重試,除非在設定檔或腳本裡自己加過 Acquire::Retries。
攻擊者還必須能竄改 APT 與套件庫之間的 HTTP 流量,例如惡意的鏡像站、代理伺服器,或同一個網路上的中間人。套件來源改用 HTTPS 後,傳輸途中的流量無法被竄改, AWS 的安全公告 說明這可以降低風險,但不能取代更新;CVE 說明也把惡意的鏡像站列為攻擊途徑,鏡像站本身有問題時,HTTPS 一樣擋不住。
檢查主機的 apt 版本與設定
在 Debian 或 Ubuntu 上執行下面三個指令,可以看到目前的 apt 版本、重試設定與套件來源:
# 目前安裝的 apt 版本(Installed 那一行)
apt-cache policy apt
# 有沒有自己設定重試次數,沒有輸出代表使用預設值
apt-config dump | grep -i '^Acquire::Retries '
# 套件來源用 http 還是 https
# 系統沒有 sources.list 時的錯誤訊息可以忽略
grep -rhE '^(deb|URIs:)' /etc/apt/sources.list /etc/apt/sources.list.d/
apt-cache policy 列出的已安裝版本(Installed,中文環境顯示為「已安裝」)等於或高於下一節表格的版本,就已經修補。apt-config dump 有輸出而且不是 0,或沒有輸出、但 apt 是 2.3.2 以後的版本,代表重試開著。grep 列出的網址開頭是 http:// 的來源,下載流量沒有加密。
更新與暫時解法
Debian 與 Ubuntu 在 2026 年 11 月 4 日同時發布修補,各版本修正後的 apt 如下:
| 發行版 | 修正後的 apt |
|---|---|
| Debian 13 trixie | 3.0.4 |
| Debian 12 bookworm | 2.6.2 |
| Ubuntu 26.10 | 3.3.3ubuntu0.1 |
| Ubuntu 26.04 LTS | 3.2.1ubuntu0.1 |
| Ubuntu 24.04 LTS | 2.8.4ubuntu0.1 |
| Ubuntu 22.04 LTS | 2.4.15ubuntu0.1 |
| Ubuntu 20.04 LTS | 2.0.12+esm1 |
Ubuntu 20.04 的修補需要 Ubuntu Pro。Ubuntu Pro 是 Canonical 的延伸支援訂閱,把 LTS 版本的安全性更新從 5 年延長到 10 年,個人使用最多 5 台實體機器免費;18.04 的修補是 1.6.19+esm1,16.04 與 14.04 還需要 Legacy Support 附加方案。Debian 13 的公告是 DSA-6607-1;Debian 12 已進入由 Debian LTS 團隊維護的長期支援階段,修補以 DLA-4880-1 發布。測試版 forky 修正在 3.3.6,unstable 在 3.3.7。
更新時把重試關掉,可以避免下載修補的這一次就觸發漏洞。下面是 AWS 公告建議的指令,upgrade 會升級所有可以更新的套件:
# 更新套件索引
sudo apt-get update
# 升級套件,這一次下載失敗不重試
sudo apt-get upgrade -o Acquire::Retries=0
# 確認 apt 已經是修正後的版本
apt-cache policy apt
只想先更新 apt 的話,把 apt-get upgrade 那行改成 sudo apt-get install --only-upgrade -o Acquire::Retries=0 apt。apt 不是常駐在背景的服務,更新完不用重新開機,下一次執行 apt 就會用新版。
暫時關閉下載重試
還不能更新的主機,可以先把重試關掉。在 oss-security 轉貼 Debian 公告 的 Jan Schaumann 提到,在 APT 設定加上 Acquire::Retries "0"; 可以在更新前緩解;AWS 的更新指令也帶了同一個設定。下面在 /etc/apt/apt.conf.d/ 新增一個設定檔,這個目錄依檔名順序讀取,排在後面的檔案會覆蓋前面檔案的設定:
# 新增設定檔,關閉下載重試
echo 'Acquire::Retries "0";' | sudo tee /etc/apt/apt.conf.d/99-no-retries
# 確認生效,應該輸出 Acquire::Retries "0";
apt-config dump | grep -i '^Acquire::Retries '
/etc/apt/apt.conf 與指令列的 -o 會在 apt.conf.d/ 之後套用,腳本裡寫了 -o Acquire::Retries=3 的話,這個設定檔就沒有作用。關閉重試之後,網路暫時中斷或伺服器短暫出錯時,APT 不會再自動重試,下載會直接失敗,需要手動再執行一次。更新到修正版本後,刪除 /etc/apt/apt.conf.d/99-no-retries 就會回到 apt 的預設值。
自動更新會不會裝上修補
會,前提是系統開著自動更新。依 Ubuntu Server 的文件 ,Ubuntu 安裝完就會每天自動安裝安全性更新; Debian 的 wiki 說明多數版本會安裝 unattended-upgrades,預設會自動安裝安全性更新,但系統上也可能沒裝或被關閉。這次的 apt 修補屬於安全性更新,自動更新下一次執行時就會裝上。
自動更新預設每天執行一次,從公告發布到修補裝好之間會有一段空窗,下載修補的那一次用的也還是舊版 apt。下面兩個指令可以確認自動更新開著,以及 apt 什麼時候被升級:
# 自動更新的設定,值是間隔天數:"0" 是關閉、"1" 是每天
# 沒有輸出代表沒有設定自動更新
apt-config dump | grep -E '^APT::Periodic::(Update-Package-Lists|Unattended-Upgrade) '
# apt 的升級紀錄,包含已輪替的舊紀錄
zgrep -h ' upgrade apt:' /var/log/dpkg.log*
zgrep 會列出升級的時間與前後版本,例如 upgrade apt:amd64 3.0.3 3.0.4。沒有輸出時,用 apt-cache policy apt 對照上面的版本表,確認是不是已經是修正版本。
Docker 容器與映像檔
以 Debian、Ubuntu 為基礎的容器映像檔裡也有 apt,Dockerfile 裡的 apt-get install 會用映像檔裡的 apt 下載套件。截至 2026 年 11 月 8 日,Docker Hub 上的 Debian 官方映像檔已在 11 月 5 日重建,Ubuntu 官方映像檔最後更新在 10 月 29 日,裡面還是修補前的 apt。可以在 Dockerfile 第一個 apt-get 步驟先升級 apt:
# 先用不重試的方式把 apt 升級到修正版本
RUN apt-get -o Acquire::Retries=0 update \
&& apt-get -o Acquire::Retries=0 install -y --only-upgrade apt
建好的映像檔可以用 docker run --rm 映像檔名稱 apt-cache policy apt 確認版本。容器裡沒有執行 apt 時不會觸發這個漏洞。
常見問答
已經有人利用這個漏洞嗎?
Debian、Ubuntu 與 APT 開發者的公告都沒有提到被實際利用的案例。攻擊者要能竄改下載流量,但 Debian 12、Ubuntu 22.04 以後的預設設定都符合重試的條件,建議盡快更新。
套件來源已經是 HTTPS,還需要更新嗎?
需要。HTTPS 擋得住傳輸途中的竄改,但惡意的鏡像站仍然符合攻擊條件,AWS 的公告也說明改用 HTTPS 不能取代更新。
更新 apt 之後要重新開機嗎?
不用。更新後執行的 apt 指令就是修正版本,重新開機不影響 apt。
Debian 11 或 Ubuntu 20.04 要處理嗎?
預設設定下不受影響,這些版本的 apt 早於 2.3.2,Acquire::Retries 預設是 0。設定檔或腳本裡加過重試的話就會受影響,可以把重試設回 0;Ubuntu 20.04 也能透過 Ubuntu Pro 取得 2.0.12+esm1。
RHEL、Fedora 會受影響嗎?
標準安裝不會。RHEL、Fedora 用 RPM 與 DNF 管理套件,Red Hat 說明標準安裝不包含 APT。Fedora 與 EPEL 套件庫另外提供 apt 套件,自己裝過的話(例如用來建立 Debian 的 chroot 環境),要更新到 3.3.6 以後的版本。
參考來源
- CVE: CVE-2026-109518 (CVE 紀錄)
- Debian: [SECURITY] [DSA 6607-1] apt security update (Debian 13 安全公告)
- Debian: [SECURITY] [DLA 4880-1] apt security update (Debian 12 LTS 安全公告)
- Debian: APT-2026-11-01 security update (APT 開發者的安全更新公告)
- Debian Security Tracker: CVE-2026-109518 (Debian 各版本修補狀態)
- oss-security: CVE-2026-109518: RCE in apt(1) (DSA 6607-1) (oss-security 轉貼的公告與緩解方式)
- Ubuntu: USN-8996-1: APT vulnerability (Ubuntu 安全公告)
- Ubuntu: CVE-2026-109518 (Ubuntu 的 CVE 頁面)
- Ubuntu: Ubuntu Pro (Ubuntu Pro 方案說明)
- Red Hat: CVE-2026-109518 (Red Hat 的評分與說明)
- AWS: CVE-2026-109518 – APT package manager that affects Ubuntu and Debian operating systems (AWS 安全公告)
- Ubuntu: Automatic updates (Ubuntu Server 自動更新文件)
- Debian Wiki: PeriodicUpdates (Debian 自動更新說明)
