Gói Stylus CSS Preprocessor bị gỡ khỏi NPM vì lo ngại bảo mật

Nhóm Cộng đồng BigGo
Gói Stylus CSS Preprocessor bị gỡ khỏi NPM vì lo ngại bảo mật

Gói Stylus CSS preprocessor phổ biến đã bị gỡ bỏ đột ngột khỏi NPM , gây ra sự gián đoạn rộng rãi cho các nhà phát triển đang dựa vào công cụ này cho các dự án của họ. Gói này, có hơn 3,6 triệu lượt tải xuống hàng tuần, đã được thay thế bằng một phiên bản placeholder bảo mật có nhãn 0.0.1-security vào ngày 23 tháng 7 năm 2025.

Thống kê Package trước khi bị gỡ bỏ:

  • Lượt tải xuống hàng tuần: 3,628,473
  • Tổng số package phụ thuộc: 2,277 packages
  • Lịch sử Package: Hoạt động từ năm 2010 (15 năm)
  • Phiên bản thay thế hiện tại: 0.0.1-security (418 B, 2 files)

Cảnh báo bảo mật không rõ ràng gây ra sự nhầm lẫn

NPM và GitHub đã phát hành một cảnh báo bảo mật tuyên bố rằng tất cả các phiên bản của Stylus đều chứa malware, có từ năm 2010. Tuy nhiên, cộng đồng vẫn hoài nghi về những tuyên bố này. Cảnh báo không cung cấp chi tiết cụ thể nào về các lỗ hổng bảo mật được cho là có, khiến các nhà phát triển đặt câu hỏi liệu mối đe dọa có thực sự tồn tại hay đây chỉ là phản ứng quá thận trọng của các hệ thống bảo mật tự động.

Thời điểm này cũng gây nghi ngờ. Gói được gỡ bỏ lúc 03:03 UTC , và GitHub Security Advisory được công bố chỉ một phút sau đó, cho thấy một phản ứng có phối hợp nhưng có thể vội vàng.

Giải pháp thay thế cho nhà phát triển:

  • Ghi đè bằng phiên bản bảo mật: "overrides": {"stylus": "0.0.1-security"}
  • Cài đặt từ GitHub: "overrides": {"stylus": "github:stylus/stylus0.64.0"}
  • Thời gian: Gói được gỡ bỏ vào ngày 23 tháng 7 năm 2025 lúc 03:03 UTC, Cảnh báo được phát hành lúc 03:03:56 UTC

Lý thuyết về việc tài khoản maintainer bị xâm phạm xuất hiện

Các cuộc thảo luận trong cộng đồng chỉ ra một lời giải thích tinh tế hơn. Bằng chứng cho thấy rằng một trong những maintainer lâu năm, được biết đến với tên Ponya , có thể đã bị xâm phạm tài khoản và có liên quan đến các gói đáng ngờ khác. Thay vì điều tra từng gói một cách riêng lẻ, NPM dường như đã áp dụng cách tiếp cận triệt để, gỡ bỏ tất cả các gói liên quan đến maintainer có thể bị xâm phạm.

Rõ ràng là một trong những maintainer lâu năm đã push các gói bị xâm phạm khác, vì vậy npm chỉ đơn giản là xóa sạch tất cả các gói mà anh ta có quyền truy cập, bất kể chúng có bị xâm phạm hay không.

Lý thuyết này trở nên đáng tin cậy hơn khi xem xét rằng không có bản phát hành độc hại thực tế nào của Stylus được xác định, và repository GitHub vẫn sạch sẽ và không bị xâm phạm.

Các giải pháp thay thế của nhà phát triển và nỗ lực khôi phục

Trong khi tình hình đang diễn ra, các nhà phát triển đã tìm ra nhiều cách để tiếp tục sử dụng Stylus trong các dự án của họ. Giải pháp thay thế phổ biến nhất bao gồm việc sử dụng package.json overrides để cài đặt trực tiếp từ repository GitHub , bỏ qua hoàn toàn NPM registry.

Maintainer hiện tại iChenLei được báo cáo đang đàm phán với các quan chức NPM để khôi phục quyền truy cập thích hợp vào gói. Nhóm Stylus khẳng định rằng codebase của họ là an toàn và rằng sự cố này xuất phát từ các lo ngại bảo mật rộng hơn chứ không phải từ các lỗ hổng thực tế trong phần mềm của họ.

Sự cố này làm nổi bật tính mong manh của hệ sinh thái JavaScript hiện đại, nơi một quyết định bảo mật duy nhất có thể ngay lập tức phá vỡ hàng nghìn dự án phụ thuộc vào các gói phổ biến.

Tham khảo: stylus