Trojan ChocoPoC mới nhắm mục tiêu vào các nhà nghiên cứu lỗ hổng qua các kho lưu trữ PoC giả mạo

Các kẻ tấn công đang ẩn giấu một trojan đánh cắp dữ liệu bên trong mã khai thác giả mạo nhắm vào những người chuyên săn lỗi bảo mật. Mã độc mang tên ChocoPoC này lây lan qua các kho lưu trữ Python proof-of-concept (PoC) trên GitHub vốn được quảng cáo là khai thác các mã lỗi CVE mới nhất. Khi chạy chúng, mã độc sẽ âm thầm lấy cắp mật khẩu, cookie trình duyệt và các tệp tin, sau đó cung cấp cho kẻ tấn công quyền truy cập shell trên máy tính của bạn.
Mã độc ChocoPoC giả mạo mã khai thác

Kẻ tấn công đang ẩn giấu một trojan đánh cắp dữ liệu bên trong mã khai thác giả mạo nhắm vào những người chuyên săn lỗi bảo mật. Mã độc này mang tên ChocoPoC, lây lan qua các kho lưu trữ Python proof-of-concept (PoC) trên GitHub vốn được quảng cáo là khai thác các lỗ hổng CVE mới nhất.

Nếu chạy một trong những mã này, nó sẽ âm thầm lấy cắp mật khẩu đã lưu, cookie trình duyệt, các tệp tin của bạn và sau đó cung cấp cho kẻ tấn công quyền truy cập shell trên máy tính. YesWeHack và Sekoia đã công bố các phát hiện chung của họ vào ngày 1 tháng 7 và cảnh báo rằng, tính đến thời điểm báo cáo, mã độc và các máy chủ của nó vẫn đang hoạt động, vì vậy tuyệt đối không chạy bất kỳ mã PoC nào trong số này.

Điểm mấu chốt nằm ở vị trí đặt mã. Mã PoC hiển thị trông rất sạch sẽ. Mã độc được ẩn bên trong một gói Python mà PoC kéo về như một phần phụ thuộc (dependency), nhờ đó nó có thể vượt qua các bước kiểm tra mã nhanh chóng.

Bẫy được giăng ra như thế nào

Mồi nhử ở đây chính là áp lực thời gian. Khi một lỗ hổng lớn xuất hiện, các nhà nghiên cứu thường chạy đua để thử nghiệm nó và nhanh chóng lấy các mã PoC từ cộng đồng. Chiến dịch này đã biến thói quen đó thành một con đường lây nhiễm.

Chuỗi tấn công diễn ra như sau:

  1. Bạn clone kho lưu trữ và chạy pip install để tải các yêu cầu của PoC.
  2. Lệnh này sẽ kéo về một gói có tên là frint, và gói này tiếp tục kéo theo một gói thứ hai mang tên skytext.
  3. Gói skytext chứa một tệp biên dịch nhỏ (gradient.so trên Linux, gradient.pyd trên Windows), tệp này sẽ chạy ngay khi bạn khởi chạy PoC.
  4. Nó chỉ kích hoạt khi nhận thấy mã PoC thực sự được tải bằng cách kiểm tra tệp có tên EXPLOIT_POC.py hoặc tương tự, sau đó giải nén payload và tải xuống trojan.

Việc kiểm tra bước cuối cùng này là lý do tại sao một môi trường sandbox thông thường không phát hiện được gì. Nếu chỉ kích hoạt gói phần mềm riêng lẻ mà không có toàn bộ mã PoC xung quanh, mã độc sẽ tiếp tục ở trạng thái ngủ.

Những gì nó đánh cắp và thực hiện

Khi đã hoạt động, ChocoPoC là một trojan truy cập từ xa (RAT) đầy đủ tính năng. Nó đánh cắp mật khẩu đã lưu, cookie, thông tin tự động điền (autofill) và lịch sử từ Chrome, Brave, Edge và Firefox. Nó lấy các tệp văn bản, ghi chú, cơ sở dữ liệu cục bộ, cùng với lịch sử shell, cài đặt mạng và danh sách các tiến trình đang chạy.

Hoạt động đánh cắp dữ liệu của ChocoPoC

Kẻ tấn công cũng có thể thực hiện bất kỳ lệnh shell nào, chạy mã Python tùy ý, lấy toàn bộ thư mục và làm chậm hoạt động của mã độc để giữ bí mật. Một vài tên lệnh được viết bằng tiếng Tây Ban Nha, và mã nguồn có các lỗi nhỏ, khiến các nhà nghiên cứu tin rằng đây là mã được viết tay thay vì do AI tạo ra.

Để kiểm soát, mã độc ẩn mình ngay trước mắt. Nó đọc các lệnh từ một tập dữ liệu trên Mapbox, một dịch vụ bản đồ thông thường, sử dụng nó như một điểm nhận lệnh bí mật (dead drop). Nó phân giải địa chỉ đó qua DNS-over-HTTPS và sử dụng kỹ thuật domain-fronting, khiến lưu lượng truy cập trông giống như các lệnh gọi Mapbox API bình thường. Các dữ liệu tải lên lớn hơn sẽ được gửi đến một máy chủ riêng biệt tại địa chỉ 91.132.163.78.

Phạm vi phát tán

YesWeHack và Sekoia đã tìm thấy ít nhất bảy kho lưu trữ PoC giả mạo, mỗi kho gắn liền với một lỗ hổng bảo mật nghiêm trọng:

  • FortiWeb path traversal (CVE-2025-64446)
  • React2Shell (CVE-2025-55182)
  • MongoBleed (CVE-2025-14847)
  • PAN-OS auth bypass (CVE-2026-0257)
  • Ivanti Sentry command injection (CVE-2026-10520)
  • Check Point VPN auth bypass (CVE-2026-50751)
  • Joomla SP Page Builder RCE (CVE-2026-48908)

Chỉ riêng gói skytext đã được tải xuống khoảng 2.400 lần, chủ yếu trên Linux. Số lượt tải xuống không chứng minh được có bao nhiêu người đã bị nhiễm, nhưng chúng đã tăng vọt ngay sau khi các mã lỗi CVE lớn được công bố, phù hợp với chiến thuật mồi nhử của chúng.

Chuỗi cung ứng mã độc

Một đợt triển khai sớm hơn của cùng chiến dịch này, bắt đầu từ cuối năm 2025, đã sử dụng hai gói khác là slogseclogcrypt.cryptography với mã nguồn gần như giống hệt. Sekoia đánh giá với độ tin cậy cao rằng cùng một tác nhân đứng sau cả hai đợt, dựa trên các dấu hiệu kiểm soát được tái sử dụng.

Báo cáo cho biết kẻ vận hành đã thay đổi xoay vòng giữa các tài khoản GitHub, PyPI và Mapbox, trong đó có một số tài khoản được xây dựng từ thông tin đăng nhập bị rò rỉ hoặc bị đánh cắp. Hiện chưa có nhóm tin tặc cụ thể nào được nêu tên.

Các nhà nghiên cứu bảo mật là một mục tiêu béo bở. Họ thường chạy các mã chưa được kiểm chứng, đôi khi với đặc quyền cao, và máy tính của họ chứa các thông tin xác thực của khách hàng, các báo cáo riêng tư và chi tiết về các dự án đang thực hiện. Việc xâm nhập một máy tính như vậy có thể dẫn đến hậu quả xa hơn nhiều so với một chiếc laptop đơn lẻ.

Chiến dịch MUT-1244 đã cho thấy hiệu quả khi sử dụng các kho lưu trữ PoC giả để đánh cắp khóa SSH và thông tin xác thực đám mây từ các Red Team và các nhà nghiên cứu.

Đây không phải là một ý tưởng mới, mà chỉ là một lớp vỏ bọc mới. Nhóm Lazarus của Triều Tiên đã nhắm vào các nhà nghiên cứu trong nhiều năm, giả làm những người săn lỗi bảo mật đồng nghiệp và gửi các dự án Visual Studio độc hại vào năm 2021, sau đó sử dụng một lỗ hổng Zero-Day chống lại họ vào năm 2023, với các đợt tấn công mới kể từ đó.

Về phía tội phạm mạng phổ thông, Trend Micro đã tìm thấy một mã PoC giả cho lỗ hổng Windows LDAP (CVE-2024-49113) đánh cắp dữ liệu của nhà nghiên cứu vào đầu năm 2025, và một chiến dịch riêng biệt đã đẩy các mã PoC CVE giả mạo mang theo trojan mang tên WebRAT vào cuối năm 2025, chủ yếu nhắm vào sinh viên và những người mới làm kiểm thử (tester).

Những gì ChocoPoC bổ sung chính là nơi ẩn nấp. Mã độc nằm trong một phần phụ thuộc (dependency), vì vậy mã PoC mà bạn thực sự đọc vẫn sạch sẽ. Như các nhà nghiên cứu đã nói, bản thân mã độc không phải là tin mới, nhưng "những gì đang thay đổi chính là cơ chế phân phối".

Cần làm gì ngay bây giờ

  • Coi bất kỳ mã PoC nào là độc hại cho đến khi chứng minh được ngược lại, và tránh xa mã nguồn từ các tài khoản mới hoặc không xác định.
  • Kiểm tra toàn bộ chuỗi phụ thuộc (dependency chain), không chỉ riêng tệp PoC. Hãy cảnh giác với các gói phần mềm mới xuất bản, những người duy trì không quen thuộc và các tài khoản có lịch sử bị ẩn.
  • Chỉ thử nghiệm trong máy ảo (VM) dùng một lần, nhưng hãy nhớ rằng chỉ cách ly thôi có thể không kích hoạt được mã độc này. Giải pháp thực sự là không cài đặt các gói phần mềm đó.
  • Kiểm tra hệ thống của bạn để tìm các gói frint, skytext, slogseclogcrypt.cryptography, cùng với các mã băm tệp trong báo cáo. Nếu bạn đã chạy bất kỳ gói nào trong số đó, hãy thay đổi thông tin xác thực và cài đặt lại hệ thống.

Rủi ro lớn hơn nằm ở phía hạ nguồn (downstream). Những mồi nhử này nhắm vào các nhà nghiên cứu cung cấp các phát hiện và PoC cho các framework như Nuclei và MDUT. Sekoia cảnh báo về nguy cơ của một cú tấn công chuỗi cung ứng kép: đầu độc một nhà nghiên cứu, và mã độc có thể đi vào một framework mà hàng ngàn người khác tin dùng.