Gói npm 27.000 lượt tải lén đánh cắp token OpenAI

Một gói npm độc hại có tên codexui-android đã lặng lẽ đánh cắp token xác thực OpenAI từ các nhà phát triển cài đặt nó trong một khoảng thời gian chưa xác định. Với khoảng 27.000 lượt tải hàng tuần, gói này tự thể hiện như một giao diện người dùng hợp pháp dành cho mô hình Codex của OpenAI. Ẩn sau vẻ ngoài quen thuộc đó, nó đang vận hành một chiến dịch thu thập thông tin xác thực bí mật mà các nhà nghiên cứu bảo mật hiện phân loại là một cuộc tấn công chuỗi cung ứng npm điển hình, nhắm vào token OpenAI trên quy mô lớn.

Phát hiện này là một lời nhắc nhở sắc bén khác rằng các kho đăng ký gói vốn không an toàn, và chỉ riêng mức độ phổ biến không phải là dấu hiệu của sự đáng tin cậy.

Cách codexui-android che giấu hành vi đánh cắp token bên trong một gói trông có vẻ hợp pháp

Cuộc tấn công dựa vào một chiêu lừa đơn giản nhưng hiệu quả: xây dựng thứ mà các nhà phát triển thực sự muốn sử dụng, sau đó thêm logic độc hại chạy ngầm trong nền. Gói codexui-android cung cấp một giao diện chức năng cho Codex của OpenAI, điều đó có nghĩa là các nhà phát triển đã cài đặt nó, kiểm tra nó và giữ nó trong dự án của họ, thường không bao giờ đặt câu hỏi về những gì gói này đang làm ở tầng mạng.

Cách tiếp cận này được gọi là tấn công gói Trojan hóa. Mã độc hại được nhúng vào trong thứ có vẻ là một công cụ hữu ích, qua đó né tránh sự hoài nghi tự nhiên mà một gói rõ ràng là vô dụng hoặc được xây dựng kém sẽ thu hút. Gói này đã đánh cắp các refresh token OpenAI, những thông tin xác thực tồn tại lâu dài cho phép các ứng dụng yêu cầu access token mới mà không cần người dùng đăng nhập lại.

Cái tên codexui-android cũng tuân theo một quy ước đặt tên ngụ ý tính hợp pháp. Nó mượn uy tín thương hiệu từ sản phẩm Codex của OpenAI đồng thời thêm một hậu tố chỉ định nền tảng khiến nó trông giống như một công cụ được xây dựng chuyên biệt cho môi trường di động. Các nhà phát triển tìm kiếm công cụ liên quan đến Codex trên npm sẽ không có lý do rõ ràng nào để nghi ngờ nó.

Token OpenAI refresh bị đánh cắp thực sự cho phép kẻ tấn công làm gì

Refresh token không chỉ đơn thuần là mật khẩu. Trong nhiều hệ thống xác thực, chúng thực chất là chìa khóa vạn năng. Khi kẻ tấn công có được một refresh token hợp lệ, chúng có thể tạo ra các access token mới liên tục, duy trì quyền truy cập dai dẳng vào tài khoản ngay cả sau khi phiên ban đầu đã kết thúc hoặc mật khẩu đã được thay đổi.

Đối với tài khoản OpenAI, quyền truy cập này có thể chuyển thành việc sử dụng trái phép tín dụng API trả phí, truy cập vào các prompt đã lưu trữ hoặc dữ liệu mô hình tinh chỉnh, khả năng lộ mã nguồn độc quyền được truyền qua API, và trong bối cảnh tổ chức, truy cập ngang vào các tài nguyên nhóm được liên kết với cùng một tài khoản.

Rủi ro gia tăng nhanh chóng trong các môi trường nhà phát triển. Các kỹ sư thường xuyên làm việc với các khóa API và token mang quyền nâng cao. Một refresh token bị xâm phạm trong pipeline CI/CD hoặc một môi trường phát triển dùng chung có thể cho phép kẻ tấn công có được chỗ đứng dai dẳng, khó phát hiện và càng khó khắc phục triệt để hơn. Hiệu ứng dây chuyền này phản chiếu những gì đã xảy ra trong vụ vi phạm Dropbox Sign, nơi các thông tin xác thực bị thu thập đã mở đường vào các hệ thống liên kết vượt xa điểm xâm nhập ban đầu.

Vì sao hệ sinh thái npm khiến các cuộc tấn công chuỗi cung ứng dễ dàng mở rộng quy mô

Kho đăng ký npm chứa hơn hai triệu gói. Việc xuất bản một gói mới yêu cầu xác minh danh tính tối thiểu, và bản chất mở của kho chính là điều khiến nó trở nên hữu ích cho cộng đồng phát triển toàn cầu. Đó cũng là điều khiến nó trở thành mục tiêu lặp đi lặp lại cho những kẻ tấn công chuỗi cung ứng.

Trường hợp codexui-android chứng minh cách kẻ tấn công khai thác mô hình tin cậy làm nền tảng cho phát triển mã nguồn mở. Các nhà phát triển thường cho rằng một gói có số lượt tải đáng kể đã trải qua một mức độ giám sát nhất định của cộng đồng. Giả định đó ngày càng trở nên nguy hiểm. Số lượt tải có thể bị thổi phồng một cách nhân tạo, và việc sử dụng trong thực tế không đồng nghĩa với việc rà soát bảo mật.

Vấn đề tấn công chuỗi cung ứng npm rộng lớn hơn không phải là mới, nhưng việc nhắm mục tiêu vào các công cụ AI đánh dấu một bước tiến triển. Khi các nhà phát triển tích hợp API mô hình ngôn ngữ lớn vào các hệ thống sản xuất, các token xác thực những tích hợp đó trở thành mục tiêu có giá trị cao. Những kẻ tấn công rõ ràng nhận thức được sự thay đổi này. Các gói mô phỏng công cụ phát triển AI là một hạng mục đe dọa mới nổi mà cộng đồng bảo mật vẫn đang nỗ lực đối phó trên quy mô lớn.

Phòng thủ theo chiều sâu cho nhà phát triển: Cách ly thông tin xác thực, phân đoạn mạng và hơn thế nữa

Sự cố codexui-android chỉ ra một số thực hành cụ thể có thể giảm thiểu nguy cơ trước nhóm tấn công này.

Cách ly thông tin xác thực là biện pháp giảm thiểu tức thời nhất. Token API và refresh token nên được giới hạn phạm vi hẹp nhất có thể, lưu trữ trong trình quản lý bí mật thay vì biến môi trường hay tệp cấu hình, và được xoay vòng thường xuyên. Nếu một token bị đánh cắp, phạm vi giới hạn đồng nghĩa với thiệt hại hạn chế.

Kiểm toán phụ thuộc nên là một phần tiêu chuẩn trong bất kỳ quy trình phát triển nào. Các công cụ như npm audit, cùng với các nền tảng phân tích thành phần phần mềm bên thứ ba, có thể gắn cờ các gói có hành vi bất thường hoặc lỗ hổng đã biết. Khóa phiên bản phụ thuộc trong các tệp package-lock và rà soát thay đổi trước khi chấp nhận cập nhật cũng giúp giảm nguy cơ trước các cú đẩy phiên bản độc hại.

Giám sát lưu lượng mạng ra có thể bắt được các nỗ lực đánh cắp mà công cụ kiểm toán bỏ sót. Nếu một môi trường phát triển hoặc pipeline CI/CD được cấu hình để cảnh báo về các kết nối ra ngoài bất ngờ, một gói đang cố gắng gọi điện về nhà với token bị đánh cắp sẽ trở nên có thể bị phát hiện.

Nguyên tắc đặc quyền tối thiểu áp dụng ở mọi cấp độ. Các máy phát triển không nên chạy với các thông tin xác thực cấp quyền truy cập cấp sản xuất. Pipeline CI/CD nên sử dụng token ngắn hạn được tạo ra khi chạy thay vì lưu trữ bí mật dài hạn.

Cuối cùng, việc xem xét lại các gói đã cài đặt của chính bạn để tìm bất kỳ thứ gì động chạm đến luồng xác thực là một bài tập đáng làm ngay bây giờ. Sự cố codexui-android khó có khả năng là cá biệt. Hãy kiểm toán những gì có trong node_modules của bạn, kiểm tra xem token API của bạn mang những quyền gì, và đối xử với bất kỳ gói nào chạm đến lưu trữ thông tin xác thực với sự giám sát cao độ hơn.

Các cuộc tấn công chuỗi cung ứng thành công vì chúng khai thác lòng tin trên quy mô lớn. Việc xây dựng lại tư thế bảo mật đó, từng phụ thuộc một, bắt đầu với những thông tin xác thực nhạy cảm nhất trong hệ thống của bạn, là phản ứng thiết thực nhất hiện có cho từng nhà phát triển ngày nay.