PyPI 儲存庫中 46% 的 Python 套件包含潛在不安全程式碼

圖爾庫大學(芬蘭)的一組研究人員發布了對 PyPI 儲存庫中的軟體包進行分析的結果,以了解可能導致漏洞的潛在危險結構的使用情況。 在 197 萬個包裹的分析過程中,發現了 749 萬個潛在的安全問題。 46% 的包裹至少有一個這樣的問題。 最常見的問題包括與異常處理和使用允許程式碼替換的功能相關的缺點。

在發現的 749 個問題中,442 個(41%)被標記為輕微問題,227 個(30%)被標記為中度問題,80 個(11%)被標記為危險問題。 有些軟體包脫穎而出,包含數千個問題:例如,PyGGI 軟體包發現了 2589 個問題,主要與「try- except-pass」結構的使用有關,appengine-sdk 軟體包發現了 2356 個問題。 genie.libs.ops、pbcore 和 genie.libs.parser 套件中也存在大量問題。

應該指出的是,結果是基於自動靜態分析獲得的,沒有考慮某些結構的應用背景。 用於掃描程式碼的bandit工具包的開發者表示,由於誤報數量相當高,如果不對每個問題進行額外的人工審核,掃描結果不能直接視為漏洞。

例如,分析器認為使用不可靠的隨機數產生器和雜湊演算法(例如MD5)是一個安全問題,而在程式碼中此類演算法可能用於不影響安全的目的。 分析器也認為pickle、yaml.load、subprocess和eval等不安全函數中對外部資料的任何處理都是問題,但這種使用並不一定涉及漏洞,事實上這些函數的使用可以在沒有安全威脅的情況下實現。

研究中使用的測試包括:

  • 使用潛在不安全的函數 exec、mktemp、eval、mark_safe 等。
  • 文件存取權限設定不安全。
  • 將網路套接字連接到所有網路介面。
  • 使用代碼中嚴格指定的密碼和金鑰。
  • 使用預定義的暫存目錄。
  • 在 catch-all 風格的異常處理程序中使用 pass 和 continue;
  • 啟動基於 Flask Web 框架並啟用偵錯模式的 Web 應用程式。
  • 使用不安全的資料反序列化方法。
  • 使用 MD2、MD4、MD5 和 SHA1 雜湊函數。
  • 使用不安全的 DES 密碼和加密模式。
  • 在某些版本的 Python 中使用不安全的 HTTPSConnection 實作。
  • 在 urlopen 中指定 file:// 方案。
  • 執行加密任務時使用偽隨機數產生器。
  • 使用 Telnet 協定。
  • 使用不安全的 XML 解析器。

此外,還可以注意到,在 PyPI 目錄中偵測到了 8 個惡意軟體包。 在刪除之前,有問題的軟體包被下載了超過 30 萬次。 為了隱藏惡意活動並繞過套件中簡單靜態分析器的警告,程式碼區塊使用 Base64 進行編碼,並在使用 eval 呼叫解碼後​​執行。

Nobelsse、genesisbot、are、employment、noblesse2 和noblessev2 軟體包包含攔截Chrome 和Edge 瀏覽器中儲存的信用卡號碼和密碼的代碼,以及從Discord 應用程式轉移帳戶令牌並發送系統數據,包括螢幕內容的螢幕截圖。 pytagora 和 pytagora2 軟體包包含載入和執行第三方可執行程式碼的功能。

來源: opennet.ru

添加評論