Security Blog

634 mật khẩu trong 56 giây

#130

October 2, 2026 · By Marketing team

← All posts

Một lập trình viên đã trải qua hai vòng phỏng vấn với một công ty ma. Website thật, gương mặt thật, những cuộc trao đổi kỹ thuật thật. Rồi họ cho chạy bài coding challenge. Trong chưa đầy một phút, toàn bộ mật khẩu Chrome, macOS Keychain và dữ liệu ví crypto đã biến mất.

Một lập trình viên — người có ý thức bảo mật, dày dạn kinh nghiệm, vốn chủ động tìm kiếm các trò lừa đảo — đã tham gia một quy trình phỏng vấn nhiều vòng với một công ty ma. Cuộc gọi với HR. Buổi phỏng vấn kỹ thuật cùng hai kỹ sư. Trang web thật với ảnh đội ngũ. Hồ sơ LinkedIn thật. Nhiều tuần xây dựng mối quan hệ.

Sau đó, người này được yêu cầu chạy một bài coding challenge nhỏ trong lúc chia sẻ màn hình.

56 giây sau, kẻ tấn công đã có 634 mật khẩu Chrome đã lưu, tệp macOS Keychain (chứa khóa giải mã chúng), và dữ liệu ví MetaMask.

Cách cuộc tấn công diễn ra

Kho GitHub trông sạch sẽ. Vài tệp backend, không có gì đáng ngờ. Nhưng một dependency — winston-middleware, một gói ghi log có vẻ bình thường — lại có dependency riêng: next-runtimejs.

Vũ khí nằm ở đó.

Ngay khi npm install chạy, một shell script được thực thi âm thầm. Không có lời nhắc, không có cảnh báo. Script tải xuống một backdoor viết bằng Go và đăng ký nó tự khởi động mỗi lần khởi động máy.

Đây không phải công cụ của script kiddie. Giao thức C2 mã hóa RC4 tùy chỉnh. Có lệnh thực thi shell, đánh cắp tệp, trích xuất mật khẩu Chrome, tuồn dữ liệu Keychain, và nhắm vào ví crypto. Được xây dựng chuyên nghiệp.

Backdoor khởi động lúc 16:16:37. Mật khẩu Chrome bị truy cập lúc 16:17:33. Lập trình viên để ý thấy một popup của macOS cảnh báo về kết nối ra ngoài và tắt WiFi trong vòng một phút — nhưng thiệt hại đã xảy ra.

Vì sao buổi phỏng vấn quan trọng

Cuộc tấn công này sẽ thất bại nếu là một email lạnh. Lời đề nghị "chạy repo này" từ người lạ sẽ bị bỏ qua.

Nhưng sau hai vòng phỏng vấn? Sau khi cùng nhau cười về nạn lừa đảo việc làm nhắm vào lập trình viên? Sau khi một trong hai người phỏng vấn nói "Cứ tự nhiên tìm backdoor nhé" kèm một nụ cười?

Đó là lúc sự cảnh giác của bạn hạ xuống. Lòng tin mới là lỗ hổng được khai thác. Malware chỉ là phần tải (payload).

Lập trình viên nói rất đúng: "Nếu chuyện này xảy ra với tôi, nó có thể xảy ra với bất kỳ ai trong đội của bạn."

Mật khẩu Chrome thực sự có ý nghĩa gì

Chrome mã hóa các mật khẩu đã lưu bằng AES. Khóa giải mã nằm trong macOS Keychain. Kẻ tấn công đã lấy cả hai tệp trong chưa đầy một phút.

Mọi mật khẩu đã lưu — ngân hàng, email, GitHub, bảng điều khiển cloud — đều đọc được ở phía chúng. Tệp Keychain có thể bị bẻ khóa offline mà không bị giới hạn tần suất. Lập trình viên buộc phải đổi toàn bộ.

Đây là mặt tối của việc lưu mật khẩu trên trình duyệt: chúng được mã hóa bằng một khóa nằm trên chính máy đó. Chiếm được máy, và "mã hóa" chỉ còn là lớp trang trí.

Mẫu tấn công từ DPRK

Lập trình viên kể rằng công ty trước đây của họ cũng bị Triều Tiên tấn công ba tháng trước đó. Đây là chiến dịch "Contagious Interview" — các kẻ tấn công do nhà nước DPRK hậu thuẫn tổ chức phỏng vấn việc làm giả để cài malware vào máy của lập trình viên.

Không phải ngẫu nhiên. Họ nhắm vào lập trình viên vì những gì lập trình viên có quyền truy cập: thông tin xác thực production, khóa ký, hạ tầng cloud, và — ngày càng nhiều hơn — token của AI agent có thể truy cập được nhiều thứ hơn nữa.

Quy mô mang tính công nghiệp. Các công ty ma với khuôn mặt được tạo sinh. Trang web chỉn chu. Quy trình phỏng vấn kéo dài nhiều tuần. Họ đầu tư vì lợi nhuận xứng đáng.

"Trình quản lý mật khẩu không giúp được gì"

Lập trình viên đưa ra một nhận xét thú vị trong thread: "Trình quản lý mật khẩu không giúp được gì nếu họ đã truy cập vào máy tính của bạn bằng backdoor kiểu này, vì sau đó họ có thể truyền bất kỳ tệp nào, chế riêng một exploit cho bạn, cài keylogger, chụp màn hình."

Điều này đúng một phần và sai một phần.

Với trình quản lý mật khẩu lưu vault trên đĩa cục bộ của bạn, mở khóa bằng master password bạn gõ — đúng vậy, một backdoor có keylogger và quyền truy cập tệp có thể đánh bại được nó.

Nhưng trình quản lý mật khẩu dùng khóa gắn với phần cứng — nơi khóa giải mã được dẫn xuất từ một thiết bị xác thực vật lý và không bao giờ tồn tại dưới dạng tệp trên đĩa — thì hoàn toàn khác. Backdoor có thể đánh cắp tệp, ghi lại phím bấm, chụp màn hình. Nhưng nó không thể trích xuất một khóa chỉ tồn tại bên trong mô-đun bảo mật phần cứng và chỉ hiện diện trong lúc chạm vật lý.

634 mật khẩu Chrome bị đánh cắp vì cả dữ liệu đã mã hóa lẫn khóa giải mã đều là tệp trên hệ thống tệp. Nếu khóa giải mã đòi hỏi phải sở hữu thiết bị vật lý, việc đánh cắp tệp chỉ mang về cho bạn các khối dữ liệu đã mã hóa và không gì khác.

Nên làm gì

  • Không bao giờ chạy code từ buổi phỏng vấn trên máy chính. Dùng VM hoặc một thiết bị riêng.
  • Chạy npm install --ignore-scripts trên mọi repo lạ trước khi thực thi
  • Dùng tường lửa outbound (Little Snitch, LuLu) cảnh báo khi có kết nối mới
  • Ngừng lưu mật khẩu trong Chrome. Chấm hết.
  • Giữ crypto trên ví phần cứng, không phải tiện ích trình duyệt
  • Coi mọi bài coding challenge từ nhà tuyển dụng là có thể thù địch, bất kể bạn đã có bao nhiêu cuộc gọi

Lập trình viên thoát nạn vì một popup của macOS phát hiện kịp kết nối ra ngoài. Hầu hết mọi người sẽ nhấn Cho phép mà không cần suy nghĩ.

56 giây. Chỉ cần chừng đó.