LWN:拋棄不安全的scp命令!

2022-01-14 Linux News搬運工

關注了就能看到更多這麼棒的文章哦~

Deprecating scp

By Jonathan Corbet
November 5, 2020
DeepL assisted translation
https://lwn.net/Articles/835962/

使用 SSH 協議在多臺機器之間複製文件的 scp 命令,已經變成許多 Linux 用戶和開發者的手指記憶非常熟悉的命令了。尤其是許多人仍然認為它是比 rcp 更安全方案。許多用戶可能會驚訝地發現,scp 與 rcp 的相似之處不僅僅是名字,很多底層協議也是一樣的。這個協議已經挺古老了,OpenSSH 社區一段時間之前就已經將其判定為 deprecated 狀態,打算廢棄了。不過,目前還是很難找到一種讓用戶滿意的方式來取代 scp。

scp 和之前的 rcp 一樣,設計時都希望儘可能地像普通的 cp 命令。它有一個相對簡單的、可用在腳本腳本中的命令行界面,這使得遞歸複製和多文件複製變得很簡單。在機器之間進行連接時使用 SSH 認證機制,並在數據傳輸過程中確保數據進行了加密,所以一般都認為它是安全的協議。但事實證明,在某些情況下,尤其是鏈路兩端之間信任度不高,或乾脆沒有信任度的情況下,實際上達到的安全程度可能會低於預期。

例如,在 OpenSSH 8.0 版本中就包含了一個被稱為 CVE-2019-6111 的漏洞的 fix。在 scp 協議中,要複製的文件所在的這臺機器需要把這些文件的名子發送給接收方。所以可以輸入這樣的命令:

$ scp admin:boring-spreadsheet.ODS .

按理來說就會在當前工作目錄下得到一個名為 boring-spreadsheet.ods 的文件。如果遠程伺服器給出的回應類似 "這是你所要的.bashrc 文件 " 的話,scp 會傻乎乎地把.bashrc 文件給覆蓋了。8.0 版本中,會比較遠端的文件名和實際請求的文件名,從而避免這個問題,但 release note 裡面也聲明 scp 協議是 "過時、不靈活、不易修復"的,並建議今後不要再使用 scp。

還有一個 CVE-2020-15778 (https://github.com/cpandya2909/CVE-2020-15778/) 也可以介紹一下。大家都知道 scp 是建立在 SSH 上的,所以如果鍵入一個命令:

$ scp election-predictions.txt dumpster:junk/

就會建立一個 SSH 連接到 dumpster,運行這個命令:

scp -t junk/

該命令使用文檔中沒有提到的-t 選項來指定一個目標("to")目錄,然後會來完成這個傳送文件到 junk 目錄的請求。這種機制就可以被各種惡作劇所利用了。試試看:

$ scp some-local-file remote:'`touch you-lose`remote-file'

這會在遠程系統上創建 兩個 文件:一個是我們希望創建的 remote-file,另外是一個名為 you-lose 的空文件。讀者可以自行嘗試在該文件中添加更多實際內容來完成想做的事情。

這種行為是否屬於漏洞(vulnerability),這是個見仁見智的問題。如果用戶有普通的 SSH 訪問遠程系統的權限,那麼通過 scp 附帶一些命令則只是一種以更麻煩的方式來做他本可以直接做的事情。不過很顯然,有些網站其實只是希望提供 scp 訪問來讓用戶複製文件,但不允許用戶在這個系統上隨便執行命令。對於這些系統來說,這種行為就算是一個漏洞了。最後,雖然只有對端伺服器才有這個風險,但值得注意的是,本地文件名中包含反引號的話(例如名為 `touch you-lose` 的文件),在遠端也可以同樣來傷害你。只要能說服一個用戶對包含惡意名稱文件的目錄進行遞歸複製,就會引發這些破壞性的結果。

與 CVE-2019-6111 不同的是,這個問題還沒有被 OpenSSH 開發者解決。正如上面連結的披露信息中所說,開發者的看法是:

scp 命令使用的是一個歷史悠久的協議(rcp),它依賴於這種風格的參數傳遞,並遇到了這些擴展(expansion)問題。事實證明,讓 scp 模型變得 "security" 是非常困難的。所有 "檢測" 和 "防止" 異常參數傳遞的改動,都很可能會破壞現有的能正常工作的流程。是的,我們承認它的情況很糟糕。但我們不想破壞人們使用 scp 時感受到的易用性,除非有一個通用的替代方案。

既然如此,下一個問題就自然而然地出現了:應該用什麼來替代被廢棄的 scp 命令?這個問題的通常答案是 sftp 或者 rsync。

sftp 命令的優點是它是 OpenSSH 軟體包的一部分,因此,大多數地方都安裝了 scp。缺點則是不太友好的用戶體驗,特別是當你只想輸入一個命令就能完成文件移動的時候,如果只是簡單用下面的命令:

$ sftp * remote:

並不能達到期望的效果。有些用法需要進入 "交互模式",這對於我們這些曾經使用 FTP 傳輸文件的老用戶來說是很熟悉的,同樣我們這些老人也仍然還記得為什麼我們一看到有 rcp 和 scp 這樣的命令就從 FTP 轉向了它們。

rsync 是一個可行的替代方案,它的優點是比 scp 性能更好,畢竟 scp 的速度本身並不是特別快,但 rsync 不像 SSH 套件中的那些命令那麼普及。它的 GPLv3 license 也讓某些類別的用戶望而卻步。即使是系統已經安裝好了 rsync 的時候,人們也總覺得它更像是一個用來做大事的強大工具,而 scp 則是手邊的瑞士軍刀,足夠滿足多數場景的需求了。

然後,還有一個簡單的問題,就是 scp 已經深深地融入了很多用戶的肌肉記憶中。就像其他被廢棄的命令一樣(ifconfig 就是個例子),很難做出改變。

基於這些原因,如果能有一個新版本的 scp 命令,不受當前問題的影響,那就最好了。事實上 Jakub Jelen 正在研究這樣一個東西;它是一個 scp 命令,不過內裡其實使用的是 sftp 協議。目前,據稱它可以適用於大多數基本的使用場景,有些 option(比如 -3 這樣的通過本地機的方式在兩個遠程主機之間複製文件)則並不支持。像上面說的反引號擴展這類的 "功能" 也不會被支持,儘管有些用戶顯然認為這種擴展也有合法用途。

Jelen 最近提議把 Fedora 發行版中的 scp 換成他的版本,大多數人都給出了贊成意見。確實有一些用戶擔心 sftp 可能會比 scp 更慢,但似乎沒人做嚴格的性能測試。即使是慢了一點,可是一個既能避免當前實現中的安全問題,又不破壞現有腳本(和用戶預設習慣)的 scp 實現,應該會是一個受歡迎的改動。也許終於可以又卸下一個來自 1980 年代的包袱了。

全文完
LWN 文章遵循 CC BY-SA 4.0 許可協議。

長按下面二維碼關注,關注 LWN 深度文章以及開源社區的各種新近言論~

相關焦點

  • SCP基金會項目等級劃分
    常見誤區之一:項目等級代表收容物危險程度然而在實際上,項目分級更多的是來區分收容的難易程度,項目等級主要分為Safe ,Euclid,Keter,Thaumiel,Neturalized等等Safe:safe的英文意思是安全的
  • SCP166,SCP基金會裡善惡集於一身的矛盾體
    你懂得hi 大家好我是王好奇當我閱讀到scp166的文檔後嚴重懷疑這是一個閱片無數的猥瑣大叔寫的YY腦洞作品那接著看吧scp166看上去是一個16-18歲的萌妹子體型苗條勻稱 外表看上去和普通人類沒什麼兩樣然而她的頭髮長得特別的快 大概一個月能長20釐米身體極為敏感對於煙氣等東西 會引起類似哮喘的綜合症如果穿衣服45分鐘 會產生壓瘡導致肌膚潰瘍所以她幾乎都是果體狀態出鏡
  • 神秘組織丨scp,一旦喜歡就上癮了
    SCP基金會作為一個世界級共同創作平臺,它最吸引人的部分永遠不只是神秘的氛圍、對未知的恐懼與敬畏,還有那「全世界創作者一起寫一部小說、創造一個多元宇宙」的開放。2009年,far2為scp基金會設計了現在的logo。現在scp基金會在很多國家開設了分站,scp基金會中國分會也早已上線。scp基金會究竟具有怎樣的獨特魅力,能夠吸引跨越地域和民族界限的讀者和作者?
  • 不老泉真的存在scp-006檔案
    描述:scp-006是阿斯特拉罕以西60公裡處一眼規模很小的泉水,scp基金會總部早在19世紀就得知其存在,但出於政治原因直到1991年才得以對其進行保護。在動物實驗中注入泉水再注入有害細菌及病毒試劑均會被立即摧毀,多數爬行動物及鳥類不受scp-006液體成分的影響,而高級靈長類的症狀則於人類一致特殊收容措施:顯而易見,鑑於scp-006本性無需任何深度控制,但其存在與特質均需得到一定程度的保密。下列程序並非為人員安全所設,而是為避免與scp-006互動人員得知起真實效果。
  • 成為Mac高階用戶必備基礎 第十七篇:macOS內置命令 6 通過終端聯網(上)
    本節涵蓋了所有不同的內置macOS網絡命令,你可能會發現有幫助。遠程外殼到目前為止,我們一直在學習如何使用自己的終端提高效率,但你知道你可以通過終端連接到其他計算機嗎?我所說的命令叫做ssh(Secure SHell)。ssh命令有兩個部分--客戶端,也就是ssh命令和伺服器,sshd。
  • 爽到飛起的SCP影視化《SCP-096》
    故事主體圍繞一個名為「SCP基金會」的組織,其本身運作不受任何國家組織幹涉管轄,目標為收容世界上的異常現象、事件、個體等等,並統稱為「收容物」(即SCPs)。基金會則致力於控制這些異常並將其收容,在不為外界所知的情況下保護著這個世界。       今天先介紹幾個SCP裡人氣比較高的收容物:
  • 論682大爺與其他scp的愛恨情仇
    Scp基金會收容常用等級:Safe(可被有效收容)容易和安全的被收容的異常,並非無害,只是好收容​​Euclid(無法被正確預測)這種scp需要更多的資源來完成收容,因為該scp未能被充分理解或者本質不可預測,任何自主
  • 為什麼會有SCP基金會?SCP基金會是怎麼誕生的?
    加藤泉日本畫家和雕塑家2004年創作了名為《無題》的雕塑作品在2007年一位暱稱「Moto42」的網友在4chan論壇的「超自然」板塊上發布了一篇帖子以加藤泉雕塑為藍本的SCP-173其中 以機密研究資料的口吻描述了一個叫做scp基金會的機構收容了代號scp-173
  • SCP106,吸人精氣的恐怖老人,scp基金會系列
    在民間傳說中 有很多吸人精氣的妖怪比如說大話西遊中的黑山老妖而在scp裡 也有一個號稱食人精氣的恐怖老人106106有點過於驚悚 一直沒想做不過 也一直有粉絲要求做這期儘量做了不恐怖化處理希望大家喜歡大部分時間 scp106看起來都像是一個老人雖然外形經常發生改變但相同的是每次出現基本都是一副高度腐爛的樣子它可以攀附在任何豎直的表面上連續幾天一動不動的等待著獵物
  • scp基金會是真實存在的麼
    在現實中SCP基金會並非是一個秘密組織,而是一個全球性的同人接力寫作網站,是一個完全開放的寫作平臺,所有人都可以為scp基金會創作小說,但只有作品足夠新穎有趣,才可以被接納,在一定的框架下,各個作者們各自進行創作,然後以作品得到的接受度來決定它能否留存在網站上。
  • scp基金會是什麼 抖音評論scp基金會介入調查是什麼梗和意思
    scp基金會介入調查是什麼梗,今天小編發現抖音出現了許多新梗,花裡胡哨應有盡有,這次要給大家介紹的抖音熱梗是SCP基金會介入調查,不少網友都不明白這是什麼意思!接下來就和小編一起深入了解一下吧!
  • 不可錯過的經典scp基金會小說合集
    當一個個毀三觀的詭異物品出現在科學家眼中時,一個專門收容這類異常事物的機構油然誕生……誰也不知道收容物來自哪裡,而白歌表示:打死也不能讓人知道,收容物和他有關……(小說簡介)個人評價:滄月蘿莉的第二本關於scp類型的小說,依舊繼承無女主,不腦殘的主角智商在線的寫文章風格。
  • 火影SCP之——SCP-HY-6:宇智波斑
    本文由@梓瀚原創投稿提醒:火影愛好者會不定期接一些廣告文案發在頭條,大家看到頭條文章如果是跟火影無關的文章,那就是廣告,點開看看就好了,
  • SCP基金會離線資料庫nn5n
    但是由於當時的網絡原因經常不能順利閱讀,這樣我萌生了製作這個App的想法,目的就是讓人們可以隨時隨地不受限制的閱讀其中的內容。來自官方的 FAQ:SCP是真的嗎?不。 這裡是一個創意寫作網站。 所有的SCP都是虛構的。 基金會是虛構的。什麼是基金會? 在自然法迅速瓦解的世界中,我們是最後的安全堡壘。
  • SCP基金會「五巨頭」
    2.SCP-096(173的小兄弟)(來自SIte-CN-67主任的信息:這個亂給096分級的畫師已經被調去看守682了)(scp由於其造成大量平民喪生及對基金會秘密性破壞,███博士已經提交了立即處決096的申請,處決命令已批准(詳見官網)最後...誰██想到給173臉上貼096的照片的?立刻降為D級!3.SCP-049(小天使!小天使!)
  • 火影SCP之——宇智波佐助
    故事主體圍繞一個名為「SCP基金會」的組織,其本身運作不受任何國家組織幹涉管轄,目標為收容世界上的異常現象、事件、個體等等,並統稱為「收容物」(即SCP)。每個收容物都會有一個對應的編號(如SCP–XXXX)。比較好玩的有scp-173、scp-682等等,大家可以自行去了解~許多這些「物品」既可對人產生物理危險,又可對世界範圍的人群產生心理影響,動搖他們的個人信念,幹擾他們的日常生活。
  • 火影SCP之——SCP-HY-7:邁特凱
    SCP-HY-7SCP-HY-7"邁特凱"項目等級:safe狀態:該收容物無危險,可讓其適當自由活動描述:邁特凱是一個中年男人,精神有些微微不正常故事主體圍繞一個名為「SCP基金會」的組織,其本身運作不受任何國家組織幹涉管轄,目標為收容世界上的異常現象、事件、個體等等,並統稱為「收容物」(即SCP)。每個收容物都會有一個對應的編號(如SCP–XXXX)。
  • SCP053, scp基金會最萌的小女孩和scp682,scp基金會系列
    SCP-053是一隻超級可愛的三歲小蘿莉被收容在一個5m×5m的隔離間裡她的隔離房間內不允許存在利器或者火器每天吃的除了一日三餐之外還可以要求提供兩次零食任何超過三歲的人只要與SCP-053有目視接觸、物理接觸或者在053周圍停留超過10分鐘將會很快變得不理性偏執且嗜殺在殺死或者擊倒視野內所有人員後開始試圖殺死
  • 控制、收容、保護——SCP基金會
    scp系列並不能簡單的劃分為哪個題材,它包含科幻、奇幻、恐怖、偽紀實、架空歷史、政治隱喻等等內容。總得來說,scp基金會的核心理念就是開腦洞、編故事、一本正經的胡說八道。     OK我們列舉幾個有趣的scp來感受一下。     首先是最廣為人知的小花生——scp-173。
  • scp-002收容失效
    「當然可以,幾乎所有的研究人員都拿您當自己的偶像,我也不例外,請問您能給我籤個名嗎?」  「少說這些沒用的屁話,我現在要求你關閉對scp002的所有限制,然後派兩名d級人員進去。」  「你在發什麼瘋?你知道這是不可能,起碼需要兩名...」  「看來你意識到我站在這裡意味著什麼了。