At ไซเกนีตลอดปีที่ผ่านมา เราได้ทุ่มเทเวลาไปกับการพัฒนาระบบที่ครอบคลุมเพื่อตรวจสอบรีจิสทรีแพ็กเกจโอเพนซอร์สสาธารณะ เพื่อตรวจจับกิจกรรมที่น่าสงสัยหรือโค้ดที่เป็นอันตรายโดยเนื้อแท้
โครงสร้างพื้นฐานนี้ช่วยให้เราสามารถวิเคราะห์แพ็กเกจทั้งหมดที่เผยแพร่ในแต่ละวันได้แบบเรียลไทม์ นอกจากนี้ยังช่วยให้เราสามารถตรวจสอบพฤติกรรมของผู้ใช้ที่ผิดปกติได้อีกด้วย
แม้ว่าการพบโค้ดที่เป็นอันตรายในรีจิสทรีของแพ็กเกจจะเป็นที่ทราบกันดีอยู่แล้วนอกจากนี้ ยังมีพฤติกรรมแปลกประหลาดหรือผิดปกติอื่นๆ ที่ผู้ใช้งานทั่วไปของระบบลงทะเบียนเหล่านี้มองข้ามไปโดยสิ้นเชิง แม้แต่ผู้ที่คอยเฝ้าสังเกตอย่างใกล้ชิดก็ยังหาเหตุผลหรือคำอธิบายสำหรับพฤติกรรมเหล่านั้นได้ยาก
สิ่งที่โดดเด่นในทีม Xygeni คือความมุ่งมั่นไม่ย่อท้อเมื่อเผชิญกับปัญหา ดังนั้นเราจึงเจาะลึกเข้าไปในเรื่องนี้มากขึ้น
ทุกอย่างเริ่มต้นจากการที่สถิติพุ่งสูงขึ้นอย่างผิดปกติ
ดังที่ผมได้กล่าวไปก่อนหน้านี้ ในส่วนของโครงสร้างพื้นฐานของเรา เราได้ตรวจสอบตัวชี้วัดกิจกรรมต่างๆ มากมายในรีจิสทรีแพ็กเกจโอเพนซอร์สสาธารณะ
ในช่วงปลายเดือนมีนาคม เพื่อนร่วมงานของฉัน คาร์เมน ได้ส่งสัญญาณเตือน เราเริ่มสังเกตเห็นความผิดปกติอย่างมากใน... จำนวนแพ็กเกจที่เผยแพร่บน NPM หลังจากการตรวจสอบเบื้องต้น เราพบว่าความคลาดเคลื่อนนี้เกิดจากผู้ใช้จำนวนไม่มากนักที่มีอัตราการเผยแพร่แพ็กเกจเพิ่มขึ้นอย่างรวดเร็ว
นี่จึงกระตุ้นให้เราทบทวนกระบวนการทำงานและข้อมูลที่เกี่ยวข้องภายในแพลตฟอร์ม โชคดีที่การตรวจสอบของเราพบว่าข้อมูลดูเหมือนจะถูกต้อง แต่ก็เป็นเรื่องที่น่าสงสัยอยู่ไม่น้อย!
จากการตรวจสอบเพิ่มเติม เราพบว่าบรรจุภัณฑ์เหล่านี้มีลักษณะร่วมกันหลายประการ:
- ผู้เผยแพร่ข้อมูลเป็นผู้ใช้ใหม่ที่เพิ่งสร้างบัญชี โดยมีอายุการใช้งานไม่เกินหนึ่งหรือสองเดือน
- แพ็กเกจเหล่านั้นมีชื่อที่ดูเหมือนจะสุ่มขึ้นมา น่าจะสร้างขึ้นโดยใช้พจนานุกรม เราสามารถพบชื่อแพ็กเกจที่มีชื่อแปลกๆ เช่น ไมท์ยักษ์ยิ้ม, erick-mangut94-sukiwir, แอปพัฒนาสัตว์เลื้อยคลานแปลกใหม่ or แอปทีเดฟทูน่าที่ชัดเจนเราจะแนบภาคผนวกซึ่งมีตัวอย่างของสินทรัพย์ที่เราค้นพบไว้ด้วย
- สิ่งของในพัสดุเหล่านี้มีลักษณะคล้ายคลึงกันมาก บ่อยครั้งก็เหมือนกันทุกประการ
ในบริบทนี้ เราพบว่าหนึ่งในแพ็กเกจนั้นมีสคริปต์ Python อยู่ด้วย อาจโดยบังเอิญซึ่งดูเหมือนว่าจะใช้สำหรับเผยแพร่แพ็กเกจโดยอัตโนมัติ

การคลี่คลายตาข่าย
กิจกรรมการตีพิมพ์ของสำนักพิมพ์บางแห่งในเดือนที่ผ่านมา ดำเนินการตามแผนภูมิแสดงลำดับเวลาดังต่อไปนี้:

ต่อไปนี้คือสถิติทั้งหมดที่เกี่ยวข้องกับเหตุการณ์นี้ที่เราสามารถแบ่งปันได้:

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

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

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

- สถานที่ตั้ง: เจ้าของคลังข้อมูลบางรายระบุว่าคลังข้อมูลของตนตั้งอยู่ในประเทศอินโดนีเซีย
- ตำแหน่งที่ตั้งที่เราสามารถระบุได้จากข้อมูลเมตาของกิจกรรมบน GitHub ก็ชี้ไปยังประเทศอินโดนีเซียเช่นกัน

ชาห้าโมงเย็น
เนื่องจากอินโดนีเซียเคยเป็นอาณานิคมของอังกฤษ การดื่มชาจึงเหมาะสมอย่างยิ่งในที่นี่ อย่างไรก็ตาม ในกรณีนี้ เป็นชาชนิดพิเศษทีเดียว
คุณจำได้ไหม ชายามบ่าย ไฟล์ที่เราเห็นตอนแรกน่ะเหรอ? ตอนนั้นเรายังไม่แสดงเนื้อหา แต่หน้าตามันเป็นแบบนี้:

ไฟล์เหล่านี้ดูเหมือนจะเกี่ยวข้องกับ พิธีชงชาแต่มันคืออะไรกันแน่? เรามาถึงจุดนี้แล้ว https://tea.xyz/blog/250k-grant-for-open-source-developersซึ่งกล่าวถึงวัตถุประสงค์:
Tea กำลังพลิกโฉมโลกดิจิทัลด้วยการแก้ไขปัญหาที่เรื้อรังมานานเกี่ยวกับการจ่ายค่าตอบแทนที่ไม่เพียงพอสำหรับนักพัฒนาซอฟต์แวร์โอเพนซอร์ส การแก้ปัญหานี้มีความเร่งด่วนมากกว่าที่เคยเป็นมา ซึ่งเป็นเหตุผลที่เราตัดสินใจมอบเงินทุนสนับสนุน 250 ดอลลาร์สหรัฐฯ ก่อนการเปิดตัวโปรโตคอล ระยะเริ่มต้นนี้มีเป้าหมายเพื่อสนับสนุนผู้ดูแลโครงการโอเพนซอร์สที่มีผลกระทบอย่างมีนัยสำคัญต่อระบบนิเวศซอฟต์แวร์โอเพนซอร์ส และมี teaRank มากกว่า 30 ก่อนที่จะเปิดตัว tea Protocol Incentivized Testnet”

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

นั่นดูเหมือนจะอธิบายสิ่งที่เกิดขึ้นที่นี่ได้: ผู้ใช้บางรายปั่นกระแสความนิยมของโครงการโอเพนซอร์สของตนเองให้สูงขึ้นอย่างไม่เป็นธรรมชาติ เพื่อแย่งชิงอันดับ teaRank และรับผลประโยชน์จากสมาคมชา เพราะสุดท้ายแล้ว เงินก็เป็นแรงขับเคลื่อนที่เก่าแก่ที่สุด ควบคู่ไปกับเรื่องเพศ
บทสรุปและความคิดสุดท้าย
แม้ว่าจะไม่พบหลักฐานของโค้ดที่เป็นอันตรายในแพ็กเกจ NPM เหล่านี้ และพวกเขาอาจไม่ได้ตั้งใจให้ใครใช้ แต่แพ็กเกจเหล่านี้อาจละเมิดข้อกำหนดในการให้บริการ (TOS) ของ NPM, GitHub หรือสมาคมชาได้หลายข้อ อย่างไรก็ตาม เรื่องนี้อยู่นอกขอบเขตงานของเรา (แต่เราได้แจ้งให้พวกเขาทราบแล้ว และจะดำเนินการตามที่พวกเขาเห็นว่าเหมาะสม) การใช้แพลตฟอร์มเหล่านี้ในทางที่ผิดจะส่งผลกระทบต่อเราและองค์กรของเราในบางทาง
สิ่งที่ชัดเจนคือ แพ็กเกจโอเพนซอร์สที่ดูเหมือนไม่มีพิษภัยใดๆ อาจซ่อนพฤติกรรมที่ยากจะเข้าใจได้หากปราศจากข้อมูลบริบทที่ครบถ้วน
ในฐานะนักพัฒนาซอฟต์แวร์ ผมพบว่าการควบคุมแพ็กเกจโอเพนซอร์สทั้งหมดที่ใช้ในแอปพลิเคชันที่เราพัฒนาและดูแลรักษานั้นเป็นเรื่องที่ท้าทายมาก หากไม่มีเครื่องมือที่ช่วยควบคุมโดยอัตโนมัติ งานนี้อาจใช้เวลาของทีมเราไปหลายชั่วโมงเลยทีเดียว
เรามักมีทางเลือกที่จะมองข้ามไป โดยเชื่อว่าโลกโอเพนซอร์สเป็นสถานที่ปลอดภัย โชคดีที่ผมเชื่อว่าความคิดแบบนี้ยังไม่แพร่หลายมากนักในปัจจุบัน กรณีนี้จึงแทบไม่มีผลกระทบอะไร แต่เราเพิ่งประสบกับเหตุการณ์ที่ร้ายแรงกว่ามากเมื่อไม่นานมานี้กับ... XZ แบ็คดอร์และมันก็ยังไม่เป็นเช่นนั้น เพียงผู้เดียว, เพียงคนเดียว.
หากคุณอ่านมาถึงตรงนี้แล้ว ผมหวังว่าคุณจะเพลิดเพลินไปกับรายละเอียดที่ซับซ้อนของเหตุการณ์ที่น่าสนใจนี้ อย่าลืมใช้เวลาสักครู่เพื่อทบทวนว่า Xygeni สามารถช่วยเสริมความปลอดภัยให้กับองค์กรของคุณได้อย่างไร
ภาคผนวก: ระบุรายการสินทรัพย์ที่เกี่ยวข้องที่จะรวมไว้ในบทความฉบับสุดท้าย
ผู้ใช้งาน NPM ที่เกี่ยวข้องมากขึ้นจะพิจารณาจากจำนวนแพ็กเกจที่เผยแพร่: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17
ตัวอย่างเล็กๆ น้อยๆ ของแพ็กเกจที่เกี่ยวข้อง: ไมโครซิเตอร์, ครินเด็กซ์, ศิลปะ-ดาว, เซบลัคคูอาห์, vndrabnb, vndrave, เดปฟิฟ, เดปซิก, เดเปยต์, เดปนิน, โดปอน, โครงการเคลลี่มานทีส
ตัวอย่างคลังเก็บข้อมูล GitHub ที่เกี่ยวข้องซึ่งมีไฟล์ tea.yml:






