ช่องโหว่ที่อนุญาตให้มีการเผยแพร่การอัปเดตสำหรับแพ็คเกจใดๆ ในพื้นที่เก็บข้อมูล NPM

GitHub ได้เปิดเผยเหตุการณ์สองเหตุการณ์ในโครงสร้างพื้นฐานที่เก็บแพ็คเกจ NPM เมื่อวันที่ 2 พฤศจิกายน นักวิจัยด้านความปลอดภัยบุคคลที่สาม (Kajetan Grzybowski และ Maciej Piechota) ซึ่งเป็นส่วนหนึ่งของโปรแกรม Bug Bounty ได้รายงานการมีอยู่ของช่องโหว่ในพื้นที่เก็บข้อมูล NPM ที่อนุญาตให้คุณเผยแพร่เวอร์ชันใหม่ของแพ็คเกจใด ๆ โดยใช้บัญชีของคุณ ซึ่งไม่ได้รับอนุญาตให้ดำเนินการปรับปรุงดังกล่าว

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

ปัญหาได้รับการแก้ไขแล้ว 6 ชั่วโมงหลังจากรายงานช่องโหว่ แต่มีช่องโหว่อยู่ใน NPM นานกว่าบันทึกการวัดและส่งข้อมูลทางไกลที่ครอบคลุม GitHub อ้างว่าไม่มีร่องรอยของการโจมตีโดยใช้ช่องโหว่นี้ตั้งแต่เดือนกันยายน 2020 แต่ไม่มีการรับประกันว่าปัญหาดังกล่าวไม่เคยถูกนำไปใช้ประโยชน์มาก่อน

เหตุการณ์ที่สองเกิดขึ้นเมื่อวันที่ 26 ตุลาคม ในระหว่างการทำงานด้านเทคนิคกับฐานข้อมูลของบริการ Replicate.npmjs.com การปรากฏตัวของข้อมูลที่เป็นความลับในฐานข้อมูลที่เข้าถึงได้โดยคำขอภายนอกถูกเปิดเผย โดยเปิดเผยข้อมูลเกี่ยวกับชื่อของแพ็คเกจภายในที่ถูกกล่าวถึงในบันทึกการเปลี่ยนแปลง ข้อมูลเกี่ยวกับชื่อดังกล่าวสามารถใช้เพื่อดำเนินการโจมตีแบบพึ่งพาในโครงการภายใน (ในเดือนกุมภาพันธ์ การโจมตีที่คล้ายกันนี้อนุญาตให้ใช้รหัสดำเนินการบนเซิร์ฟเวอร์ของ PayPal, Microsoft, Apple, Netflix, Uber และบริษัทอื่น ๆ อีก 30 แห่ง)

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

โปรดจำไว้ว่าจากการศึกษาที่ดำเนินการในปี 2020 ผู้ดูแลแพ็คเกจเพียง 9.27% ​​ใช้การตรวจสอบสิทธิ์แบบสองปัจจัยเพื่อปกป้องการเข้าถึง และใน 13.37% ของกรณี เมื่อลงทะเบียนบัญชีใหม่ นักพัฒนาพยายามใช้รหัสผ่านที่ถูกบุกรุกซ้ำซึ่งปรากฏอยู่ใน การรั่วไหลของรหัสผ่านที่ทราบ ในระหว่างการตรวจสอบความปลอดภัยของรหัสผ่าน มีการเข้าถึงบัญชี NPM 12% (13% ของแพ็คเกจ) เนื่องจากการใช้รหัสผ่านที่คาดเดาได้และไม่สำคัญ เช่น “123456” ในบรรดาบัญชีที่มีปัญหา ได้แก่ บัญชีผู้ใช้ 4 บัญชีจากแพ็คเกจยอดนิยม 20 อันดับแรก 13 บัญชีที่มีแพ็คเกจดาวน์โหลดมากกว่า 50 ล้านครั้งต่อเดือน 40 บัญชีที่มีการดาวน์โหลดมากกว่า 10 ล้านครั้งต่อเดือน และ 282 บัญชีที่มีการดาวน์โหลดมากกว่า 1 ล้านครั้งต่อเดือน เมื่อคำนึงถึงการโหลดโมดูลตามห่วงโซ่การพึ่งพา การประนีประนอมของบัญชีที่ไม่น่าเชื่อถืออาจส่งผลกระทบมากถึง 52% ของโมดูลทั้งหมดใน NPM

ที่มา: opennet.ru

เพิ่มความคิดเห็น