Security Blog

Phần mềm độc hại mà bạn đã phê duyệt vì không thể nhìn thấy nó

#551

October 2, 2026 · By Claude

← All posts

GlassWorm giấu payload trong các ký tự Unicode vô hình, vượt qua bước review code bằng mắt thường, rồi đọc các thông tin xác thực nằm rải rác trong workspace của bạn. Một con worm vô hình không phá được mã hóa. Nó chỉ cần một tệp.

Người review đã đọc pull request. Mọi dòng đều hiển thị sạch: một bản nâng phiên bản, một đoạn refactor nhỏ, một chỉnh sửa tài liệu. Không có gì đáng ngờ, bởi phần sai không bao giờ được vẽ lên màn hình. Nó được viết bằng các ký tự Unicode không mang hình dạng nào. Vô hình với mắt bạn, vô hình với khung diff, vô hình với bước duyệt tay mà bảo mật chuỗi cung ứng vẫn đang dựa vào.

Đó là GlassWorm. Từ tháng 10, các nhà nghiên cứu tại Koi Security đã theo dõi con worm tự lây lan đầu tiên lây lan qua các extension VS Code, và nó vẫn chưa dừng lại [1]. Socket đã đánh dấu hơn bảy mươi extension độc hại mới trên marketplace Open VSX kể từ cuối tháng 1 [2]. Phần loader ẩn bên trong Unicode vô hình, nên đoạn code lướt qua bước review như thể chỉ là việc dọn dẹp thường lệ.

Phần nó làm sau khi cài đặt mới là điều bình thường, và đó chính là vấn đề. Nó đọc những gì nằm sẵn xung quanh. npm token. Thông tin xác thực GitHub. Git config. Biến môi trường và CI secret để hở trong workspace của bạn. Rồi nó dùng các thông tin đánh cắp được để đăng thêm các gói bị đầu độc dưới tên bạn — đó là cách một con worm trở thành worm. Kênh điều khiển chạy qua các giao dịch Solana, nên không có server nào để thu giữ [3].

Đây là cách nhìn lại. Không ai hack @code. Open VSX không bị xâm phạm theo nghĩa cổ điển. Mô hình extension đã làm đúng những gì nó được thiết kế để làm: bạn cài một tiện ích, và nó chạy với quyền của bạn, bên trong dự án đang mở của bạn, ngay cạnh các bí mật của bạn. Mô hình đó được xây cho một thế giới mà tác giả extension là bên duy nhất bạn phải tin. GlassWorm biến tài khoản của một tác giả đáng tin thành chiếc xe tải giao hàng và giấu hàng trong những ký tự bạn không nhìn thấy. Công cụ không hỏng. Mô hình đe dọa đã dịch chuyển dưới chân tất cả mọi người cùng lúc.

Điều đó dẫn đến một câu hỏi khó chịu về chính máy của bạn. Khi một extension bạn tin mở dự án của bạn, có gì ở đó để nó lấy?

Với hầu hết lập trình viên, câu trả lời là: tất cả. Một npm token sống lâu trong một dotfile. Một personal access token mà hướng dẫn cài đặt hữu ích nào đó bảo bạn dán vào một lần rồi quên. Bí mật trong một tệp env mà mọi tiến trình trên máy đều đọc được. Các thông tin xác thực này nằm yên ở trạng thái nghỉ, ngay tại nơi code chạy, chờ bất kỳ thứ gì có quyền truy cập cục bộ. Một con worm vô hình trong trình soạn thảo của bạn không cần phá mã hóa. Nó chỉ cần một tệp.

Clavitor xuất phát từ giả định ngược lại. Một thông tin xác thực được cấp phát tại thời điểm cần dùng, giới hạn phạm vi cho đúng mục đích duy nhất của nó, và nó hết hạn. Nó không bao giờ được ghi vào môi trường dev của bạn để bị phát hiện về sau. Vì thế khi code độc hại quét workspace tìm các khóa ở trạng thái nghỉ, sẽ không có npm token thường trực, không có GitHub PAT vĩnh viễn, không có gì sống lâu hơn giây nó được dùng. Con worm mở ngăn kéo ra, và ngăn kéo trống rỗng.

Góc thẳng thắn: một thông tin xác thực đang được dùng vẫn còn hiệu lực trong lúc dùng. Nếu phiên của bạn đang chạy và code độc hại dùng chung phiên đó, nó có thể bám theo thứ đang sống ngay lúc đó, trong cửa sổ ngắn và phạm vi hẹp của thông tin xác thực đó. Việc cấp phát tạm thời, giới hạn phạm vi sẽ thu nhỏ bán kính ảnh hưởng và thời gian. Nó không làm cho một máy bạn đã giao cho kẻ tấn công trở nên an toàn. Không gì làm được điều đó. Nhưng có một khoảng cách lớn giữa kẻ tấn công bắt được một thông tin xác thực có phạm vi hẹp đang dùng dở và kẻ tấn công sao chép một tệp khóa vĩnh viễn và sở hữu bạn cả năm.

Chúng tôi đã viết ra danh sách ngắn những điều một hệ thống thông tin xác thực không bao giờ nên làm. Gần đầu danh sách: đừng để bí mật nằm ngay tại nơi code chạy. Đọc tại đây

Clavitor (@clavitorai) là kho lưu trữ thông tin xác thực được xây dựng cho các AI agent, và để chống lại chính họ. clavitor.ai

Nguồn

[1] Koi Security — "GlassWorm: The First Self-Propagating Worm Using Invisible Code Hits the Open VSX Marketplace" (công ty nghiên cứu; không có tài khoản X được xác minh)

[2] Socket, qua @TheHackersNews — "GlassWorm Supply-Chain Attack Abuses 72 Open VSX Extensions to Target Developers" (@SocketSecurity)

[3] @SecurityWeek — "Supply Chain Attack Targets VS Code Extensions With 'GlassWorm' Malware"