การโจมตีแบบพึ่งพาช่วยให้สามารถเรียกใช้รหัสได้ที่ PayPal, Microsoft, Apple, Netflix, Uber และ บริษัท อื่น ๆ อีก 30 แห่ง

ไม่กี่วันที่ผ่านมา มีการเผยแพร่วิธีการง่ายๆที่น่าประหลาดใจซึ่งช่วยให้สามารถโจมตีการอ้างอิงในแอปพลิเคชันได้ ซึ่งพัฒนาโดยใช้ที่เก็บแพ็คเกจภายใน นักวิจัยที่ระบุปัญหา พวกเขาสามารถเรียกใช้รหัสของคุณ บนเซิร์ฟเวอร์ภายในของ บริษัท 35 แห่งรวมถึง PayPal, Microsoft, Apple, Netflix, Uber, Tesla และ Shopify

การแฮ็กนั้นดำเนินการโดยเป็นส่วนหนึ่งของโปรแกรม Bug Bounty โดยร่วมมือกับ บริษัท ที่ถูกโจมตีและผู้กระทำผิดได้รับโบนัส $ 130.000 สำหรับการระบุช่องโหว่แล้ว

วิธีการนี้ขึ้นอยู่กับความจริงที่ว่า หลาย บริษัท ใช้การอ้างอิงที่เก็บมาตรฐานของ NPM, PyPI และ RubyGems ในแอปพลิเคชันภายในของตนเช่นเดียวกับการอ้างอิงภายในที่ไม่ได้เผยแพร่ต่อสาธารณะหรือดาวน์โหลดจากที่เก็บของตนเอง

ปัญหาคือผู้จัดการแพ็คเกจ เช่น npm, pip และ gem พวกเขาพยายามดาวน์โหลดการอ้างอิงภายในของ บริษัท แม้จากที่เก็บสาธารณะ สำหรับการโจมตี เพียงกำหนดชื่อของแพ็กเกจด้วยการอ้างอิงภายในและสร้างแพ็คเกจของคุณเองด้วยชื่อเดียวกัน ในที่เก็บสาธารณะของ NPM, PyPI และ RubyGems

ปัญหานี้ไม่เฉพาะเจาะจงกับ NPM, PyPI และ RubyGems และยังปรากฏในระบบอื่น ๆ เช่น NuGet, Maven และ Yarn

แนวคิดสำหรับวิธีการที่เสนอเกิดขึ้นหลังจากที่นักวิจัยสังเกตเห็นโดยบังเอิญว่าในโค้ดที่เปิดเผยต่อสาธารณะที่โพสต์บน GitHub หลาย บริษัท ไม่ได้ลบการกล่าวถึงการอ้างอิงเพิ่มเติมออกจากไฟล์รายการของตน ใช้ในโครงการภายในหรือเมื่อใช้ฟังก์ชันเพิ่มเติม พบร่องรอยที่คล้ายกันในโค้ด JavaScript สำหรับบริการบนเว็บรวมถึงในโครงการ Node.JS, Python และ Ruby ของหลาย บริษัท

การรั่วไหลหลักเกี่ยวข้องกับการฝังเนื้อหา จากไฟล์ package.json ในโค้ด JavaScript ที่เปิดเผยต่อสาธารณะในระหว่างขั้นตอนการสร้างเช่นเดียวกับการใช้องค์ประกอบพา ธ จริงในการเรียก need () ซึ่งสามารถใช้เพื่อตัดสินชื่อการอ้างอิง

การสแกนโดเมนขององค์กรหลายล้านโดเมนเปิดเผยชื่อแพ็คเกจ JavaScript หลายพันชื่อ ซึ่งไม่ได้อยู่ในที่เก็บ NPM เมื่อรวบรวมฐานข้อมูลชื่อแพ็กเกจภายในแล้วนักวิจัยจึงตัดสินใจทำการทดลองเพื่อแฮ็กโครงสร้างพื้นฐานของ บริษัท ที่เข้าร่วมโปรแกรม Bug Bounty ผลลัพธ์ได้ผลอย่างน่าประหลาดใจ และนักวิจัยสามารถรันโค้ดของเขาบนคอมพิวเตอร์และเซิร์ฟเวอร์สำหรับการพัฒนาจำนวนมากที่รับผิดชอบในการสร้างหรือทดสอบตามระบบการรวมระบบอย่างต่อเนื่อง

เมื่อดาวน์โหลดการอ้างอิงตัวจัดการแพ็กเกจ npm, pip และ gem ส่วนใหญ่จะติดตั้งแพ็กเกจจากที่เก็บสาธารณะหลัก NPM, PyPI และ RubyGems ซึ่งถือว่ามีลำดับความสำคัญสูงกว่า

การมีอยู่ของแพ็คเกจที่คล้ายกันซึ่งมีชื่อเดียวกันในที่เก็บของ บริษัท เอกชนถูกละเว้นโดยไม่แสดงคำเตือนหรือทำให้เกิดข้อขัดข้อง ที่สามารถดึงดูดความสนใจของผู้ดูแลระบบ ใน PyPI ลำดับความสำคัญในการดาวน์โหลดจะได้รับอิทธิพลจากหมายเลขเวอร์ชัน (ไม่ว่าที่เก็บจะดาวน์โหลดเวอร์ชันล่าสุดของแพ็คเกจ) ใน NPM และ RubyGems ลำดับความสำคัญขึ้นอยู่กับที่เก็บเท่านั้น

ผู้วิจัยได้วางแพ็กเกจในที่เก็บ NPM, PyPI และ RubyGems ที่ข้ามชื่อของการอ้างอิงภายในที่พบโดยเพิ่มโค้ดลงในสคริปต์ที่รันก่อนการติดตั้ง (ติดตั้งล่วงหน้าใน NPM) เพื่อรวบรวมข้อมูลเกี่ยวกับระบบและส่งข้อมูลที่ได้รับไปยัง โฮสต์ภายนอก

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

75% ของการประมวลผลโค้ดที่บันทึกไว้ทั้งหมดเกี่ยวข้องกับการดาวน์โหลดแพ็กเกจ NPM สาเหตุหลักมาจากการที่มีชื่อโมดูล JavaScript ภายในมากกว่าชื่อการพึ่งพา Python และ Ruby อย่างมีนัยสำคัญ

Fuente: https://medium.com/


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

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

*

*

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