Một số report security gần đây đưa ra con số kiểu “gần một nửa AI-generated code có lỗi security”. Con số này rất dễ bị dùng sai: hoặc để dọa người khác bỏ hẳn AI coding, hoặc để cãi nhau xem benchmark có công bằng không.

Cả hai hướng đó đều né việc quan trọng hơn.

Tôi đọc nó như một tín hiệu workflow: nếu xác suất lỗi security không nhỏ, thì vibe coding cần gate trước khi chạm production. Không phải dừng vibe coding. Không phải tin mù. Đặt gate.

Prototype bar khác production bar

Một prototype local có thể chấp nhận nhiều thứ:

  • Mock data.
  • Fake auth.
  • No deploy.
  • No payment.
  • No customer data.
  • No public link.

Production không được như vậy.

Vì vậy câu hỏi không phải “AI code có bug không?” Code nào cũng có bug. Câu hỏi là:

App này đang ở bar nào?

Nếu chỉ là prototype để test idea, gate nhẹ. Nếu có user thật, data thật, tiền thật, public URL, gate phải nặng hơn.

Gate tối thiểu cho app có dữ liệu thật

Trước khi đưa vibe-coded app vào dữ liệu thật, cần ít nhất:

  1. Secret scan và dependency scan, hai cái này chạy tự động được.
  2. Build/lint pass. Không merge code chưa build được.
  3. Auth và ownership test thủ công, ít nhất account A thử đọc data account B.
  4. Environment separation: mock data không được đi vào production path.
  5. Rollback path rõ ràng. Git tag hoặc deploy history đủ để quay lại.
  6. Human diff review trước khi ship, và source trail cho mọi claim kỹ thuật quan trọng.

Không phải công ty nhỏ nào cũng có enterprise AppSec pipeline. Nhưng các gate này vẫn có phiên bản nhỏ.

Ví dụ secret scan có thể bắt đầu bằng git diff --cached và tool scan đơn giản. Auth test có thể bắt đầu bằng account A/account B. Rollback có thể bắt đầu bằng Git tag hoặc deploy history.

Security scan không thay thế review

SAST và dependency scan có ích. Nhưng chúng không bắt hết logic bug.

Scanner có thể bắt:

  • Hardcoded secret.
  • Dependency CVE.
  • SQL injection pattern.
  • Dangerous eval.
  • Missing header.

Scanner khó bắt:

  • User A đọc data user B.
  • Payment state sai.
  • Tenant boundary thiếu.
  • Business rule ngược.
  • Admin export public.
  • Fallback data che API lỗi.

Vì vậy gate cần cả tool và behavior test.

Prompt để tạo security gate

Trước khi nhờ agent sửa, nhờ nó lập gate:

Create a production readiness checklist for this app.
Separate checks into:
- Automated command
- Manual browser test
- Code review item
- Platform configuration
- Out of scope for prototype
Do not change files yet.

Sau đó chọn từng check làm task nhỏ.

Khi agent chạy xong:

Report each checklist item as pass, fail, unknown, or not applicable.
Unknown is allowed. Do not guess.

Unknown tốt hơn claim sai.

Đừng để benchmark thành cái cớ không học

Một số người sẽ dùng số liệu security để nói: “Thấy chưa, AI code vô dụng.” Không đúng.

AI vẫn rất hữu ích: prototype flow, generate test case, giải thích code lạ, draft validation, viết scanner config, so diff với requirement. Tất cả đều là việc cần người đọc kết quả, không phải ship thẳng.

Nhưng AI hữu ích nhất khi nằm trong workflow có gate. Không phải khi nó vừa build vừa tự certify sản phẩm.

Chốt lại

Phần khó nhất không phải là chạy thêm một tool scan. Phần khó nhất là thừa nhận rằng người merge có thể chưa thật sự hiểu code vừa được viết. Với vibe coding, nên coi đó là giả định vận hành cho tới khi review chứng minh ngược lại.

Kết luận thực dụng: đừng publish mà không có gate. Vibe coding càng nhanh, gate càng phải đến sớm.

Tham khảo