Bảo mật khi để AI viết code: 6 lỗ hổng hay gặp và cách chặn

Bảo mật khi để AI viết code: 6 lỗ hổng hay gặp và cách chặn

Bảo mật code AI là giữ dữ liệu, khóa truy cập và quyền hệ thống an toàn khi máy tham gia viết phần mềm. Sau hơn 14.000 dự án, tụi em chỉ nhận code AI khi nó qua 2 lần duyệt gồm vòng máy và cửa dev senior, vì một màn hình chạy đúng chưa chứng minh quyền cùng dữ liệu đã an toàn. Người giữ cửa cuối.

AI viết code nhanh, 6 lỗ hổng vẫn cần người chặn

AI thường tối ưu cho yêu cầu “làm cho chạy”. Nếu đề bài không nhắc khóa bí mật, quyền truy cập, dữ liệu rỗng hay nguồn gốc thư viện, nó chọn đường ngắn và trả một đoạn code rất đẹp mắt. Anh chị chạy ca mẫu thấy đúng, rồi rủi ro nằm im tới lúc gặp dữ liệu thật. Đừng hoảng vì AI.

Rủi ro nằm ở quy trình giao và nhận code. Tụi em cho code đi qua 6 lượt quét theo từng nhóm lỗ hổng và 2 lượt duyệt gồm vòng máy cùng cửa dev senior trước máy chủ. Cách làm bám mô hình phát triển phần mềm AI-Native, nơi người ra đề, kiểm soát và chịu trách nhiệm. Cấm bỏ cửa.

Soi đúng 6 lỗ hổng trước khi code lên máy chủ

Mỗi mục dưới đây có 2 phần để đội dev dùng ngay, gồm dấu hiệu nhìn thấy trong code và cách chặn để bàn giao lại cho người chịu trách nhiệm ở cửa cuối. Đội chạy đủ 6 lần kiểm, rồi lặp 2 lần bằng dữ liệu hoặc quyền khác để xem lỗi có đổi mặt hay không. Soi theo thứ tự. Đừng lướt.

AI dùng sai chỗ còn nguy hơn không dùng
Trang 5 whitepaper MONA: AI không kiểm soát là nguồn lỗ hổng, không phải công cụ.

1. Thấy tiện nên dán luôn khóa bí mật vào code

AI nhận một ví dụ có API key rồi đưa nguyên chuỗi đó vào file nguồn. Dấu hiệu là các biến mang tên API_KEY, SECRET, TOKEN được gán trực tiếp, hoặc khóa xuất hiện trong file cấu hình bị đưa lên Git. Chỉ cần 1 lần đẩy nhầm, đổi file sau đó chưa đủ vì khóa vẫn còn trong lịch sử. Dấu hiệu rất rõ.

MONA chặn ở 3 chỗ: spec cấm secret trong code, công cụ quét trước khi ghép, dev senior kiểm cách lấy khóa từ biến môi trường hoặc kho bí mật. Nếu máy quét báo đỏ, đội thu hồi khóa cũ và cấp khóa khác trước khi làm tiếp. Không vá cho qua.

// Sai: const paymentKey = "sk_live_vi_du";
// Đúng hướng: lấy biến môi trường PAYMENT_API_KEY
// Cửa kiểm: thiếu biến thì dừng khởi động, không chạy với giá trị rỗng.

2. AI gọi tên một thư viện nghe thật nhưng kho mã không có

AI từng học hàng triệu tên gói nên rất giỏi ghép ra một cái tên hợp tai. Khi gói đó chưa tồn tại, kẻ xấu có thể đăng gói trùng tên và chờ đội dev cài nhầm. Dấu hiệu là dependency mới không có trang chính chủ, không thấy lịch sử phát hành hoặc không nằm trong danh sách dự án đã duyệt.

Cách chặn gồm 3 bước: kiểm tên trên kho chính thức, đối chiếu nhà phát hành, khóa phiên bản cùng mã kiểm tra trong lockfile. Tụi em còn dùng danh sách cho phép cho phần lõi; AI muốn thêm thư viện ngoài danh sách phải nêu lý do và có người duyệt. Đừng cài theo trí nhớ máy.

3. Dữ liệu người dùng đi thẳng vào câu lệnh

Một đoạn code nối chuỗi tìm kiếm vào câu SQL, hoặc in thẳng nội dung khách nhập ra HTML, mở cửa cho SQL injection và XSS. Hai lỗ hổng này khác đường tấn công nhưng chung một lỗi gốc: dữ liệu ngoài hệ thống được tin như lệnh. Ca thử bằng tên “Nguyễn Văn A” vẫn xanh nên lỗi rất dễ lọt.

Tụi em chặn bằng truy vấn có tham số, mã hóa đầu ra theo đúng ngữ cảnh và giới hạn kiểu cùng độ dài từ spec. Dev senior chạy ít nhất 3 ca: dữ liệu hợp lệ, ký tự điều khiển, chuỗi dài ngoài giới hạn. Bài viết spec cho AI chỉ cách ghi 3 ca đó thành đáp án để máy không tự đoán.

Đầu vào luôn là dữ liệu. Đừng để nó trở thành câu lệnh.

4. Một chức năng nhỏ lại được cấp quyền quá lớn

AI hay chọn tài khoản quản trị vì code ngắn và ca thử dễ qua. Một chức năng chỉ đọc lịch hẹn lại được quyền sửa toàn bộ cơ sở dữ liệu; một tác vụ gửi thông báo lại cầm quyền xóa tài nguyên. Sai 1 nhánh khi đó kéo theo phạm vi thiệt hại rộng hơn nhiều so với việc đang làm.

MONA tách quyền theo vai trò và theo dịch vụ. Dev senior đọc cả 2 chiều: tài khoản này được làm gì, tài nguyên này cho những ai đụng. Với mỗi chức năng, đội chạy 2 tài khoản, 1 đúng quyền và 1 thiếu quyền; tài khoản thứ 2 phải bị từ chối và có log.

Cấp vừa đủ việc. Hệ thống chạm tiền hoặc dữ liệu nhạy cảm đừng giao AI tự mở quyền rồi tự duyệt.

5. Code chạy được nhưng không rõ giấy phép

AI sinh một đoạn giống mã nguồn nó từng thấy, còn đội nhận code không biết phần đó đến từ đâu và giấy phép cho phép dùng ra sao. Rủi ro tăng khi một thư viện mới kéo theo nhiều gói con; nhìn 1 dòng cài đặt chưa thấy hết chuỗi phụ thuộc phía sau.

Tụi em kiểm 3 thứ trước khi nhận: nguồn của thư viện, giấy phép, danh sách phụ thuộc đã khóa phiên bản. Đoạn code dài và khác hẳn chuẩn dự án được đánh dấu để người đọc kỹ hơn, không mặc định là “AI tự nghĩ”. Nếu không chứng minh được quyền dùng, bỏ đoạn đó và viết lại từ spec. Chạy được vẫn chưa đủ.

6. Nội dung khách nhập quay sang ra lệnh cho bot

Phần mềm có AI thường nhận tài liệu, câu chat hoặc nội dung web. Prompt injection xảy ra khi một đoạn dữ liệu được viết như mệnh lệnh, khiến bot bỏ quy tắc ban đầu, lộ nội dung hoặc gọi công cụ sai. Chỉ 1 câu nằm trong file tải lên cũng đủ thử ranh giới nếu hệ thống trộn dữ liệu với chỉ dẫn.

Cách chặn có 4 lớp: tách chỉ dẫn hệ thống khỏi dữ liệu, giới hạn công cụ bot được gọi, kiểm đầu ra trước hành động ghi hoặc xóa, lưu log toàn bộ lần gọi. Với hành động nhạy cảm, người dùng phải xác nhận ở cửa cuối. Cách dựng chatbot AI bám nguồn sẽ an toàn hơn bot được phép tự ứng biến ngoài kho.

Dữ liệu không được ra lệnh. Đội làm AI agent theo yêu cầu phải ghi ranh giới này ngay trong spec, đừng bổ sung sau lúc bot đã cầm quyền gọi hệ thống thật.

Anh chị đang có một tính năng AI chuẩn bị nối vào dữ liệu thật? Gửi spec và 1 đoạn code mẫu cho MONA. Tụi em rà đúng 6 nhóm trên, chỉ ra chỗ cần thu hồi khóa, hạ quyền hoặc thêm cửa xác nhận trước khi hệ thống được phép ghi dữ liệu.

Nhìn tận tay: 8 dòng chính sách chặn lỗi ngay từ lúc giao AI

Quét sau khi code xong vẫn cần, nhưng ghi ranh giới vào đề bài giúp AI tránh nhiều đường sai từ đầu. Đội đọc 8 dòng như 8 lần kiểm, rồi chạy 2 lần bằng tài khoản đúng quyền và thiếu quyền trước khi nhận kết quả trên môi trường thật. Copy rồi sửa.

1. Không ghi secret, token, mật khẩu hoặc khóa riêng trong code và log.
2. Chỉ dùng thư viện nằm trong danh sách cho phép, khóa rõ phiên bản.
3. Mọi đầu vào ngoài hệ thống phải kiểm kiểu, độ dài và miền giá trị.
4. Truy vấn dữ liệu dùng tham số, không nối chuỗi từ đầu vào.
5. Đầu ra HTML phải mã hóa theo đúng ngữ cảnh hiển thị.
6. Tài khoản dịch vụ chỉ có quyền đủ cho đúng chức năng.
7. Hành động ghi, xóa hoặc chuyển tiền phải qua cửa xác nhận đã chốt.
8. Mọi lỗi bảo mật phải có log, không ghi dữ liệu nhạy cảm vào log.

Chính sách 8 dòng cần đi cùng ít nhất 2 ca thử cho mỗi quyền: đúng quyền và sai quyền. Với đầu vào, thêm chuỗi rỗng cùng ký tự điều khiển. Đây là phần Spec-Driven Development làm rất tốt: bảo mật trở thành tiêu chí nghiệm thu, thay cho một lời nhắc chung chung ở cuối dự án.

Máy quét soi lỗi lặp, senior giữ cửa cuối

Máy quét đi qua 6 lượt theo 6 nhóm dấu vết rõ, từ secret và dependency tới câu truy vấn nối chuỗi; dev senior giữ 2 lượt duyệt cho quy tắc kinh doanh, quyền cùng hậu quả khi sai. Mỗi bên giữ một việc.

Giám sát AI viết code qua các cửa kiểm soát
Máy quét soi vòng đầu, người ký trước khi code chạm dữ liệu thật.
Lớp kiểmBắt tốtKhông được tự chốt
Quét tự động6 nhóm mẫu nguy hiểm, dependency và secretNghiệp vụ, mức quyền đúng, quyết định phát hành
AI rà vòng đầuĐối chiếu spec, gợi ý ca thử, tìm nhánh thiếuRanh giới dữ liệu và trách nhiệm kinh doanh
Dev seniorNgữ cảnh, kiến trúc, quyền, khả năng vận hànhKhông bỏ qua bằng câu “máy đã báo xanh”

Tại MONA, code AI viết phải qua 2 cửa trước máy chủ: vòng máy và cửa dev senior. Quy trình AI code review dùng checklist 8 điểm, trong đó bảo mật đầu vào và quyền truy cập là 2 dòng riêng. Tách ra như vậy giúp người duyệt không gộp mọi rủi ro vào một ô “security” rồi đánh dấu cho xong.

Cách MONA vá 6 lỗ này trong quy trình hằng ngày

Tụi em cho AI sinh code, viết kiểm thử và rà vòng đầu. Tụi em không cho máy tự phê duyệt đoạn code nó vừa tạo rồi đưa thẳng lên máy chủ. Mọi thay đổi đi qua 2 cửa; phần liên quan tiền, dữ liệu nhạy cảm hoặc quyền quản trị được đọc kỹ hơn trước lúc phát hành. Người ký cửa cuối.

Con chatbot đang trực web mona.media và tổng đài 1900 636 648 là một ví dụ gần. Kiến trúc RAG buộc bot tìm mẩu kiến thức có nguồn trước khi trả lời; một kho con nạp 10 file thành 70 chunk. Code của nó vẫn qua dev senior, vì bot bám nguồn giải quyết chuyện trả lời, chưa giải quyết thay chuyện quyền và vận hành.

Từ 2016, hơn 14.000 dự án cho tụi em đủ lý do để giữ cửa người. 85% khách tiếp tục đồng hành nghĩa là phần mềm còn được sửa, nâng cấp và vận hành lâu sau lần bàn giao đầu; bảo mật phải đọc được, theo dõi được, thu hồi được khi có sự cố.

Bảo mật không nằm ở 1 máy quét, nó chạy xuyên cả 4 trụ

SDD ghi ranh giới và ca nghiệm thu. AI-DLC đưa máy quét vào từng khâu. Kanban giữ thay đổi nhỏ để người đọc kịp. Agentic SDLC chỉ mở cho MVP nhỏ, không giao hệ thống chạm tiền tự chạy. Đó là 4 trụ cùng 2 cửa. Quy trình mới bảo vệ code.

Cửa kiểm bảo mật nằm ở bước 4 của timeline MONA
Bảo mật nằm sẵn trong dòng chảy dự án, không phải việc vá lúc cuối.

Whitepaper 14 trang phát hành ngày 19/08/2026 đặt bảo mật trong mô hình phát triển phần mềm AI-Native, nơi công cụ được thay nhưng ranh giới trách nhiệm giữ nguyên. Đội đang mua công cụ Spec-Driven Development cần hỏi trước: nó có giúp kiểm 8 dòng chính sách hay chỉ sinh code nhanh hơn?

3 loại hệ thống đừng cho AI tự viết rồi tự đưa lên chạy

Hệ thống chạm tiền, giữ dữ liệu nhạy cảm hoặc có quyền xóa trên diện rộng cần 3 lần kiểm theo từng nhóm rủi ro và 2 lần duyệt tách vai ở cửa cuối. Cả 3 loại đều có hậu quả vượt khỏi một màn hình lỗi. Chậm lại ở đây.

Quan điểm của tụi em đi ngược lời quảng cáo “agent tự làm hết”: biết phần nào cấm tự chạy quan trọng ngang tốc độ. Anh chị cần thử ý tưởng nhanh thì xem bộ AI agent; còn luồng chạm 3 nhóm trên, hãy quay về SDD cùng AI-DLC và thêm kiểm soát.

Câu hỏi thường gặp về bảo mật code AI

AI viết code có an toàn không?

An toàn khi có spec, quét tự động và dev senior duyệt; sau hơn 14.000 dự án, tụi em vẫn giữ 2 lần duyệt vì code do máy sinh cũng phải có người nhận trách nhiệm trước máy chủ. Không giao máy tự ký.

Whitepaper mô hình AI-Native SDLC của MONA
Khung kiểm soát đầy đủ nằm trong whitepaper 14 trang, tải miễn phí.

Bảo mật code AI cần xử lý lỗ hổng nào trước?

Khóa bí mật lộ ra phải thu hồi ngay, rồi kiểm đầu vào và quyền truy cập. Ba nhóm này mở đường trực tiếp vào hệ thống. Sau đó rà thư viện, giấy phép và prompt injection theo đủ 6 mục.

Máy quét bảo mật có thay dev senior được không?

Không. Máy quét bắt mẫu xấu lặp lại; dev senior quyết quyền nào vừa đủ, quy tắc nào ảnh hưởng tiền và ca nào cấm phát hành. Quy trình cần đủ 2 lớp.

Prompt injection có phải lỗi của mô hình AI không?

Nó là rủi ro của cách hệ thống trộn dữ liệu với chỉ dẫn và cấp công cụ. Tách 2 lớp, giới hạn hành động, yêu cầu xác nhận cho thao tác nhạy cảm và giữ log giúp chặn đường tấn công.

Khóa 6 lỗ hổng trước khi nối code AI vào dữ liệu thật

Bảo mật code AI bắt đầu bằng 6 lần kiểm: secret nằm đâu, thư viện có thật không, đầu vào đi đâu, quyền rộng cỡ nào, giấy phép ra sao, dữ liệu có ra lệnh cho bot được không. Ghi 8 dòng chính sách vào spec và giữ 2 lần duyệt. Đủ rồi mới nối thật.

Anh chị đang chuẩn bị đưa một chức năng AI vào phần mềm viết riêng hoặc chương trình chuyển đổi AI cho doanh nghiệp, gọi 1900 636 648. Tụi em sẽ rà đúng 6 nhóm trong bài và trả danh sách việc phải chặn trước production, không dùng lời hứa “an toàn cao” thay cho bằng chứng.

Đưa 1 đoạn code qua đủ 6 câu hỏi trước khi đưa cả hệ thống lên mạng

Nếu còn secret trong file, thư viện chưa rõ nguồn hoặc quyền chưa tách, tụi em chỉ đúng dòng cần sửa và cửa cần thêm trước khi anh chị cho phép chạy thật.

Rà bảo mật code AI trước khi tích hợp

MONA có podcast — nghe thay vì đọcCác tập về AI, tự động hoá & SEO cho doanh nghiệp Việt
Nghe ngay
Về tác giả

Founder Phần mềm MONA AI

Người đứng sau các sản phẩm phần mềm AI của MONA, đồng thời phụ trách mảng SEO tổng thể giúp hàng nghìn website lên top bền vững. Nhân trực tiếp nghiên cứu cách Google và các công cụ AI như ChatGPT, Gemini đọc – xếp hạng nội dung, rồi biến thành quy trình SEO đo được cho doanh nghiệp.

Lượt xem 174
Đánh giá bài viết 4,7/5 · 22 đánh giá

Dịch vụ thiết kế
website chuyên nghiệp

Sở hữu website với giao diện đẹp, độc quyền 100%, bảo hành trọn đời với khả năng
mở rộng tính năng linh hoạt theo sự phát triển doanh nghiệp ngay hôm nay!

Liên hệ Mona

    MONA có riêng một Người "Bạn Thân" cho bạn - Người Account sẽ đồng hành, hỗ trợ, hướng dẫn, đặt đồ ăn cho bạn mãi mãi, từ đây về sau!
    MONA cam kết tuyệt đối không sử dụng thông tin của bạn để bán hoặc SPAM
    Đội MONA tư vấn hệ thống quản lý giáo dục trực tuyến
    Hỏi đáp giáo dục 4.0
    Tạo cuộc hẹn miễn phí với MONA để giải đáp và tư vấn mọi thắc mắc về giải pháp số hoá ngành giáo dục
    Thời lượng cuộc hẹn
    45 Phút
    Ngày và giờ
    Thứ 2, ngày 25 tháng 12, 2023
    [9:30 - 10:15]

      Chọn ngày và giờ
      Khung giờ
      Quay lại
      Hãy cho MONA biết bạn là ai
      0:00