Tags:
Node Thumbnail

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

Get latest news from Blognone

Comments

By: sukoom2001
ContributorAndroidUbuntu
on 11 February 2021 - 12:48 #1198572
sukoom2001's picture

วางแผนรอบเดียว กินรอบวงเลย

By: tom789
Windows Phone
on 11 February 2021 - 12:54 #1198574

เก่งม าก

By: jane
AndroidUbuntu
on 11 February 2021 - 13:15 #1198578 Reply to:1198574
jane's picture

กล้ามาก

By: narate
AndroidUbuntu
on 11 February 2021 - 13:48 #1198582 Reply to:1198578
narate's picture

ขอบใจ

By: crucifier
iPhoneAndroidUbuntu
on 11 February 2021 - 14:13 #1198590 Reply to:1198582

หนึ่ง สอง หนึ่ง สอง สาม

By: Hadakung
iPhoneWindows PhoneAndroidWindows
on 11 February 2021 - 17:44 #1198616 Reply to:1198590

โฟว์ ไฟท์

By: Pearseak on 12 February 2021 - 10:35 #1198703 Reply to:1198590

หนึ่ง หนึ่ง สอง หนึ่ง หนึ่ง สอง หนึ่ง

By: olosol@hotmail.com
iPhoneWindows PhoneAndroidBlackberry
on 11 February 2021 - 14:31 #1198592

hahaha

By: deaknaew on 11 February 2021 - 21:26 #1198632

แสดงว่าต้องรู้ชื่อ package ภายใน และชื่อนั้นต้องไม่โดนจองไว้ด้วย และเลขเวอร์ชั่นก็ต้องมากกว่าในองค์กรและ ไม่เวอร์วัง ด้วย?

By: lew
FounderJusci's WriterMEconomicsAndroid
on 11 February 2021 - 22:18 #1198643 Reply to:1198632
lew's picture
  • ชื่อ package ภายในหลุดออกมาเรื่อยๆ บางทีหลุดมากับโครงการ open source ของบริษัท ของแอปเปิลหลุดมากับเว็บ
  • ชื่อไม่ซ้ำ สบายมาก เพราะองค์กรเอง "พยายาม" ตั้งชื่อไม่ซ้ำกับข้างนอกอยู่แล้ว อย่าง Paypal พยายามห้อยท้าย -paypal ต่อท้ายชื่อแพ็กเกจ ไม่ให้ซ้ำใคร
  • พอจดทะเบียนโครงการได้ เลขเวอร์ชั่นอยากใส่อะไรก็ใส่ ใส่ 9999.99 ก็ได้

lewcpe.com, @wasonliw

By: -Rookies-
ContributorAndroidWindowsIn Love
on 11 February 2021 - 23:15 #1198648

ง่าย ๆ จนคิดไม่ถึงเลย โหดมาก


เทคโนโลยีไม่ผิด คนใช้มันในทางที่ผิดนั่นแหละที่ผิด!?!

By: mr_tawan
ContributoriPhoneAndroidWindows
on 12 February 2021 - 14:07 #1198728
mr_tawan's picture

หรือจริง ๆ ในระดับองค์กรณ์ควรใช้ registry แบบ pull จาก repository ของนักพัฒนาโปรเจคตรง ๆ (แลวดูแลเอง) มากกว่า registry ที่เปิดให้ใครมา push package ใส่ให้ก็ได้กันนะ ?

แต่เอาจริง ๆ การใช้โค๊ดแบบไม่ระบุที่มามันก็อันตรายอยู่แฮะ


  • 9tawan.net บล็อกส่วนตัวฮับ