มัลแวร์ถูกแทรกเข้าไปในแพ็คเกจ NPM ของ UAParser.js พร้อมการดาวน์โหลด 8 ล้านครั้งต่อสัปดาห์

เรื่องราวของการลบออกจากที่เก็บ NPM ของแพ็คเกจที่เป็นอันตรายสามแพ็คเกจที่คัดลอกรหัสของไลบรารี UAParser.js ได้รับการต่อเนื่องที่ไม่คาดคิด - ผู้โจมตีที่ไม่รู้จักเข้าควบคุมบัญชีของผู้เขียนโครงการ UAParser.js และเผยแพร่การอัปเดตที่มีรหัสสำหรับ การขโมยรหัสผ่านและการขุด cryptocurrencies

ปัญหาคือไลบรารี UAParser.js ซึ่งมีฟังก์ชันสำหรับแยกวิเคราะห์ส่วนหัว User-Agent HTTP มีการดาวน์โหลดประมาณ 8 ล้านครั้งต่อสัปดาห์ และถูกใช้เป็นการพึ่งพาในโปรเจ็กต์มากกว่า 1200 โปรเจ็กต์ มีการระบุว่า UAParser.js ใช้ในโครงการของบริษัทต่างๆ เช่น Microsoft, Amazon, Facebook, Slack, Discord, Mozilla, Apple, ProtonMail, Autodesk, Reddit, Vimeo, Uber, Dell, IBM, Siemens, Oracle, HP และ Verison .

การโจมตีดังกล่าวดำเนินการผ่านการแฮ็กบัญชีของผู้พัฒนาโครงการ ซึ่งตระหนักว่ามีบางอย่างผิดปกติหลังจากคลื่นสแปมที่ผิดปกติตกลงไปในกล่องจดหมายของเขา ไม่มีการรายงานว่าบัญชีของนักพัฒนาซอฟต์แวร์ถูกแฮ็กเพียงใด ผู้โจมตีสร้างเวอร์ชัน 0.7.29, 0.8.0 และ 1.0.0 โดยแนะนำโค้ดที่เป็นอันตรายเข้าไป ภายในไม่กี่ชั่วโมง นักพัฒนาก็กลับมาควบคุมโปรเจ็กต์อีกครั้งและสร้างอัปเดต 0.7.30, 0.8.1 และ 1.0.1 เพื่อแก้ไขปัญหา เวอร์ชันที่เป็นอันตรายถูกเผยแพร่เป็นแพ็คเกจในพื้นที่เก็บข้อมูล NPM เท่านั้น พื้นที่เก็บข้อมูล Git ของโปรเจ็กต์บน GitHub ไม่ได้รับผลกระทบ ผู้ใช้ทุกคนที่ได้ติดตั้งเวอร์ชันที่มีปัญหา หากพบไฟล์ jsextension บน Linux/macOS และไฟล์ jsextension.exe และ create.dll บน Windows ขอแนะนำให้พิจารณาว่าระบบถูกบุกรุก

การเปลี่ยนแปลงที่เป็นอันตรายที่เพิ่มเข้ามานั้นชวนให้นึกถึงการเปลี่ยนแปลงที่เสนอก่อนหน้านี้ในโคลนของ UAParser.js ซึ่งดูเหมือนว่าจะเปิดตัวเพื่อทดสอบการทำงานก่อนที่จะเริ่มการโจมตีขนาดใหญ่ในโปรเจ็กต์หลัก ไฟล์ปฏิบัติการ jsextension ได้รับการดาวน์โหลดและเปิดใช้งานบนระบบของผู้ใช้จากโฮสต์ภายนอก ซึ่งได้รับการเลือกขึ้นอยู่กับแพลตฟอร์มของผู้ใช้และงานที่รองรับบน Linux, macOS และ Windows สำหรับแพลตฟอร์ม Windows นอกเหนือจากโปรแกรมสำหรับขุด Monero cryptocurrency (ใช้ XMRig miner แล้ว) ผู้โจมตียังจัดให้มีการแนะนำไลบรารี create.dll เพื่อสกัดกั้นรหัสผ่านและส่งไปยังโฮสต์ภายนอก

เพิ่มโค้ดดาวน์โหลดลงในไฟล์ preinstall.sh โดยให้แทรก IP=$(curl -k https://freegeoip.app/xml/ | grep 'RU|UA|BY|KZ') ถ้า [ -z " $ IP" ] ... ดาวน์โหลดและเรียกใช้ไฟล์ปฏิบัติการ fi

ดังที่เห็นได้จากโค้ด สคริปต์จะตรวจสอบที่อยู่ IP ในบริการ freegeoip.app ก่อน และไม่ได้เปิดแอปพลิเคชันที่เป็นอันตรายสำหรับผู้ใช้จากรัสเซีย ยูเครน เบลารุส และคาซัคสถาน

ที่มา: opennet.ru

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