Một sân chơi mới: Các chiến dịch độc hại lan rộng từ VSCode sang npm

Để tránh các gói bị xâm nhập được đưa vào như một phần phụ thuộc trong các dự án lớn, các đội ngũ bảo mật cần cảnh giác và theo dõi sát sao các đoạn mã độc hại.

fd106257-f6c7-4e00-98c2-f4f83405ab36

Các nhà nghiên cứu tại ReversingLabs đã theo dõi nhiều kho mã công khai trong vài năm qua. Gần đây, nhóm nghiên cứu đã mở rộng hoạt động săn lùng mối đe dọa sang nền tảng VSCode Marketplace và bắt đầu ghi nhận sự gia tăng đáng kể của các hành vi độc hại tại đây.

Trước đây, nhóm nghiên cứu của RL đã từng chứng kiến mức độ dễ dàng và nhanh chóng mà các cuộc tấn công chuỗi cung ứng có thể lan rộng từ cộng đồng npm sang VSCode Marketplace. Bằng cách sử dụng các gói npm, những kẻ tấn công có thể chèn mã độc vào môi trường phát triển VSCode IDE — một yếu tố thường bị bỏ qua trong đánh giá bảo mật.

Đáng chú ý, vào tháng 11 năm 2024, hướng lan truyền này đã đảo chiều. Một tháng sau đó, chiến dịch khởi phát từ nền tảng VSCode đã xuất hiện trong cộng đồng npm với gói độc hại có tên etherscancontracthandler, mang nhiều điểm tương đồng với các tiện ích mở rộng VSCode độc hại đã được ghi nhận trước đó.

So sánh giữa gói npm và tiện ích mở rộng VSCode

Các tiện ích mở rộng VSCode — vốn được phát triển bằng Node.js — thực chất là các gói npm được đóng gói thêm lớp kết nối với API của VSCode. Khi phát triển tiện ích, lập trình viên có thể sử dụng bất kỳ gói npm nào, điều này tạo ra kẽ hở cho mã độc được chèn thông qua các gói npm trông như hợp lệ. Như bài viết trên blog của nhóm RL từng đề cập, các tiện ích mở rộng VSCode thường không bị xem là nguồn rủi ro bảo mật vì “chúng chỉ là plugin cho môi trường phát triển, không can thiệp trực tiếp vào mã nguồn dự án”.

Tuy nhiên, chiến dịch được phát hiện trên nền tảng npm đã cho thấy quyết tâm của những kẻ tấn công trong việc làm ô nhiễm chu trình phát triển phần mềm. Mặc dù các tiện ích mở rộng độc hại đã nhanh chóng bị gỡ khỏi VSCode Marketplace, tác nhân độc hại vẫn chuyển hướng sang npm để tiếp tục phát tán các gói chứa mã độc. Do npm được sử dụng không chỉ trong quá trình phát triển ứng dụng Node.js mà còn trong các tiện ích VSCode, nên diện tấn công mở rộng đáng kể. Điều này khiến cả môi trường phát triển nội bộ cũng có thể bị xâm phạm nếu các gói npm độc hại được cài đặt gián tiếp.

Làn sóng tiện ích độc hại mới tấn công VSCode

Trong suốt tháng 10 năm 2024, nhóm nghiên cứu của RL đã phát hiện làn sóng tiện ích VSCode độc hại mới, tất cả đều chứa chức năng tải mã độc về máy nạn nhân — và đều thuộc cùng một chiến dịch. Cộng đồng đã được cảnh báo về chiến dịch này từ đầu tháng 10 và nhóm RL đã liên tục theo dõi diễn biến kể từ đó.

Tính đến hiện tại, tổng số gói được xác nhận thuộc chiến dịch này đã lên tới 18.

Ban đầu, chiến dịch nhắm vào cộng đồng tiền mã hóa, nhưng đến cuối tháng 10, các tiện ích độc hại chủ yếu giả mạo ứng dụng Zoom. Mỗi tiện ích mới được phát hành đều tinh vi hơn tiện ích trước, cho thấy kẻ tấn công đã đầu tư kỹ lưỡng hơn để làm cho các tiện ích trông hợp lệ. Hai tiện ích đáng chú ý là EVM.Blockchain-Toolkit và VoiceMod.VoiceMod có số lượt cài đặt bị thổi phồng không tương xứng với số lượt tải thực tế. Ngoài ra, chúng còn có nhiều đánh giá giả mạo, rõ ràng là do chính tác giả tạo ra nhằm đánh lừa người dùng.

Tất cả các tiện ích mở rộng đều rất giống nhau và có chức năng giống nhau. Tệp độc hại được tìm thấy trong chúng đã được mã hóa bằng Javascript Obfuscator, điều này là lý do tại sao những tiện ích này gây nghi ngờ và được điều tra.

Về chức năng, mã của các tiện ích mở rộng này rất đơn giản. Tất cả các tiện ích mở rộng đều tải về tệp payload giai đoạn hai từ nhiều miền khác nhau, trong đó một số miền được lặp lại nhiều lần hơn so với những miền khác.

Hầu hết các tiện ích mở rộng này được tiếp thị như một “Hỗ trợ ngôn ngữ Solidity cho Visual Studio Code,” và một số miền, chẳng hạn như hxxps[:]//microsoft-visualstudiocode[.]com hoặc thậm chí hxxps[:]//captchacdn[.]com, phản ánh điều này. Các tác nhân độc hại có thể đã tạo ra một số miền này để cố gắng lừa người dùng tin rằng chúng là các điểm tải phần mềm hợp pháp. Một số miền cũng thú vị vì TLD (miền cấp cao nhất) của chúng – .lat và .ru, là TLD dành cho cộng đồng và người dùng Latinh Mỹ và Nga tương ứng.

Các gói độc hại: Phần tiếp theo

Gói gốc xuất hiện trên npm tương tự như những gì nhóm nghiên cứu RL đã thấy trên VSCode Marketplace. Nó cũng nhắm mục tiêu vào cộng đồng tiền điện tử, với những điểm tương đồng rõ rệt, đến mức có thể kết luận rằng chúng được phát hành bởi cùng một tác nhân độc hại hoặc một nhóm các tác nhân độc hại.

Hiện tại, có năm phiên bản của gói etherscancontracthandler đã được công bố trên npm, và nó là gói duy nhất liên quan đến chiến dịch này. Chỉ ba phiên bản trong số năm phiên bản chứa payload độc hại đã được mã hóa bằng Javascript. Tất cả các phiên bản đều là tải xuống, tải về từ các điểm tải về giai đoạn hai giống như các tiện ích mở rộng VSCode đã tải về. Các miền là giống nhau, nhưng chuỗi tải về giai đoạn hai là giống nhau trong cả tiện ích mở rộng VSCode và gói npm.

Một đặc điểm tương tự nữa là cấu trúc mã giữa các payload độc hại được mã hóa. Sự khác biệt duy nhất là một cái được làm để là một tiện ích mở rộng VSCode, và cái còn lại được làm để là một gói npm.

Khi chúng tôi phát hiện gói npm, chúng tôi đã báo cáo cho các quản trị viên npm, và họ đã kịp thời gỡ bỏ nó. Gói này đã được tải xuống chỉ khoảng 350 lần, vì vậy may mắn là phạm vi của gói này không lớn lắm.

Đối phó với các lỗ hổng trong IDE

Khả năng cài đặt các plugin và mở rộng chức năng của IDE khiến chúng trở thành mục tiêu rất hấp dẫn cho các tác nhân độc hại. Các tiện ích mở rộng của VSCode thường bị bỏ qua như một rủi ro bảo mật khi cài đặt trong IDE, nhưng việc xâm nhập vào một IDE có thể trở thành điểm khởi đầu cho việc xâm nhập vào chu trình phát triển trong doanh nghiệp.

Như hướng dẫn của nhóm làm việc Enduring Security Framework trong tài liệu “Securing the Software Supply Chain” đã chỉ rõ:

“Để đảm bảo tính toàn vẹn của quá trình phát triển, tất cả các IDE và các plugin liên quan được sử dụng trong môi trường phát triển phải được phê duyệt trước, xác nhận và quét để tìm các lỗ hổng trước khi được tích hợp vào bất kỳ máy phát triển nào.”

Điều quan trọng là thực hiện các đánh giá bảo mật thường xuyên. Các phiên bản mới của các phụ thuộc hoặc sản phẩm hiện có có thể giới thiệu các lỗ hổng mới, rủi ro và các vấn đề khác mà có thể được phát hiện qua việc kiểm tra thường xuyên. Các đánh giá bảo mật cũng có thể hữu ích trong việc phát hiện các thư viện bị hijack hoặc nhiễm độc trước khi chúng được đưa vào sản xuất, hoặc đảm bảo rằng các pipeline xây dựng không bị xâm nhập.

Kết luận

Vào tháng 3 năm 2023, các nhà nghiên cứu của RL đã thảo luận về sự lây lan của các phụ thuộc độc hại được xuất bản trên npm qua một module npm bị xâm phạm vào hệ sinh thái VSCode. Họ đã giải thích cách thức dễ dàng mà việc này có thể xảy ra và làm thế nào mà một IDE có thể bị xâm nhập. Lần này, các nhà nghiên cứu RL đã xác định được cách các kho mã đã trao đổi vị trí cho nhau. Chiến dịch độc hại từ VSCode đã mở rộng sang npm, làm tăng diện tấn công, vì các gói npm có thể được tích hợp vào các tiện ích mở rộng VSCode, các gói npm khác và các ứng dụng Node.js.

Khi sử dụng các gói từ các kho công cộng, các nhà phát triển nên cảnh giác với khả năng mã độc có thể được tích hợp vào để tránh việc một gói độc hại bị đưa vào làm phụ thuộc trong một dự án lớn hơn. Cộng đồng RL Spectra Assure giúp quy trình này trở nên dễ dàng hơn rất nhiều.

Các tổ chức phát triển cũng nên xem xét kỹ lưỡng các tính năng và hành vi của mã nguồn mở, mã bên thứ ba và mã thương mại mà họ đang dựa vào, để theo dõi các phụ thuộc và phát hiện payload độc hại tiềm ẩn trong chúng. Nền tảng Spectra Assure của RL cung cấp khả năng hiển thị sâu sắc mà các đội ngũ cần để phát hiện malware.

Các chỉ số của sự xâm nhập (IOC)

Các chỉ số của sự xâm nhập (IoC) là những bằng chứng hoặc chứng cứ pháp lý liên quan đến một sự vi phạm bảo mật hoặc hoạt động trái phép trên mạng hoặc hệ thống máy tính. IoC đóng một vai trò quan trọng trong các cuộc điều tra an ninh mạng và các nỗ lực ứng phó sự cố, giúp các nhà phân tích và chuyên gia bảo mật nhận diện và phát hiện các sự cố bảo mật tiềm tàng.

Sau đây là các IoC đã được thu thập trong cuộc điều tra của ReversingLabs về chiến dịch chuỗi cung ứng phần mềm độc hại này.

npm packages

package_name version SHA1
etherscancontracthandler 1.0.0 e950ead90af29948e1b0b19b4bdf65821648aeeb
etherscancontracthandler 2.0.0 5312be1dbf1b2dd2ba15d05b4e607c4bde533b4
etherscancontracthandler 3.0.0 5e524e3f5b59b2ddd9072d63d60cc324d7bbfee1
etherscancontracthandler 3.0.1 b1f8c2cce43986b9a4bd04c19cb356cc93de930
etherscancontracthandler 4.0.0 44c5170aba403943fa054432852f3c1a00178311

VSCode Extensions

unique_identifier version SHA1
EVM.Blockchain-Toolkit 1.0.0 5390a60adfd8dbf5aef4e132e8565659518ef995
VoiceMod.VoiceMod 0.2.0 b9544c0bd0a1da21f2048673c214795312c636c
ZoomVideoCommunications.Zoom 0.2.0 f2c8e3fbaa7c398f8678ab5cfb26cb2d9124641e
ZoomINC.Zoom-Workplace 0.2.0 6da24384853e68cc80107f8ba87185b1cd45f93d
Ethereum.SoliditySupport 1.0.0 0d5710de0832f2cc3667536fdc3d808642e6593a27
ZoomWorkspace.Zoom 0.2.0 c7f67ff39917a8f22da34fdeb4a0c1915db2ad10
ZoomWorkspace.Zoom 0.9.0 0289c2bc1c9e10bc053ef25d1517923e2a87f714
ZoomWorkspace.Zoom 0.1.0 11d432d5d6d8792900e31371db4380aa9ac9eb984
ethereumorg.Solidity-Language-for-Ethereum 1.0.0 025df45211ff310e328049f4f579c3429875175e
VitalikButerin.Solidity-Ethereum 1.0.0 53c4207325d46d0f8c5aee1f1f6cec79d0247f031
VitalikButerin.Solidity-Ethereum 1.0.1 cdc2389f6f240773fc196f26fbc73d7607ef71fd6
SolidityFoundation.Solidity-Ethereum 1.0.0 6f2d90229f8d3a2a0af51fc7cd208bcc02342b3d3e
EthereumFoundation.Solidity-Language-for-Ethereum 1.0.1 53f7be3adec90f2645921d3d1d9fff8892d8c2fdd
EthereumFoundation.Solidity-Language-for-Ethereum 1.0.0 1f8ead255e26a76a8f5f4a4be11ac0e517378e5698
SOLIDITY.Solidity-Language 1.0.0 8a08b4c52b66349ef2e9ed2ad49f6bb5bcf5b039e
GavinWood.SolidityLang 1.0.0 5ae998a23da7aacd4faf492e4db42d9b5e89bbddd
GavinWood.SolidityLang 1.0.1 db0341d19ff907d2d254531139bdb52ff4cf6bbf
EthereumFoundation.Solidity-for-Ethereum-Language 1.0.0 e114543341a47477f325098008a099ec688831e4
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận