Kaspersky cho biết các gói wheel độc hại được tải lên PyPI từ tháng 7/2025 đã phát tán ZiChatBot trên Windows và Linux.[3][4][6] Ba gói giả được nêu công khai là uuid32 utils, colorinal và termncolor; cách quy kết với OceanLotus cần đọc theo đúng mức độ thận trọng của từng nguồn.[1][2][3][6] ZiChatBot đáng chú ý vì...

Create a landscape editorial hero image for this Studio Global article: OceanLotus PyPI Attack: How ZiChatBot Abused Zulip APIs for C2. Article summary: Kaspersky linked a July 2025 malicious PyPI wheel package campaign—uuid32 utils, colorinal and termncolor—to OceanLotus; the packages targeted Windows and Linux and delivered a new malware family, ZiChatBot.. Topic tags: cybersecurity, malware, pypi, python, supply chain security. Reference image context from search candidates: Reference image 1: visual subject "Through our daily threat hunting, we noticed that, beginning in July 2025, a series of malicious wheel packages were uploaded to PyPI (the Python Package Index). We shared this inf" source context "OceanLotus suspected of distributing ZiChatBot malware via wheel packages in PyPI | Securelist" Reference image 2: visual subject "In a calculated move that signals the expansion of st
Điểm cần nắm trước: đây không phải là báo cáo về việc PyPI hay Zulip bị xâm nhập. Theo các nguồn công khai về phát hiện của Kaspersky, đây là một chiến dịch phát tán gói Python độc hại: các gói wheel được tải lên Python Package Index, hay PyPI, từ tháng 7/2025 và âm thầm đưa ZiChatBot — một họ mã độc trước đó chưa được biết đến — lên hệ thống Windows và Linux.
Điểm khiến chiến dịch này đáng chú ý không chỉ là việc lợi dụng PyPI. Báo cáo về phân tích của Kaspersky nói ZiChatBot dùng các REST API của Zulip làm hạ tầng command-and-control, hay C2, thay vì liên lạc với một máy chủ C2 riêng do kẻ tấn công vận hành.
Trong bài viết trên Securelist, Kaspersky cho biết khi săn tìm mối đe dọa hằng ngày, các nhà nghiên cứu đã thấy một loạt gói wheel độc hại được tải lên PyPI bắt đầu từ tháng 7/2025, chia sẻ thông tin này với cộng đồng an ninh mạng công khai và mã độc sau đó đã bị gỡ khỏi kho lưu trữ.
Các gói này không chỉ là vỏ bọc rỗng hay thư viện hỏng. Kaspersky nói chúng vẫn triển khai các tính năng được mô tả trên trang PyPI của mình, nhưng mục đích thật là âm thầm chuyển các tệp độc hại xuống máy nạn nhân. The Hacker News cũng tường thuật cùng phát hiện: các gói trông có vẻ hoạt động bình thường nhưng được thiết kế để lén phát tán ZiChatBot trên Windows và Linux.
Ba thư viện PyPI giả được nêu trong các nguồn công khai gồm:
uuid32-utilscolorinaltermncolorVề quy kết, cần đọc kỹ cách Kaspersky diễn đạt. Bài Securelist nói các mẫu được đưa vào Kaspersky Threat Attribution Engine, hay KTAE, để phân tích và các gói này có thể liên quan đến mã độc từng được thảo luận trong một báo cáo tình báo mối đe dọa về OceanLotus. Trang chỉ mục nghiên cứu mối đe dọa của Kaspersky thì trực tiếp hơn, nói công ty quy hoạt động PyPI/ZiChatBot này cho OceanLotus APT.
Một bản tóm tắt công khai mô tả mức quy kết là “độ tin cậy trung bình”.
Bức tranh công khai hiện có cho thấy đây là một chuỗi dropper đa nền tảng. Trang chỉ mục nghiên cứu mối đe dọa của Kaspersky nói các gói wheel độc hại trên PyPI nhắm vào cả Windows và Linux, đồng thời chứa dropper dùng để triển khai mã độc được đặt tên là ZiChatBot.
Một bản tóm tắt công khai mô tả các bước tiếp theo là trích xuất dropper dạng DLL hoặc .SO từ gói wheel, tạo cơ chế bám trụ qua Windows Registry hoặc crontab trên Linux, rồi triển khai ZiChatBot. Điều này khiến chiến dịch không chỉ đáng chú ý với máy chủ ứng dụng, mà còn với máy trạm của lập trình viên, môi trường ảo, hệ thống build/CI và image container từng cài các gói bị ảnh hưởng.
Chiến dịch cũng nhắc lại một bài học khó chịu trong an ninh chuỗi cung ứng phần mềm: một gói “chạy được” không đồng nghĩa với an toàn. Theo Kaspersky, các wheel độc hại vẫn cung cấp tính năng như quảng bá trên trang PyPI, đồng thời lén đưa tệp độc hại vào hệ thống.
Điểm khác thường của ZiChatBot là nó lạm dụng một nền tảng cộng tác hợp pháp làm lớp điều khiển. Theo tường thuật về phát hiện của Kaspersky, ZiChatBot không giao tiếp với máy chủ C2 chuyên dụng; thay vào đó, nó dùng một loạt REST API của Zulip, ứng dụng chat nhóm công khai, làm hạ tầng C2.
Tài liệu API của Zulip hỗ trợ các thao tác mà một mô hình C2 dựa trên chat có thể cần, gồm gửi tin nhắn, lấy tin nhắn, tải tệp lên, sửa hoặc xóa tin nhắn, tạo bộ lọc ngữ cảnh message narrow và làm việc với chủ đề trong kênh. Tài liệu bot của Zulip cũng mô tả các bot có thể chặn, xem và xử lý tin nhắn do người dùng gửi, rồi gửi tin nhắn mới để phản hồi.
Ở mức khái quát, điều này có nghĩa chỉ thị của người vận hành có thể được biểu diễn như tin nhắn chat hoặc tin nhắn theo chủ đề, còn mã độc có thể lấy các tin nhắn liên quan và gửi kết quả trở lại qua cùng dịch vụ. Các nguồn công khai được cung cấp không tiết lộ workspace Zulip cụ thể, thông tin xác thực bot, chuỗi endpoint hay tập lệnh mà ZiChatBot sử dụng. Vì vậy, cách mô tả an toàn nhất là: ZiChatBot đã lạm dụng chức năng REST API hợp pháp của Zulip để làm C2, thay vì dựa vào hạ tầng C2 do kẻ tấn công tự sở hữu.
Góc Zulip trong vụ này không đồng nghĩa với việc bản thân Zulip bị xâm nhập. Các nguồn được trích dẫn mô tả việc lạm dụng chức năng REST API và nhắn tin kiểu bot vốn hợp lệ, không phải một vụ xâm phạm dịch vụ chat.
Tương tự, điều này cũng không có nghĩa hạ tầng PyPI bị chiếm quyền. Báo cáo của Kaspersky nói các gói wheel độc hại đã được tải lên PyPI và mã độc sau đó bị gỡ khỏi kho.
Với đội phòng thủ, hàm ý thực tế là: lưu lượng đến một dịch vụ cộng tác hợp pháp vẫn có thể đáng ngờ nếu nó xuất phát từ máy, tiến trình, job CI hoặc tài khoản dịch vụ vốn không có lý do nghiệp vụ để nói chuyện với dịch vụ đó. Các danh sách chặn chỉ tập trung vào domain do kẻ tấn công sở hữu có thể bỏ sót kiểu lạm dụng này, nên điều tra cần xem cả ngữ cảnh tiến trình và nhu cầu sử dụng hợp lệ, không chỉ dựa vào uy tín của đích đến.
Trước hết, hãy rà soát danh mục gói. Tìm trên máy lập trình viên, build runner, môi trường ảo, dependency lockfile và image container xem có uuid32-utils, colorinal hoặc termncolor hay không.
Tiếp theo, xem lại mốc thời gian cài đặt từ tháng 7/2025 trở đi, là giai đoạn Kaspersky xác định các gói wheel độc hại bắt đầu được tải lên. Nếu các gói nêu trên xuất hiện trong log hoặc artifact, nên bảo toàn môi trường để điều tra thay vì chỉ xóa gói rồi bỏ qua.
Trên Windows, cần tìm các dấu hiệu bám trụ bất thường trong Registry; trên Linux, kiểm tra các mục crontab đáng ngờ. Điều này khớp với phần tóm tắt công khai về chuỗi lây nhiễm của chiến dịch.
Ngoài ra, hãy kiểm tra telemetry mạng và tiến trình để phát hiện hoạt động gọi API Zulip từ trình thông dịch Python, tiến trình cài gói, CI worker, máy chủ hoặc tài khoản dịch vụ vốn không sử dụng Zulip. Câu hỏi chính không phải “Zulip có hợp pháp không?”, mà là “máy và tiến trình cụ thể này có lý do hợp pháp để gọi API Zulip hay không?”.
Cuối cùng, đừng lấy việc thư viện hoạt động đúng như quảng cáo làm bằng chứng tin cậy. Trong chiến dịch này, các gói được báo cáo là vẫn cung cấp tính năng công khai, đồng thời đóng vai trò dropper cho tệp độc hại.
Chiến dịch PyPI được liên hệ với OceanLotus xoay quanh các gói wheel độc hại được tải lên từ tháng 7/2025, với các tên gói được nêu công khai gồm uuid32-utils, colorinal và termncolor. Những gói này phát tán ZiChatBot trên Windows và Linux; lựa chọn vận hành nổi bật của ZiChatBot là dùng REST API của Zulip làm command-and-control thay vì máy chủ C2 riêng do kẻ tấn công vận hành.
Studio Global AI
Use this topic as a starting point for a fresh source-backed answer, then compare citations before you share it.
Kaspersky cho biết các gói wheel độc hại được tải lên PyPI từ tháng 7/2025 đã phát tán ZiChatBot trên Windows và Linux.[3][4][6]
Kaspersky cho biết các gói wheel độc hại được tải lên PyPI từ tháng 7/2025 đã phát tán ZiChatBot trên Windows và Linux.[3][4][6] Ba gói giả được nêu công khai là uuid32 utils, colorinal và termncolor; cách quy kết với OceanLotus cần đọc theo đúng mức độ thận trọng của từng nguồn.[1][2][3][6]
ZiChatBot đáng chú ý vì dùng REST API của Zulip làm kênh command and control thay vì máy chủ C2 riêng do kẻ tấn công vận hành.[4]