Các nhà nghiên cứu an ninh mạng đã xác định một số gói độc hại trên các hệ sinh thái npm, Python và Ruby lợi dụng Discord làm kênh command-and-control (C2) để truyền dữ liệu bị đánh cắp đến các webhooks do kẻ tấn công kiểm soát.
Webhooks trên Discord là một cách để đăng tin nhắn lên các kênh trên nền tảng mà không yêu cầu người dùng bot hoặc xác thực, biến chúng thành một cơ chế hấp dẫn để kẻ tấn công rút trích dữ liệu ra một kênh dưới sự kiểm soát của chúng.
"Điều quan trọng là, các URL webhook thực tế chỉ có thể ghi," nhà nghiên cứu Olivia Brown từ Socket cho biết trong một phân tích. "Chúng không tiết lộ lịch sử kênh và những người phòng thủ không thể đọc lại các bài đăng trước đó chỉ bằng cách biết URL."
Công ty bảo mật chuỗi cung ứng phần mềm này cho biết họ đã xác định một số gói sử dụng webhooks của Discord theo nhiều cách khác nhau:
- mysql-dumpdiscord (npm), gói này hút nội dung các tệp cấu hình của nhà phát triển như config.json, .env, ayarlar.js và ayarlar.json đến một Discord webhook.
- nodejs.discord (npm), gói này sử dụng Discord webhook để có khả năng ghi nhật ký cảnh báo (một cách tiếp cận không hoàn toàn độc hại).
- malinssx, malicus và maliinn (PyPI), các gói này sử dụng Discord làm máy chủ C2 bằng cách kích hoạt yêu cầu HTTP đến một kênh mỗi khi các gói được cài đặt bằng "pip install <package name>".
- sqlcommenter_rails (RubyGems.org), gói này thu thập thông tin máy chủ, bao gồm nội dung các tệp nhạy cảm như "/etc/passwd" và "/etc/resolv.conf," và gửi chúng đến một Discord webhook được mã hóa cứng.
"Việc lạm dụng Discord webhooks làm C2 là rất quan trọng vì nó đảo ngược kinh tế của các cuộc tấn công chuỗi cung ứng," Brown lưu ý. "Bằng cách miễn phí và nhanh chóng, các tác nhân đe dọa tránh được việc phải lưu trữ và duy trì cơ sở hạ tầng của riêng họ. Ngoài ra, chúng thường hòa nhập vào mã thông thường và các quy tắc tường lửa, cho phép rút trích dữ liệu ngay cả từ các nạn nhân đã được bảo mật."
"Khi kết hợp với các hooks tại thời điểm cài đặt hoặc tập lệnh xây dựng, các gói độc hại có cơ chế Discord C2 có thể âm thầm hút các tệp .env, API keys, và chi tiết máy chủ từ máy của nhà phát triển và trình chạy CI rất lâu trước khi giám sát runtime kịp nhìn thấy ứng dụng."
Chiến dịch "Contagious Interview" tràn ngập npm với các gói giả mạo
Tiết lộ này được đưa ra khi công ty cũng gắn cờ 338 gói độc hại được công bố bởi các tác nhân đe dọa Triều Tiên liên quan đến chiến dịch Contagious Interview, sử dụng chúng để phân phối các họ mã độc như HexEval, XORIndex và các trình tải được mã hóa để phân phối BeaverTail, thay vì trực tiếp thả stealer và downloader JavaScript. Các gói này đã được tải xuống tổng cộng hơn 50.000 lần.
"Trong làn sóng mới nhất này, các tác nhân đe dọa Triều Tiên đã sử dụng hơn 180 danh tính giả mạo gắn liền với các alias npm và email đăng ký mới, và vận hành hơn một tá endpoint command and control (C2)," nhà nghiên cứu bảo mật Kirill Boychenko cho biết.
Các mục tiêu của chiến dịch bao gồm các nhà phát triển Web3, cryptocurrency và blockchain, cũng như những người tìm việc trong lĩnh vực kỹ thuật, những người được tiếp cận trên các nền tảng chuyên nghiệp như LinkedIn với các cơ hội hấp dẫn. Các mục tiêu tiềm năng sau đó được hướng dẫn hoàn thành một bài tập mã hóa bằng cách sao chép một kho lưu trữ được cài bẫy tham chiếu đến một gói độc hại (ví dụ: eslint-detector) đã được xuất bản lên npm registry.
Khi được chạy cục bộ trên máy, gói được tham chiếu trong dự án giả định hoạt động như một stealer (tức là BeaverTail) để thu thập thông tin đăng nhập trình duyệt, dữ liệu ví cryptocurrency, macOS Keychain, keystrokes, nội dung clipboard và screenshots. Mã độc được thiết kế để tải xuống các payloads bổ sung, bao gồm một backdoor Python đa nền tảng có tên mã InvisibleFerret.
Trong số hàng trăm gói được tải lên bởi các tác nhân Triều Tiên, nhiều gói là typosquats của các gói hợp pháp tương ứng (ví dụ: dotevn so với dotenv), đặc biệt là những gói liên quan đến Node.js, Express hoặc các framework frontend như React. Một số thư viện được xác định cũng được tìm thấy là lookalikes của các bộ công cụ Web3 (ví dụ: ethrs.js so với ethers.js).
"Contagious Interview không phải là một sở thích tội phạm mạng, nó hoạt động như một dây chuyền lắp ráp hoặc một mối đe dọa chuỗi cung ứng theo mô hình nhà máy," Boychenko nói. "Đây là một hoạt động do nhà nước chỉ đạo, theo định mức với nguồn lực bền vững, không phải là một nhóm làm việc cuối tuần, và việc xóa một gói độc hại là không đủ nếu tài khoản nhà xuất bản liên quan vẫn còn hoạt động."
"Quỹ đạo của chiến dịch cho thấy một hoạt động bền vững, kiểu nhà máy coi hệ sinh thái npm là một kênh truy cập ban đầu có thể tái tạo."