Một Extension VS Code Suýt Lấy Sạch GitHub Của Mình
Mình tưởng mình cẩn thận lắm rồi.
Không crack tool, không tải hack game, không mở file lạ.
Thế mà suýt mất sạch tài khoản vì một cái extension VS Code.
Hôm đó mình reset laptop mới, cài lại VS Code từ đầu.
Xong mở Marketplace lên search mấy cái GitHub helper cho tiện.
Thấy một extension tên kiểu “GitHub Sync Pro” hay “Advanced GitHub Assistant”, không nhớ chính xác nữa.
- Icon nhìn rất xịn
- ~40k lượt cài
- Review 4–5 sao
- Description ghi đủ thứ: auto sync, AI suggest, login nhanh…
Nhìn legit vãi nên mình cài luôn.
Cài xong nó bật popup yêu cầu login GitHub để “kích hoạt full features”.
Mình cũng hay login qua extension nên không nghĩ nhiều.
Bấm Authorize luôn.
Đến đây là sai.
Vài phút sau mình vẫn code bình thường, không thấy gì lạ.
Nhưng ngồi thêm 2–3 phút thì bắt đầu thấy:
- VS Code hơi lag nhẹ
- CPU nhảy lên rồi tụt
- Extension có vẻ chạy nền liên tục
Mình lúc đó còn nghĩ chắc máy mới cài nhiều thứ nên vậy.
Rồi bắt đầu thấy cấn thật sự.
Mở Task Manager lên thì thấy có process lạ kiểu nó cứ request mạng liên tục, dù mình chẳng làm gì.
Mình vào GitHub Settings → OAuth Apps kiểm tra.
Và thấy một app lạ vừa được cấp quyền cách đây chưa đầy 30 phút.
Quyền thì… kinh luôn:
- read/write repository
- workflow access
- admin level permissions
Đọc xong lạnh gáy thật sự.
Mình revoke ngay lập tức.
Rồi bắt đầu unpack file .vsix của extension ra xem.
Nhìn code thì khá rõ:
- Nó tạo một cái form login giả giống GitHub
- Khi bấm authorize thì token bị capture lại
- Gửi thẳng về server của nó qua request POST
- Token còn bị lưu local trong VS Code để “giữ session”
May là phát hiện sớm.
Mình revoke token, rotate API keys, check lại toàn bộ access log của repo.
Mất gần 1 tiếng ngồi xử lý.
Tim lúc đó đập nhanh thật.
Cái nguy hiểm ở đây là gì?
Dev thường có rất nhiều thứ nhạy cảm trong GitHub:
- private repo công ty
- CI/CD secrets
- AWS keys
- database passwords
- API tokens production
Chỉ cần leak một cái token đủ quyền là coi như đi luôn cả hệ thống.
Từ sau vụ đó mình thay đổi thói quen
Không còn kiểu “cài thử rồi tính sau” nữa.
- Chỉ cài extension từ publisher lớn hoặc dùng lâu năm
- Trước khi authorize OAuth là phải check quyền kỹ
- Dùng fine-grained token thay cho classic token
- Thỉnh thoảng kiểm tra OAuth apps đã cấp quyền
Giờ thì vẫn cài extension mới, nhưng cẩn thận hơn nhiều.
Không còn kiểu bấm “Accept” theo bản năng nữa.
Bạn có từng dính extension / plugin / npm package lạ chưa?
Kể mình nghe với. Mình đang tính viết thêm mấy vụ kiểu này thành series “Những thứ suýt giết dev”.
All rights reserved