Đang ngồi gõ code yên bình, tự dưng thấy token GitHub bị leak, mã nguồn công ty chạy thẳng vào tay pháp sư nào đó thì cảm giác thế nào anh em? Chuyện tâm linh đ*o đùa được đâu, nhất là khi thủ phạm lại chui ra từ chính cái text editor anh em dùng mỗi ngày.
Toàn cảnh vụ úp sọt: Extension "phản chủ" và 3.800 repo toang hoác
Nguồn cơn vụ drama này xuất phát từ một thông báo vã mồ hôi hột của GitHub, khi họ xác nhận một đợt rò rỉ dữ liệu diện rộng.
- Số lượng nạn nhân không hề nhỏ: Khoảng 3.800 repositories đã bị access trái phép.
- Kẻ thủ ác? Không phải do server GitHub sập hay bị hack trực tiếp, mà do các đạo hữu lỡ tay cài một cái VSCode extension cài cắm mã độc.
- Cơ chế tấn công rất ma giáo: Dev thấy extension tiện tay bấm "Install" -> Extension nằm vùng âm thầm húp luôn cái authentication token -> Gửi thẳng về server của hacker -> Hacker lấy token đó truy cập vào repo riêng tư của nạn nhân như đi chợ.
- Đây là đòn tấn công chuỗi cung ứng (supply chain attack) cực kỳ chí mạng. Anh em dev thường có thói quen tin tưởng tuyệt đối vào chợ ứng dụng của anh Sốp (Microsoft), cứ thấy tool hay là cài mà đ*o thèm check xem tác giả là cái tên ất ơ nào.
Giang cư mận nói gì? Các pháp sư mạng chia phe combat
Dù thread trên Hacker News vẫn đang trong giai đoạn hóng hớt, nhưng lướt qua các diễn đàn IT thì dân tình đang cãi nhau nảy lửa:
- Phe nạn nhân khóc ròng: "Mẹ kiếp, tự dưng sáng dậy nhận email GitHub cảnh báo. Giờ phải rà soát lại đống code, rotate lại toàn bộ token, review xem code có bị chèn backdoor không, cay vãi đạn!"
- Phe chửi Microsoft: "Chợ extension của VSCode giờ rác đ*o chịu được. Quy trình review quá lỏng lẻo, bất kỳ thằng ất ơ nào cũng có thể up một con extension lên rồi lùa gà. Microsoft phải chịu trách nhiệm vụ này!"
- Phe Vim/Neovim thượng đẳng: "Đấy, đã bẩu rồi, xài VSCode cho lắm vào. Cứ trung thành với cái terminal và Neovim nguyên thủy cho lành. Lỡ mã nguồn dự án lộ ra mà dính luôn cả key máy chủ hay ví tiền ảo hardcode trong đó thì đúng là ăn cám."
Góc nhìn từ Coding4Food: Bài học sinh tồn sau vụ này
Thực tế phũ phàng là chúng ta đang giao quá nhiều quyền cho các công cụ lập trình. Tóm cái váy lại, sau vụ này anh em rút ra vài bài học để giữ cần câu cơm:
Thứ nhất, cái gì không rõ nguồn gốc thì cất cái tay đi, đừng có click bừa. Thấy extension nào ít sao, ít lượt tải, tác giả no-name thì né gấp.
Thứ hai, nguyên tắc "least privilege" (quyền tối thiểu) luôn đúng. Token GitHub sinh ra nhớ set scope cho chuẩn. Đừng có thói quen cấp mẹ nó full quyền (God-mode) cho tiện, đến lúc toang là không cứu được đâu.
Cuối cùng, cuối tuần rảnh rỗi thì mở tab Extensions lên mà dọn dẹp. Cái nào cài từ năm ngoái mà cả năm đ*o xài thì disable hoặc gỡ cmn đi cho nhẹ máy, đỡ rước họa vào thân.
Nguồn tham khảo: