ทดลองสร้างแพ็คเกจ NPM ที่ขึ้นอยู่กับแพ็คเกจทั้งหมดในที่เก็บ

หนึ่งในผู้พัฒนาแพ็คเกจ JavaScript ทดลองสร้างและวางแพ็คเกจ "ทุกอย่าง" ลงในที่เก็บ NPM ซึ่งครอบคลุมแพ็คเกจที่มีอยู่ทั้งหมดในที่เก็บด้วยการขึ้นต่อกัน ในการใช้งานฟีเจอร์นี้ แพ็คเกจ “ทุกอย่าง” มีการขึ้นต่อกันโดยตรงกับแพ็คเกจ “@everything-registry/chunk-N” ห้าชุด ซึ่งในทางกลับกันมีการขึ้นต่อกันกับแพ็คเกจ “sub-chunk-N” มากกว่า 3000 ชุด ซึ่งแต่ละแพ็คเกจจะผูกกับ 800 แพ็คเกจที่มีอยู่ในพื้นที่เก็บข้อมูล

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

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

ที่มา: opennet.ru

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