Gần đây, các ứng dụng sử dụng những thư viện mã nguồn mở phổ biến như colors.js và faker.js bất ngờ hiển thị các dữ liệu vô nghĩa và thậm chí bị hỏng. Điều này khiên các nhà phát triển ứng dụng bị bất ngờ và có chút bối rối.
Ban đầu, một số người phỏng đoán rằng hai thư viện NPM này đã bị hack. Nhưng cuối cùng câu chuyện phức tạp hơn thế rất nhiều.
Hóa ra chính nhà phát triển của các thư viện trên đã tạo ra một vòng lặp vô hạn khiến hàng nghìn dự án phụ thuộc vào colors và faker bị treo, hoặc hiển thị những thứ vô nghĩa.
Thư viện colors được tải về hơn 20 triệu lần mỗi tuần và tính riêng trên npm đã có gần 19.000 dự án phụ thuộc vào nó. Trong khi đó, faker có 2,8 triệu lượt tải mỗi tuần trên npm và có hơn 2.500 dự án phụ thuộc.
Nguy nhân sâu xa của vụ việc này là gì?
Nhà phát triển đứng đằng sau các thư viện mã nguồn mở phổ biến colors (còn gọi là colors.js trên GitHub) và faker (còn gọi là faker.js trên GitHub) đã cố tình đưa vào chúng những commits kỳ quái. Vì thế, hàng nghìn ứng dụng phụ thuộc vào các thư viện này đã bị ảnh hưởng.
Ví dụ, Cloud Development Kit của Amazon (aws-cdk) đã hiển thị các thông điệp vô nghĩa trên console. Thông điệp bắt đầu bằng ba dòng chữ LIBERTY LIBERTY LIBERTY rồi tiếp theo là các dòng ký tự không phải chuẩn ASCII. Liberty có nghĩa là tự do.
Tại sao các nhà phát triển lại tự tay phá hoại những thư viện mà họ tạo ra? Lý do phù hợp nhất chính là để trả đũa. Các nhà phát triển đứng đằng sau colors.js và faker.js đã quá bực mình với tình trạng các tập đoàn lớn và doanh nghiệp tiêu dùng "xài chùa" những phần mềm miễn phí và do cộng đồng cung cấp nhưng lại chẳng ủng hộ, hỗ trợ gì cho cộng đồng.
Hồi tháng 11/2020, nhà phát triển Marak Squires - một trong những người đứng đằng sau dự án colors.js - đã chia sẻ rằng ông sẽ không hỗ trợ các tập đoàn lớn miễn phí nữa. Thay vào đó, Marak khuyên các tập đoàn nên cân nhắc fork dự án và nhờ người khác làm việc với nó hoặc trả cho ông mức lương 6 con số/1 năm (đơn vị USD).
Phản hồi trái chiều của cộng đồng
Một số người ủng hộ hành động của Mark trong khi số khác lại cho rằng đây là hành vi vô trách nhiệm.
"Nếu không muốn người khác xài chùa thì đừng cung cấp miễn phí. Việc bạn tự phá thư viện không chỉ làm tổn hại doanh nghiệp mà còn ảnh hưởng tới bất cứ ai dùng nó. Thật vô trách nhiệm", chuyên gia với biệt danh VesOnSecurity của InfoSec chia sẻ.
Ngay sau khi những lùm xùm nổ ra, GitHub đã tạm khóa tài khoản của Marak. Điều này cũng gây ra những phản ứng trái chiều.
"Xóa code của chính mình khỏi (GitHub) cũng bị tính là hành vi vi phạm Điều khoản dịch vụ của GitHub? WTF?", kỹ sư phần mềm Sergio Gómez phàn nàn.
Vụ việc vẫn còn nhiều tranh cãi và hiện vẫn chưa rõ cuối cùng mọi chuyện sẽ được dàn xếp như thế nào. Trong thời gian chờ đợi, nếu bạn đang sử dụng các thư viện colors và faker cho những dự án của mình thì hãy đảm bảo rằng không dùng các phiên bản không an toàn. Hạ cấp xuống các phiên bản colors cũ hơn (ví dụ 1.4.0) và faker cũ hơn (ví dụ 5.5.3) có thể là một giải pháp hữu ích.