成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PHP Composer漏洞可能引發供應鏈攻擊

安全 漏洞
​研究人員在PHP Composer中發現一個安全漏洞,攻擊者利用該漏洞可以發起供應鏈攻擊。

Composer是PHP中管理和安全軟件依賴的主要工具,被開發團隊廣泛應用于更新過程等。因此,Composer使用名為Packagist 的在線服務來確定包下載供應鏈的正確性。而Packagist每個月的下載請求在14億次左右。

研究人員在進行安全研究時,在 Packagist使用的Composer源碼中發現了一個嚴重的安全漏洞,漏洞CVE編號為CVE-2021-29472。攻擊者利用該漏洞可以在Packagist.org 服務器上執行任意系統命令。此外,攻擊者還可以進一步竊取維護者憑證,或將包下載重定向到傳播后門依賴的第三方服務器。

漏洞分析

在請求下載包時,Composer 首先會查詢Packagist來獲取元數據。元數據中包含2個獲取代碼源的域source和dist。Source只想開發庫,dist只想預構建的庫。Composer在從庫中下載代碼時會使用外部系統命令來避免重新實現針對每隔版本控制軟件的邏輯。因此,這些調用都是用wrapper ProcessExecutor來執行的:

  1. composer/src/Composer/Util/ProcessExecutor.php 
  2.   
  3. use Symfony\Component\Process\Process; 
  4. // [...] 
  5. class ProcessExecutor 
  6.     // [...] 
  7.     public function execute($command, &$output = null, $cwd = null
  8.     { 
  9.         if (func_num_args() > 1) { 
  10.             return $this->doExecute($command, $cwd, false, $output); 
  11.         } 
  12.         return $this->doExecute($command, $cwd, false); 
  13.     } 
  14.     // [...] 
  15.     private function doExecute($command, $cwd, $tty, &$output = null
  16.     { 
  17.         // [...] 
  18.         if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { 
  19.             // [1] 
  20.             $process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout()); 
  21.         } else { 
  22.             // [2] 
  23.             $process = new Process($command, $cwd, null, null, static::getTimeout()); 
  24.         } 
  25.         if (!Platform::isWindows() && $tty) { 
  26.             try { 
  27.                 $process->setTty(true); 
  28.             } catch (RuntimeException $e) { 
  29.                 // ignore TTY enabling errors 
  30.             } 
  31.         } 
  32.         $callback = is_callable($output) ? $output : array($this, 'outputHandler'); 
  33.         $process->run($callback); 

在 [1]和[2]中,可以看到參數 $command 是在shell中執行的。大多數的ProcessExecutor 調用都是在版本控制軟件驅動中執行的,版本控制軟件負載原創和本地庫的所有操作。比如,在Git驅動中:

  1. composer/src/Composer/Repository/Vcs/GitDriver.php 
  2.   
  3. public static function supports(IOInterface $io, Config $config, $url, $deep = false
  4.     if (preg_match('#(^git://|\.git/?$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) { 
  5.         return true; 
  6.     } 
  7.     // [...] 
  8.     try { 
  9.         $gitUtil->runCommand(function ($url) { 
  10.             return 'git ls-remote --heads ' . ProcessExecutor::escape($url); // [1] 
  11.         }, $url, sys_get_temp_dir()); 
  12.     } catch (\RuntimeException $e) { 
  13.         return false; 
  14.     } 

使用ProcessExecutor::escape() 可以將參數$url 逃逸以預防子命令($(...), `...`) ,但是無法預防用戶提供(--)開頭的值,只要加上其他的參數就可以成為最終的命令。這類漏洞就叫做參數注入。

類似的有漏洞的模式也出現在其他驅動中,用戶控制的數據可以成功繞過檢查并連接在一起成為系統命令:

  1. composer/src/Composer/Repository/Vcs/SvnDriver.php 
  2. public static function supports(IOInterface $io, Config $config, $url, $deep = false
  3.     $url = self::normalizeUrl($url); 
  4.     if (preg_match('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) { 
  5.         return true; 
  6.     } 
  7.     // [...] 
  8.     $process = new ProcessExecutor($io); 
  9.     $exit = $process->execute( 
  10.         "svn info --non-interactive ".ProcessExecutor::escape($url), 
  11.         $ignoredOutput 
  12.     ); 
  13. composer/src/Composer/Repository/Vcs/HgDriver.php 
  14. public static function supports(IOInterface $io, Config $config, $url, $deep = false
  15.     if (preg_match('#(^(?:https?|ssh)://(?:[^@]+@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { 
  16.         return true; 
  17.     } 
  18.     // [...] 
  19.     $process = new ProcessExecutor($io); 
  20.     $exit = $process->execute(sprintf('hg identify %s', ProcessExecutor::escape($url)), $ignored); 
  21.     return $exit === 0; 

更多技術細節參見:https://blog.sonarsource.com/php-supply-chain-attack-on-composer

補丁

研究人員將該漏洞提交給Packagist團隊后,該團隊快速反應,在12個小時內就部署了安全補丁。

本文翻譯自:https://blog.sonarsource.com/php-supply-chain-attack-on-composer

 

責任編輯:趙寧寧 來源: 嘶吼網
相關推薦

2023-07-19 12:04:55

2021-11-23 14:54:05

漏洞供應鏈攻擊網絡攻擊

2022-04-13 14:49:59

安全供應鏈Go

2017-11-08 09:39:11

供應鏈消費升級CIO

2023-02-23 07:52:20

2022-04-06 10:12:51

Go供應鏈攻擊風險

2021-04-25 15:49:06

拜登黑客攻擊

2021-09-12 14:38:41

SolarWinds供應鏈攻擊Autodesk

2021-10-14 13:14:12

安全供應鏈漏洞威脅

2020-12-24 11:09:44

VMwareCiscoSolarWinds

2020-06-01 08:45:17

GitHub代碼開發者

2022-03-14 14:37:53

網絡攻擊供應鏈攻擊漏洞

2021-09-16 14:59:18

供應鏈攻擊漏洞網絡攻擊

2022-07-18 17:00:00

網絡安全數據供應鏈

2020-12-31 11:02:47

網絡釣魚漏洞攻擊

2023-11-02 12:13:08

2024-01-19 21:51:42

2022-02-21 10:12:20

供應鏈攻擊網絡攻擊

2023-01-11 00:05:58

2023-11-06 07:11:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩在线一区二区 | 久久精品性视频 | 欧美综合国产精品久久丁香 | 国产精品一区二区电影 | 天天操精品视频 | 中文在线a在线 | 一级欧美一级日韩片免费观看 | 久久亚洲一区二区三区四区 | 成人高清视频在线观看 | 天天操天天天 | 天天操天天射综合网 | 一区二区三区四区日韩 | 免费一级欧美在线观看视频 | 久久久福利| 日本三级全黄三级a | 国产精品日本一区二区在线播放 | 成人网在线观看 | 中文字幕成人免费视频 | 毛片免费在线 | 毛片国产 | 亚洲网站在线观看 | 日韩在线 | 精品一区二区久久久久久久网站 | 色精品 | 国产精品日韩一区 | 翔田千里一区二区 | 男人天堂视频在线观看 | 天天精品在线 | 九九热在线视频免费观看 | 手机在线观看 | 国产98在线 | 免费, | 午夜影视网 | 欧美中文字幕 | 欧美国产一区二区三区 | 久久久久久亚洲国产精品 | 亚洲自拍偷拍av | 日韩欧美综合 | 国产欧美一区二区三区另类精品 | 国产美女久久 | 免费在线看黄视频 | 91麻豆精品国产91久久久更新资源速度超快 |