มีการระบุช่องโหว่ใน Composer ที่ทำให้ที่เก็บ Packagist PHP เสียหาย

ไม่กี่วันที่ผ่านมา ข่าวแจ้งว่ามีการระบุช่องโหว่ที่สำคัญ en ผู้จัดการการพึ่งพาของ แต่ง (CVE-2021-29472) ที่อนุญาตให้คุณรันคำสั่งตามอำเภอใจบนระบบเมื่อประมวลผลแพ็กเกจที่มีค่า URL ที่สร้างขึ้นเป็นพิเศษซึ่งกำหนดทิศทางในการดาวน์โหลดซอร์สโค้ด

ปัญหาปรากฏในคอมโพเนนต์ GitDriver, SvnDriver และ HgDriver ใช้กับระบบควบคุมแหล่ง Git, Subversion และ Mercurial ช่องโหว่ได้รับการแก้ไขแล้วใน Composer เวอร์ชัน 1.10.22 และ 2.0.13

โดยเฉพาะอย่างยิ่งที่เก็บแพ็กเกจ Packagist เริ่มต้นของนักแต่งเพลงซึ่งมีแพ็คเกจนักพัฒนา PHP 306.000 แพ็คเกจและมีการดาวน์โหลดมากกว่า 1.400 พันล้านครั้งต่อเดือนจะได้รับผลกระทบเป็นพิเศษ

ในระบบนิเวศ PHP Composer เป็นเครื่องมือหลักในการจัดการและติดตั้งการอ้างอิงซอฟต์แวร์ ทีมพัฒนาทั่วโลกใช้เพื่อลดขั้นตอนการอัปเกรดและทำให้แอปพลิเคชันทำงานได้อย่างง่ายดายในทุกสภาพแวดล้อมและทุกเวอร์ชัน

การทดลองแสดงให้เห็นว่าหากมีข้อมูลเกี่ยวกับปัญหาผู้โจมตีสามารถเข้าควบคุมโครงสร้างพื้นฐานของ Packagist และสกัดกั้นข้อมูลประจำตัวของผู้ดูแลหรือเปลี่ยนเส้นทางการดาวน์โหลดแพ็กเกจไปยังเซิร์ฟเวอร์ของบุคคลที่สามโดยจัดเตรียมการจัดส่งแพ็กเกจที่แตกต่างกันไปพร้อมกับการเปลี่ยนแปลง เป็นอันตรายเพื่อแทนที่แบ็คดอร์ระหว่างการติดตั้งการอ้างอิง

อันตรายต่อผู้ใช้มี จำกัด เนื่องจากเนื้อหาของ composer.json มักจะถูกกำหนดโดยผู้ใช้และลิงก์ไปยังแหล่งที่มาจะถูกส่งผ่านเมื่อเข้าถึงที่เก็บของบุคคลที่สามซึ่งโดยปกติจะเชื่อถือได้ การโจมตีหลักตกอยู่ในพื้นที่เก็บข้อมูล Packagist.org และบริการ Private Packagist ที่เรียกนักแต่งเพลงด้วยการถ่ายโอนข้อมูลที่ได้รับจากผู้ใช้ ผู้โจมตีสามารถรันโค้ดของพวกเขาบนเซิร์ฟเวอร์ Packagist ได้โดยการทิ้งแพ็คเกจที่สร้างขึ้นมาเป็นพิเศษ

ทีม Packagist แก้ไขช่องโหว่ภายใน 12 ชั่วโมงหลังจากได้รับแจ้ง ของช่องโหว่ นักวิจัยแจ้งกับนักพัฒนา Packagist เป็นการส่วนตัวเมื่อวันที่ 22 เมษายนและปัญหาได้รับการแก้ไขในวันเดียวกัน การอัปเดตนักแต่งเพลงสาธารณะพร้อมการแก้ไขช่องโหว่ได้รับการเผยแพร่เมื่อวันที่ 27 เมษายนและมีการเปิดเผยรายละเอียดในวันที่ 28 เมษายน การตรวจสอบบันทึกบนเซิร์ฟเวอร์ของ Packagist ไม่ได้เปิดเผยกิจกรรมที่น่าสงสัยใด ๆ ที่เกี่ยวข้องกับช่องโหว่

ข้อผิดพลาดในการฉีดอาร์กิวเมนต์เป็นข้อผิดพลาดที่น่าสนใจมากซึ่งมักถูกมองข้ามในระหว่างการตรวจสอบโค้ดและมองข้ามไปโดยสิ้นเชิงในการโต้ตอบกล่องดำ

ปัญหาเกิดจากข้อผิดพลาดในรหัสตรวจสอบ URL ในไฟล์ root composer.json และในลิงค์ดาวน์โหลดซอร์ส จุดบกพร่องมีอยู่ในโค้ดตั้งแต่เดือนพฤศจิกายน 2011 Packagist ใช้เลเยอร์พิเศษเพื่อจัดการการดาวน์โหลดโค้ดโดยไม่ผูกมัดกับระบบควบคุมซอร์สเฉพาะซึ่งดำเนินการโดยการเรียก "fromShellCommandline" พร้อมอาร์กิวเมนต์บรรทัดคำสั่ง

หัวใจของปัญหาคือเมธอด ProcessExecutor อนุญาตให้คุณระบุพารามิเตอร์การโทรเพิ่มเติมใน URL การหลบหนีดังกล่าวหายไปในไดรเวอร์ GitDriver.php, SvnDriver.php และ HgDriver.php การโจมตี GitDriver.php ถูกขัดขวางโดยข้อเท็จจริงที่ว่าคำสั่ง "git ls-remote" ไม่สนับสนุนการระบุอาร์กิวเมนต์เพิ่มเติมหลังพา ธ

การโจมตีบน HgDriver.php เกิดขึ้นได้โดยการส่งผ่านพารามิเตอร์ "–config" ไปยังยูทิลิตี้ "hq" ซึ่งอนุญาตให้จัดการการดำเนินการของคำสั่งใด ๆ โดยจัดการกับการกำหนดค่า "alias.identify"

ด้วยการส่งแพ็กเกจทดสอบที่มี URL ที่คล้ายกันไปยัง Packagist นักวิจัยจึงมั่นใจได้ว่าหลังจากเผยแพร่แล้วเซิร์ฟเวอร์ของพวกเขาได้รับคำขอ HTTP จากเซิร์ฟเวอร์ Packagist บน AWS ซึ่งมีรายการไฟล์ในไดเร็กทอรีปัจจุบัน

ควรสังเกตว่าผู้ดูแลไม่ได้ระบุสัญญาณใด ๆ ของการใช้ประโยชน์จากช่องโหว่นี้ก่อนหน้านี้ในตัวอย่างสาธารณะของผู้บรรจุหีบห่อ

สุดท้ายหากคุณสนใจที่จะทราบข้อมูลเพิ่มเติมคุณสามารถปรึกษารายละเอียดได้ ในลิงค์ต่อไปนี้.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา