ตรวจพบแพ็คเกจสนิมสนิมที่เป็นอันตรายใน crates.io ที่เก็บสนิม

นักพัฒนาภาษา Rust ได้เตือนว่ามีการระบุแพ็คเกจสนิมที่มีโค้ดที่เป็นอันตรายในพื้นที่เก็บข้อมูล crates.io แพ็คเกจนี้ใช้แพ็คเกจrust_decimalที่ถูกต้องตามกฎหมายและเผยแพร่โดยใช้ชื่อที่คล้ายคลึงกัน (typesquatting) โดยคาดหวังว่าผู้ใช้จะไม่สังเกตเห็นว่าไม่มีขีดล่างเมื่อค้นหาหรือเลือกโมดูลจากรายการ

เป็นที่น่าสังเกตว่ากลยุทธ์นี้ประสบความสำเร็จและในแง่ของจำนวนการดาวน์โหลด แพ็คเกจสมมตินั้นช้ากว่าต้นฉบับเพียงเล็กน้อยเท่านั้น (~ 111 ดาวน์โหลดของrustdecimal 1.23.1 และ 113 ของrust_decimal ดั้งเดิม 1.23.1) . ในเวลาเดียวกัน การดาวน์โหลดส่วนใหญ่เป็นโคลนที่ไม่เป็นอันตรายซึ่งไม่มีโค้ดที่เป็นอันตราย การเปลี่ยนแปลงที่เป็นอันตรายถูกเพิ่มเมื่อวันที่ 25 มีนาคมในเวอร์ชันrustdecimal 1.23.5 ซึ่งได้รับการดาวน์โหลดประมาณ 500 ครั้งก่อนที่จะระบุปัญหาและแพ็คเกจถูกบล็อก (สันนิษฐานว่าการดาวน์โหลดเวอร์ชันที่เป็นอันตรายส่วนใหญ่ทำโดยบอท) และ ไม่ได้ถูกใช้เป็นการพึ่งพาแพ็คเกจอื่นที่มีอยู่ในพื้นที่เก็บข้อมูล (เป็นไปได้ว่าแพ็คเกจที่เป็นอันตรายนั้นขึ้นอยู่กับแอปพลิเคชันปลายทาง)

การเปลี่ยนแปลงที่เป็นอันตรายประกอบด้วยการเพิ่มฟังก์ชันใหม่ Decimal::new ซึ่งการใช้งานมีโค้ดที่สับสนสำหรับการดาวน์โหลดจากเซิร์ฟเวอร์ภายนอกและการเปิดไฟล์ปฏิบัติการ เมื่อเรียกใช้ฟังก์ชัน จะมีการตรวจสอบตัวแปรสภาพแวดล้อม GITLAB_CI และหากตั้งค่าไว้ ไฟล์ /tmp/git-updater.bin จะถูกดาวน์โหลดจากเซิร์ฟเวอร์ภายนอก ตัวจัดการที่เป็นอันตรายที่ดาวน์โหลดได้รองรับการทำงานบน Linux และ macOS (ไม่รองรับแพลตฟอร์ม Windows)

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

ที่มา: opennet.ru

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