Tấn công Chuỗi Cung ứng ETHcode: Mã độc ẩn mình trong tiện ích VS Code đe dọa nhà phát triển Crypto

Một cuộc tấn công chuỗi cung ứng tinh vi đã nhắm mục tiêu vào các nhà phát triển tiền điện tử thông qua việc xâm nhập tiện ích mở rộng ETHcode của Visual Studio Code, một công cụ hợp pháp với gần 6.000 lượt cài đặt. Cuộc tấn công được thực hiện thông qua một pull request độc hại trên GitHub, minh chứng cách các tác nhân đe dọa có thể vũ khí hóa các công cụ phát triển đáng tin cậy bằng những thay đổi mã tối thiểu, gây ra những lo ngại nghiêm trọng về bảo mật phần mềm mã nguồn mở trong hệ sinh thái blockchain.

Bối cảnh cuộc tấn công và mục tiêu

ETHcode, được phát triển bởi tổ chức 7finney, đóng vai trò là một công cụ phát triển quan trọng cho các nhà phát triển hợp đồng thông minh Ethereum. Tiện ích này cung cấp các khả năng kiểm thử, gỡ lỗi và triển khai trên các blockchain dựa trên EVM. Tình trạng hợp pháp và lượng người dùng tích cực của tiện ích này đã biến nó thành một mục tiêu hấp dẫn đối với tội phạm mạng tìm cách thâm nhập cộng đồng phát triển tiền điện tử.

Cuộc xâm nhập bắt đầu vào ngày 17 tháng 6 năm 2024, khi một tài khoản GitHub mới được tạo có tên Airez299 đã gửi một pull request tới kho lưu trữ ETHcode với thông điệp có vẻ vô hại: “Modernize codebase with viem integration and testing framework.” Thời điểm này có tính chiến lược, vì tiện ích đã không hoạt động trong hơn sáu tháng kể từ lần cập nhật cuối cùng vào tháng 9 năm 2023, khiến đóng góp bảo trì này có vẻ hợp pháp và có giá trị.

Chi tiết kỹ thuật của quá trình khai thác

Pull request độc hại chứa 43 commit với khoảng 4.000 dòng mã thay đổi, tạo ra một gánh nặng đánh giá đáng kể giúp che giấu các yếu tố độc hại. Cả người đánh giá từ tổ chức 7finney và công cụ đánh giá AI GitHub Copilot đã kiểm tra mã, yêu cầu những thay đổi nhỏ nhưng không phát hiện được các mối đe dọa được nhúng. Quá trình đánh giá này đã làm nổi bật những thách thức trong việc xác định các cuộc tấn công chuỗi cung ứng tinh vi trong các đóng góp mã có vẻ hợp pháp.

Toàn bộ quá trình xâm nhập phụ thuộc vào chỉ hai dòng mã được đặt một cách chiến lược. Dòng đầu tiên giới thiệu một dependency mới có tên “keythereum-utils”, được đặt tên cẩn thận để bắt chước gói “keythereum” hiện có với hậu tố “-utils” được thêm vào. Quy ước đặt tên này được thiết kế để xuất hiện như một thư viện hỗ trợ hợp pháp, tránh nghi ngờ trong quá trình đánh giá mã.

Dòng mã độc thứ hai đã gọi hàm Node.js "require" để tải và thực thi dependency mới được giới thiệu. Lệnh gọi đơn giản này đã kích hoạt payload độc hại, chứng minh cách những thay đổi mã tối thiểu có thể gây ra những hậu quả tàn khốc trong chuỗi cung ứng phần mềm.

Khi các nhà nghiên cứu phân tích gói keythereum-utils, họ đã phát hiện ra mã JavaScript bị che giấu mạnh mẽ. Sau khi deobfuscate, mã này đã tiết lộ mục đích thực sự của nó: tạo ra một tiến trình PowerShell ẩn để tải xuống và thực thi một tập lệnh batch từ một dịch vụ lưu trữ tệp công cộng. Mặc dù chức năng đầy đủ của payload giai đoạn hai vẫn đang được điều tra, các nhà nghiên cứu nghi ngờ nó nhắm mục tiêu vào tài sản tiền điện tử hoặc làm tổn hại các hợp đồng thông minh Ethereum đang được phát triển.

Cơ chế phát tán và ảnh hưởng

Thành công của cuộc tấn công được khuếch đại bởi tính năng cập nhật tiện ích mở rộng tự động của Visual Studio Code, được bật mặc định cho hầu hết người dùng. Cơ chế này có khả năng phân phối mã độc đến hàng nghìn hệ thống của nhà phát triển mà người dùng không hề hay biết hoặc can thiệp, mở rộng đáng kể phạm vi và tác động của cuộc tấn công.

Biện pháp ứng phó và khắc phục

Theo báo cáo, Microsoft’s Visual Studio Marketplace đã gỡ bỏ tiện ích mở rộng bị xâm nhập vào ngày 26 tháng 6 năm 2024. Các nhà phát triển gốc tại 7finney đã phát hành một phiên bản sạch (0.5.1) vào ngày 1 tháng 7 năm 2024. Tuy nhiên, sự cố này đã phơi bày những lỗ hổng nghiêm trọng trong hệ sinh thái phát triển mã nguồn mở, đặc biệt ảnh hưởng đến các nhà phát triển tiền điện tử, những người đại diện cho các mục tiêu có giá trị cao đối với tội phạm mạng.

Chỉ số thỏa hiệp (IOCs)

Các chỉ số thỏa hiệp liên quan đến cuộc tấn công này bao gồm:

  • Tài khoản GitHub độc hại: Airez299
  • Gói dependency độc hại: keythereum-utils

Bài học và khuyến nghị bảo mật

Cuộc tấn công này nhấn mạnh tầm quan trọng của việc quản lý dependency chặt chẽ, xác minh người đóng góp và quét bảo mật tự động trong phát triển phần mềm hiện đại. ReversingLabs khuyến nghị thực hiện các quy trình đánh giá nghiêm ngặt hơn cho các dependency mới và sử dụng các công cụ bảo mật như Spectra Assure để phát hiện hành vi bất thường trong các gói phần mềm.

Các khuyến nghị cụ thể bao gồm:

  • Quy trình đánh giá chặt chẽ: Áp dụng các quy trình đánh giá mã và dependency nghiêm ngặt hơn, đặc biệt đối với các đóng góp từ tài khoản mới hoặc không quen thuộc.
  • Quản lý dependency nghiêm ngặt: Thực hiện các chính sách rõ ràng về việc thêm và cập nhật dependency, ưu tiên các gói đã được kiểm chứng và có uy tín.
  • Xác minh người đóng góp: Thiết lập các quy trình để xác minh danh tính và uy tín của những người đóng góp vào các dự án mã nguồn mở quan trọng.
  • Quét bảo mật tự động: Triển khai và sử dụng các công cụ quét bảo mật tự động (SAST, DAST, SCA) để phát hiện các lỗ hổng và hành vi độc hại trong mã nguồn và các dependency.
  • Nhận thức về tấn công chuỗi cung ứng: Nâng cao nhận thức về các kỹ thuật tấn công chuỗi cung ứng trong cộng đồng phát triển, đặc biệt là cách kẻ tấn công có thể che giấu mã độc trong các đóng góp có vẻ hợp pháp.

Sự cố này đóng vai trò là một lời nhắc nhở rằng ngay cả các công cụ và quy trình phát triển đáng tin cậy cũng có thể bị lợi dụng, đòi hỏi một cách tiếp cận đa tầng và liên tục đối với bảo mật chuỗi cung ứng phần mềm.