Trực giác và AI cứu lập trình viên Python khỏi cạm bẫy tuyển dụng giả mạo
Một lập trình viên Python suýt trở thành nạn nhân của cuộc tấn công chuỗi cung ứng phần mềm từ một tin nhắn tuyển dụng giả mạo trên LinkedIn. Nhờ trực giác và sự hỗ trợ của một tác nhân AI, anh đã phát hiện ra mã độc ẩn trong kho lưu trữ trước khi nó gây hại cho hệ thống. Vụ việc nhấn mạnh vai trò ngày càng quan trọng của AI trong việc phòng thủ an ninh mạng cho các nhà phát triển.

Roman Imankulov, một nhà phát triển Python, suýt chút nữa đã trở thành nạn nhân của một cuộc tấn công mạng tinh vi. Nếu không nhờ trực giác nhạy bén của con người và sự hỗ trợ đắc lực từ trí tuệ nhân tạo (AI), anh có thể đã vô tình cài đặt mã độc phá hoại hệ thống của mình.
Vụ việc bắt đầu khi một người tự xưng là nhân viên tuyển dụng (recruiter) của một startup tiền mã hóa nhỏ liên hệ với Imankulov qua LinkedIn. Người này yêu cầu anh giúp đỡ sửa chữa một đoạn mã bằng chứng khái niệm (proof-of-concept) không hoạt động, cụ thể là liên quan đến một mô-đun Node đã bị loại bỏ (deprecated). Mặc dù yêu cầu có vẻ hợp lý, nhưng Imankulov cảm thấy có gì đó không ổn.
"Đã có lúc tôi nghĩ, 'nếu mình là mục tiêu thì sao?'. Đó là dựa trên kinh nghiệm trong quá khứ," Imankulov chia sẻ.
Thay vì cài đặt trực tiếp kho chứa mã nguồn (repo) đó lên máy tính cá nhân, Imankulov đã thực hiện một bước phòng thủ bất thường: anh thuê một máy chủ ảo (VPS) trên Hetzner để sao chép repo về đó. Sau đó, anh sử dụng tác nhân AI mã hóa của mình (chạy Codex) để thực hiện phân tích mã ở chế độ chỉ đọc (read-only).
Kết quả hoàn toàn bất ngờ. Thay vì kết luận mã an toàn dù xấu xí như Imankulov dự đoán, AI đã cảnh báo ngay lập tức: "Đừng chạy đoạn mã này, hãy bỏ đi ngay vì có một cái bẫy."
Mô hình AI đã phát hiện ra một tệp đáng ngờ: app/test/index.js. Tệp này chứa một cửa sau (backdoor) dưới dạng một URL máy chủ bị chia nhỏ thành các mảnh để trông giống như cấu hình của bộ kiểm thử (test suite). Khi được thực thi, nó sẽ gửi một yêu cầu mạng và chạy bất kỳ mã nào mà máy chủ phản hồi lại.
Imankulov thừa nhận rằng chính mắt thường của anh đã bỏ qua chi tiết này. "Tôi đã mở mã này và lướt qua, nó trông giống như một tệp lộn xộn của một lập trình viên cẩu thả. Nhưng tác nhân AI đã tìm ra lỗ hổng chính xác mà tôi đã bỏ lỡ trong cùng một tệp đó," anh nói.
Đáng sợ hơn, kẻ tấn công đã cài đặt một hook prepare trong tệp package.json. Điều này có nghĩa là chỉ cần chạy lệnh npm install quen thuộc, mã độc sẽ tự động được kích hoạt mà người dùng không cần thực hiện thêm thao tác nào.
Devashri Datta, một kiến trúc sư bảo mật mã nguồn mở độc lập, nhận định rằng cuộc tấn công này rất nguy hiểm vì nó tận dụng quy trình làm việc tiêu chuẩn của các nhà phát triển. "Kẻ tấn công không dựa vào việc mục tiêu thực thi một tệp nhị phân đáng ngờ; họ dựa vào việc mục tiêu chạy một lệnh thường nhật: npm install."
Vụ việc cũng làm nổi bật sự gia tăng của các tài khoản giả mạo trên LinkedIn. Theo số liệu, nền tảng này đã hạn chế 386.000 tài khoản chỉ trong sáu tháng đầu năm 2025, tăng đáng kể so với các năm trước. Các nhóm tấn công liên quan đến Triều Tiên được cho là đứng sau nhiều chiến dịch lừa đảo tương tự nhằm xâm nhập tài khoản của nhà phát triển.
Về phía phòng thủ, Datta cho thấy cách tiếp cận của Imankulov đại diện cho một sự thay đổi trong văn hóa kiểm tra mã. Sử dụng AI tại máy trạm cục bộ giúp phát hiện các hành vi bất thường mà không bị ảnh hưởng bởi sự mệt mỏi hay áp lực xã hội.
Trong tương lai, các công cụ quản lý gói cũng đang được cập nhật để bảo vệ người dùng tốt hơn. npm 12, phiên bản sắp được GitHub phát hành, sẽ thay đổi hành vi mặc định của lệnh npm install bằng cách tắt cài đặt allowScripts. Điều này ngăn chặn việc thực thi các script trong quá trình cài đặt trừ khi được người dùng cho phép rõ ràng.
Tuy nhiên, Imankulov cho biết anh đã chuyển sang sử dụng pnpm để đảm bảo an toàn hơn. "Từ góc độ cá nhân, vì sự an toàn, tôi đã chuyển sang pnpm để đảm bảo mình không vô tình thực thi những script đó theo mặc định," anh kết luận.



