การโจมตี NPM ที่ให้คุณระบุการมีอยู่ของแพ็คเกจในที่เก็บข้อมูลส่วนตัว

มีการระบุข้อบกพร่องใน NPM ซึ่งช่วยให้คุณตรวจจับการมีอยู่ของแพ็คเกจในพื้นที่เก็บข้อมูลแบบปิดได้ ปัญหานี้เกิดจากเวลาตอบสนองที่แตกต่างกันเมื่อขอแพ็คเกจที่มีอยู่และไม่มีอยู่จากบุคคลที่สามที่ไม่สามารถเข้าถึงพื้นที่เก็บข้อมูล หากไม่มีการเข้าถึงแพ็คเกจใดๆ ในที่เก็บส่วนตัว เซิร์ฟเวอร์ Registry.npmjs.org จะส่งข้อผิดพลาดกลับมาพร้อมรหัส “404” แต่หากมีแพ็คเกจที่มีชื่อที่ร้องขออยู่ ข้อผิดพลาดจะเกิดความล่าช้าอย่างเห็นได้ชัด ผู้โจมตีสามารถใช้คุณสมบัตินี้เพื่อระบุการมีอยู่ของแพ็คเกจโดยการค้นหาชื่อแพ็คเกจโดยใช้พจนานุกรม

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

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

ที่มา: opennet.ru

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