網路攻擊與防禦實務
某企業在公司內的套件庫(私有登錄庫)中放置公司專用的函式庫 acme-utils 使用。攻擊者在公開的套件庫中,以相同名稱 acme-utils 註冊了版本號更大的套件,結果發現依建置設定的不同,公司內的建置環境可能會取用攻擊者的套件。針對這種「相依性混淆(dependency confusion)」,最適當的對策是下列何者?
- A讓公司專用函式庫的版本號維持較小,以便與公開套件庫中的套件區分
- B把公司專用的套件放在組織管理的命名空間,設定該命名空間只從公司內的套件庫取得,並以鎖定檔固定版本與雜湊值
- C公開套件庫的套件經過審查、值得信任,因此不需要設定從哪個套件庫取得
查看答案與解析
正確答案:B. 把公司專用的套件放在組織管理的命名空間,設定該命名空間只從公司內的套件庫取得,並以鎖定檔固定版本與雜湊值
相依性混淆是軟體供應鏈攻擊的一種。有些套件管理工具會參照多個套件庫,依設定在名稱相同時選擇版本號較大者,攻擊者便利用這一點,讓建置取用與公司內名稱相同的惡意套件。對策是讓公司內的套件使用組織管理的命名空間(scope),只把該命名空間綁定到公司內的套件庫,明確指定從哪個套件庫取得。此外,以鎖定檔固定相依套件的版本與雜湊值,就能防止在不知不覺中被替換成其他東西。事先在公開套件庫註冊組織的命名空間,也有助於防止冒用。
- A. 版本號較小,反而會讓標上大版本號的攻擊者套件更容易被選中。
- B. 正確。以固定取得來源,以及固定版本與雜湊值,防止被調包。
- C. 任何人都能在公開套件庫註冊,若不指定取得來源,就可能取用惡意套件。