Sự bùng nổ của các công cụ AI như ChatGPT hay Gemini đang định hình lại cách chúng ta tiếp cận lập trình. Với một vài dòng lệnh mồi (prompt), bạn có thể nhận về hàng trăm dòng code ngay lập tức. Tuy nhiên, sức mạnh này đang tạo ra một “ảo giác” nguy hiểm: những người không nắm vững kiến thức nền tảng bắt đầu tin rằng họ có thể xây dựng các hệ thống phần mềm phức tạp, an toàn mà không cần hiểu bản chất bên dưới.
Niềm tin mù quáng vào AI, cộng với sự thiếu hụt kiến thức về kiến trúc hệ thống, đã cho ra đời những dự án trông có vẻ rất nguy hiểm nhưng bên trong lại là một thảm họa bảo mật. Câu chuyện thực tế dưới đây về một dự án “tự xưng chuyên nghiệp” là minh chứng rõ ràng nhất cho hội chứng này.
Dự án ‘chạy được’ mang tên “All-In-One HTML”.
Gần đây, bạn tôi được ‘vinh dự’ tiếp cận một dự án cá nhân do một ‘UI-ers’ (thú vị thay lại trùng tên với tôi) công bố. Anh chàng này vô cùng tự hào giới thiệu đây là một hệ thống chuyên nghiệp, thậm chí có cả lớp 2FA. Nhìn lướt qua giao diện, mọi thứ trông khá trơn tru và bài bản.
Nhưng sự thật phũ phàng đã bị bóc trần chỉ trong chớp mắt khi bạn tôi ngó thử vào bên trong. Không cần dùng đến kỹ năng hack phức tạp hay công cụ quét lỗ hổng nào, “hacker” này chỉ dùng duy nhất công cụ… F12 của chrome.
Toàn bộ “hệ thống” đồ sộ đó thực chất chỉ là một tệp All-in-One HTML. Việc đăng nhập hoàn toàn bị phó mặc cho client-side. Bạn tôi đã thản nhiên dạo bước vào hệ thống thành công chỉ bằng một thao tác đơn giản: xóa luôn đoạn code HTML chứa form đăng nhập hay nhờ gemini viết console và…Enter. Khóa cửa kiểu này thì chẳng khác nào lắp cái ổ khóa mật khẩu và ghi mật khẩu lên thân ổ khóa.
Nghệ Thuật Giấu Chìa Khóa Dưới Thảm
Khám phá sâu hơn vào mã nguồn, dự án tiếp tục phơi bày những lỗ hổng ngô nghê nhất trong ngành phần mềm:
- Hardcode vào script: Tên đăng nhập và mật khẩu được mã hóa cứng ngay trong thẻ
<script>. Người viết như thể đang giấu chìa khóa dưới tấm thảm trước nhà, nhưng lại cắm thêm một tấm biển báo to đùng: “Chìa khóa ở dưới thảm nhé!”. - 2FA “Lạy Ông Tôi Ở Bụi Này”: Đỉnh cao của sự ngu ngục nằm ở thuật toán 2FA. Tác giả cấu hình sao cho sau khi nhập đúng user/pass cứng, màn hình sẽ chuyển sang ô nhập ID Telegram để gửi mã OTP. Đáng tiếc, OTP lại nằm chình ình trong lời gọi API. Bằng cách mở tab Network, bạn tôi dễ dàng copy được toàn bộ đoạn lời gọi API đó. Chỉ cần quăng đoạn text đó vào ChatGPT hay Gemini, AI sẽ ngoan ngoãn chỉ ra chính xác mã OTP cần nhập là gì.
- Dấu Ấn “Copy-Paste” Hiện Nguyên Hình: Mã nguồn tràn ngập những dòng comment chú thích cho từng dòng code một. Đây là “đặc điểm nhận dạng” không thể nhầm lẫn của sản phẩm do LLM sinh ra. Lập trình viên chuyên nghiệp, hay chí ít là bán chuyên, KHÔNG BAO GIỜ viết comment giải thích những thứ hiển nhiên kiểu như dòng này khởi tạo biến gì. Họ chỉ comment để giải thích tại sao đoạn logic đó lại tồn tại.
Chuyện không có gì để nói cho đến khi bạn này nâng cấp phần mềm lên hàng OS.
Dưới góc độ của kỹ thuật chúng tôi, câu chuyện này rất “hài hước”:
1. Nó phải chạy “ké” trên một OS thật Hệ điều hành (OS) thực thụ (như Windows, Linux, macOS) phải có Kernel (nhân), phải giao tiếp trực tiếp với phần cứng, quản lý bộ nhớ, CPU, driver, v.v. (thường được viết bằng C, C++, Rust…). Trong khi đó, Electron bản chất là ứng dụng đóng gói dựa trên trình duyệt Chromium và Node.js. Để cái “OS” của bạn kia khởi động được, máy tính vẫn phải đang chạy Windows hoặc Linux!
2. Đớp RAM như đớp nước bất cứ ai code hoặc dùng app Electron (như Discord, Slack, Notion) đều biết nó nổi tiếng là ngốn RAM kinh khủng vì bản chất mỗi app là một cái trình duyệt Chrome thu nhỏ. Giờ cứ tưởng tượng nguyên một cái “Hệ điều hành” mà mọi thành phần giao diện đều render bằng web engine, mỗi lần mở một cửa sổ là mở thêm một luồng Chromium… thì chắc phải mua RAM tính bằng Tạ mới gánh nổi.
3. “Bình mới rượu cũ” bản chất đây chỉ là một Desktop App (ứng dụng máy tính) có giao diện được làm cho giống màn hình Desktop (có icon, có taskbar, có cửa sổ…). Các hệ điều hành nền web cũng từng có nhiều người làm (dạng giả lập giao diện OS trên trình duyệt), nhưng gọi một project Electron là “nâng cấp lên hàng OS” thì đúng là khả năng marketing đi trước kỹ thuật quá xa.
Khoảng 46% không tin tưởng vào AI
Những lỗ hổng sơ đẳng trên giải thích lý do vì sao dân lập trình chuyên nghiệp không bao giờ giao phó 100% tư duy hệ thống cho AI. Theo một khảo sát gần đây từ Stack Overflow, khoảng 46% lập trình viên không thực sự đặt niềm tin vào các công cụ AI. Hơn một nửa giới coder chuyên nghiệp vẫn luôn giữ thái độ hoài nghi và cảnh giác. Họ xem AI như một người thợ phụ gõ phím nhanh, một bách khoa toàn thư để tra cứu cú pháp, chứ không ai dại dột đem sinh mệnh bảo mật của hệ thống đặt vào tay nó.
AI có thể xuất ra một đoạn code chạy được, giao diện hiển thị đẹp mắt, nhưng nó không tự động thiết kế luồng bảo mật phía server nếu người dùng không có tư duy kiến trúc. Câu chuyện tấu hài trên là một lời nhắc nhở sắc bén: Code chạy được chưa chắc đã là code dùng được. Nếu mượn tay AI để lập trình mà hoàn toàn mù mờ về phần chìm của tảng băng, thứ bạn tạo ra chỉ là một ngôi nhà bằng giấy chực chờ sụp đổ trước cú click chuột nhẹ nhất.
Và cuối cùng, xin hãy bớt ảo tưởng.
Nên nhớ rằng:
“Một máy tính siêu hạng vẫn không thể cứu vãn một thuật toán tồi!”
Trần Đình Long