Drama cực căng giới Node.js: 170+ package bị chèn mã độc, 400+ version bẩn được push lên npm dù không có account maintainer nào bị hack. Chuyện gì đang xảy ra?

Lại một ngày bình thường ở làng Node.js: gõ nhẹ dòng npm i rồi ôm máy khóc vì dính mã độc. Đùa thôi, nhưng cái drama úp sọt supply chain (chuỗi cung ứng) vừa nổ ra trên npm đúng kiểu vả thẳng mặt anh em dev thích xài hàng mới.
Theo thông tin rò rỉ trên Reddit cuối tuần qua, giang hồ đang xôn xao vụ một chiến dịch tấn công diện rộng nhắm thẳng vào hệ sinh thái npm. Các ý chính cho anh em hít hà:
Bên dưới thread Reddit, anh em dev đang vác phím ra combat nảy lửa, đồng thời share nhau mấy bí kíp để tránh cảnh "sáng code, chiều hầu tòa vì làm lộ data công ty".
Phe "Sống chậm lại, yêu thương nhiều hơn"
Nhiều lão quái khuyên anh em nên thêm ngay cờ min-release-age=3 (hoặc 7) vào file ~/.npmrc. Tác dụng của nó là gì? Là bắt npm phải chờ cái version đó sống sót được 3 ngày trên chợ mà chưa bị thiên hạ tế sống thì mới cho phép tải về. Cơ bản là nhường slot làm chuột bạch cho mấy pháp sư thích đi đầu.
Thậm chí, dân chơi hệ Python (xài tool uv) hay hệ Rust (Cargo) cũng đang bàn tán rôm rả về cái trò "dependency cooldown" (chờ nguội rồi mới cài) này.
Phe "Công ty lớn thì xài đồ nhà" Một số đạo hữu thì thắc mắc: "Ủa mấy công ty to đầu sao đ*o tự dựng private registry rồi trễ mirror khoảng 1-2 tháng cho an toàn?". Bị anh em phản dame ngay lập tức: Giam code 1-2 tháng thì an toàn cái nỗi gì? Lúc có lỗ hổng bảo mật (CVE) nghiêm trọng, server các ông chưa kịp update thì hacker nó đã vào hốt trọn data rồi. Giải pháp hợp lý nhất chỉ là delay vài ngày kết hợp với hệ thống monitor cảnh báo thôi.
Phe "Cấm tiệt scripts"
Một luồng ý kiến khác rất được lòng dân tình là thêm ignore-scripts=true vào .npmrc. Lý do là mấy con mã độc đa phần rất lười, toàn thích cắn trộm qua mấy cái hook như preinstall hoặc postinstall. Tắt mẹ nó đi là bớt được 80% rủi ro.
Có thanh niên còn bức xúc đòi npm phải "lớn lên" bằng cách tắt mặc định cái trò chạy script này, và cấm luôn việc push mấy file binary hay code đã minified lên chợ vì đ*o ai rảnh đi audit mấy cái file đen ngòm đó.
Trong khi đó, anh em xài pnpm thì đang rung đùi vì con tool này mặc định nó đã bắt phải --approve-build thì mới cho chạy script rồi. Đúng là xịn xò con bò!
Thật sự thì cái hệ sinh thái JavaScript nó vốn dĩ đã mỏng manh như tờ giấy lộn. Việc các ông cứ thích update thư viện mới tinh ngay Day 1 bây giờ không phải là ngầu, mà là tự sát.
Tóm cái váy lại, qua vụ này anh em cứ cẩn tắc vô áy náy:
Code dạo thời nay khổ thật sự, sơ hở là đền ốm đòn. Chúc anh em đầu tuần may mắn, không bị dính bug từ trên trời rơi xuống!