นักวิจัยอัพโหลดแพ็กเกจไลบรารีเลียนแบบชื่อไลบรารีภายใน ส่งโค้ดเข้าไปรันใน Apple, Microsoft, Netflix, Uber สำเร็จ

Alex Birsan รายงานถึงการโจมตีองค์กรขนาดใหญ่จำนวนมากด้วยการสร้างแพ็กเกจไลบรารีเลียนแบบชื่อไลบรารีในองค์กรแล้วไปวางตามบริการดาวน์โหลดไลบรารีไม่ว่าจะเป็น RubyGems, npm, หรือ PyPI

องค์กรขนาดใหญ่จำนวนมากมักมีไลบรารีเฉพาะทางของตัวเองใช้งานภายในเป็นเรื่องปกติ และหลายครั้งชื่อไลบรารีเหล่านี้ก็หลุดออกมาสู่โลกภายนอก เช่น Paypal เคยทำไฟล์ package.json ที่ใช้ภายในหลุดออกมาอยู่บน GitHub ทำให้รู้ว่าบริษัทมีการใช้งานไลบรารีภายในเช่น pplogger, auth-paypal, wurfl-paypal, analytics-paypal เป็นต้น หรือแม้แต่แอปเปิลก็เคยทำรายชื่อแพ็กเกจเหล่านี้หลุดออกมาเช่นกัน

การติดตั้งไลบรารีนับเป็นสิทธิค่อนข้างสูง ตัวติดตั้งไลบรารีมักรันโค้ดในส่วนติดตั้งแพ็กเกจทันทีที่ดาวน์โหลดเสร็จ ทำให้หากแฮกเกอร์หลอกให้องค์กรดาวน์โหลดแพ็กเกจได้ก็จะรันโค้ดจากภายในองค์กรได้ทันที ตัว Alex เองพัฒนาแพ็กเกจพิเศษที่จะรายงานกลับเซิร์ฟเวอร์ทุกครั้งที่มีคนติดตั้งแพ็กเกจไป โดยรายงานผ่าน DNS lookup ทำให้เซิร์ฟเวอร์ควบคุมรู้ได้ว่าเครื่องอะไรติดตั้งแพ็กเกจไปแล้วบ้างแม้ตัวเครื่องนั้นจะเชื่อมต่ออินเทอร์เน็ตไม่ได้ก็ตามที เขาวางแพ็กเกจแบบเดียวกันใน 3 ภาษาคือ Ruby, JavaScript, และ Python

ผลของการวางแพ็กเกจทำให้ Alex สามารถรันโค้ดจากภายในองค์กรใหญ่ๆ ได้จำนวนมาก ทั้ง Apple, Microsoft, Netflix, Shopify, Uber, Yelp ส่งผลให้เขาได้รางวัลรายงานช่องโหว่ระดับสูงจากบริษัทเหล่านี้

ต้นตอของปัญหาคือระบบดาวน์โหลดแพ็กเกจของภาษาต่างๆ จะพยายามเลือกแพ็กเกจเวอร์ชั่นสูงสุดให้เสมอ หากพบว่ามีแพ็กเกจชื่อเดียวกันแต่เลขเวอร์ชั่นสูงกว่าในเซิร์ฟเวอร์นอกบริษัท ตัวดาวน์โหลดแพ็กเกจก็จะพยายามดาวน์โหลดจากภายนอกทันที

ทางด้าน Microsoft Azure ออกรายงานแนะนำกระบวนการป้องกันการโจมตีรูปแบบนี้พร้อมกับรายงานของ Alex

ที่มา – Medium: @alex.birsan

No Description

Topics: 
Security
NPM
Python
Ruby
JavaScript