Đến nội dung chính
Phạm Nam

Tìm kiếm

Nhập từ khoá để tìm trong các bài viết.

Quay lại
vi

OpenAI Codex Security: quét, vá và kiểm chứng lỗ hổng

Codex Security của OpenAI tìm, xác thực và vá lỗ hổng trong code bằng agent — quét repo, vá tự động, kiểm chứng lại bản vá và chặn PR theo severity trong CI.

10 phút đọc—

Minh họa OpenAI Codex Security quét mã nguồn, xác thực lỗ hổng, vá và kiểm chứng lại bản vá trong CI

OpenAI Codex Security: quét, vá và kiểm chứng lỗ hổng

Bạn chạy scanner lên repo và nhận về 200 findings. Bao nhiêu cái là thật? Cái nào khai thác được? Vá xong rồi, làm sao biết đã hết? Đó là ba câu hỏi mà hầu hết scanner truyền thống bỏ lại cho bạn — và là ba câu Codex Security của OpenAI trả lời ngay trong một vòng làm việc: quét, xác thực, vá, rồi kiểm chứng lại chính bản vá đó.

Codex Security là gì?

Codex Security là CLI và TypeScript SDK của OpenAI để tìm, điều tra và vá lỗ hổng bảo mật trong code. Repo openai/codex-security dùng giấy phép Apache-2.0, xuất hiện trên GitHub từ tháng 7/2026 và tính đến chiều 12/11/2026 đã có hơn 12.000 sao. Ngày 12/11, nó có tên trong GitHub Trending cùng nhóm với Cloudflare security-audit-skill, và bài đăng trên Hacker News hồi cuối tháng 7 thu về 598 điểm cùng 229 bình luận.

Công cụ có bốn mặt: plugin cho Codex, CLI cs, TypeScript SDK và GitHub Action. Điểm khác biệt nằm ngay trong mô tả của dự án: không chỉ tìm lỗ hổng mà còn xác thực từng finding, tạo bản vá và kiểm chứng lại bản vá đó. Nói cách khác, nó làm trọn vòng đời của một finding thay vì dừng ở bước liệt kê.

Cần phân biệt rõ với bài Cloudflare Security Audit Skill đã đăng ngày 25/10: Cloudflare là skill markdown sáu pha chạy trên agent của chính bạn — agent tìm lỗi không bao giờ là agent xác nhận lỗi — và nó không bao giờ sửa code. Codex Security là sản phẩm đóng gói của OpenAI: có CLI, SDK, Action, và nó vá code rồi tự kiểm chứng lại bản vá. Cùng triết lý tách người đề xuất khỏi người phán xét, nhưng một bên là skill tự vận hành, một bên là sản phẩm khép kín.

Chuỗi bảo mật trên blog đang đi đúng hướng này: Project Glasswing cho thấy AI tìm ra 37.966 lỗi mà chỉ 217 được sửa — nút thắt không nằm ở khâu tìm mà ở khâu vá và xác minh. Codex Security tấn công đúng nút thắt đó.

Vòng làm việc: quét, xác thực, vá, kiểm chứng

Một finding trong Codex Security đi qua bốn bước, mỗi bước là một workflow riêng:

flowchart TD
    User["Bạn / CI<br/>yêu cầu quét repo"]
    Scan["$security-scan<br/>cs scan . — quét Standard"]
    Findings["Danh sách findings<br/>ứng viên"]
    Triage["$triage-finding<br/>cs validate — xác thực từng finding<br/>theo bằng chứng trong code"]
    Patch["$fix-finding<br/>cs patch — tạo bản vá"]
    Verify["$verify-fix<br/>cs verify-fix — kiểm chứng bản vá"]
    Verdict["Kết quả: fixed / still_vulnerable / inconclusive"]
    Report["Báo cáo + SARIF / JSON / CSV<br/>chặn PR theo severity"]
    Deep["$deep-security-scan<br/>cs scan . --mode deep<br/>quét lại, loại trùng"]

    User --> Scan
    Scan --> Findings
    Findings --> Triage
    Triage --> Patch
    Patch --> Verify
    Verify --> Verdict
    Verdict --> Report
    Scan -.-> Deep
    Deep --> Findings

Quét Standard (cs scan .) là mặc định: agent đọc repo, tìm lỗ hổng, lưu báo cáo và danh sách findings. Quét Deep (cs scan . --mode deep) lặp lại quét Standard nhiều lần và loại trùng. Quét theo diff (cs scan . --diff origin/main) chỉ xem thay đổi từ một base revision tới HEAD, hợp với rà pull request.

Bước xác thực là chỗ công cụ khác scanner thường: $triage-finding đối chiếu từng finding với code nguồn, trả về kết luận kèm bằng chứng còn thiếu; từ terminal, cs validate findings.json làm tương tự với findings có sẵn. Bước vá ($fix-finding, cs patch --scan SCAN_ID) tạo bản vá cho một finding. Bước kiểm chứng ($verify-fix, cs verify-fix --scan SCAN_ID) trả về một trong ba kết quả: fixed, still_vulnerable hoặc inconclusive — kèm bằng chứng, không có kết quả mập mờ kiểu “đã xử lý”.

Hai workflow phụ đáng chú ý. $check-skills rà một agent skill trước khi bạn cài, trả về PASS, REVIEW, BLOCK hoặc INCOMPLETE — cùng ý tưởng với bài SkillSpector của NVIDIA nhưng tích hợp sẵn trong bộ công cụ. $resolve-dependency-alert điều tra một alert dependency đã có: nó truy vết dependency và đề xuất nâng cấp hoặc bác bỏ khi bằng chứng cho phép. Lưu ý: workflow này xử lý alert có sẵn, không phải tự quét dependency để tìm CVE mới — muốn phát hiện CVE dependency vẫn cần scanner chuyên trách như Dependabot hay Snyk đưa alert vào.

Ngoài quét, công cụ soạn thảo SECURITY.md (cs policy .), lưu threat model (cs export --scan SCAN_ID --artifact threat-model), nhập kết quả scanner bên thứ ba và theo dõi findings trong Linear, Jira hoặc GitHub. Lịch sử quét lưu cục bộ, có chống trùng. Lưu ý: lệnh serve và dashboard web cục bộ đã bị gỡ.

Cài đặt và quét đầu tiên

Yêu cầu: Node.js 22.13.0 trở lên trong nhánh 22.x, hoặc 24.x / 26.x, và Python 3.10 trở lên (Python 3.10 cần thêm tomli). Cài và quét lần đầu chỉ ba lệnh:

npm install --global @openai/codex-security
cs login
cs scan .

Quét xong, mở file Markdown ở đường dẫn REPORT mà terminal in ra; cs scans show tìm lại bản quét hoàn thành mới nhất. cs và codex-security là một — tên ngắn trùng lệnh khác thì dùng tên dài; npm báo EEXIST thì dùng npx @openai/codex-security thay cho cs.

Các tùy chọn quét đáng nhớ:

# Quét một số đường dẫn.
cs scan . --path src --path tests

# Quét thay đổi đã commit từ origin/main tới HEAD.
cs scan . --diff origin/main

# Quét sâu toàn repo.
cs scan . --mode deep

# Giới hạn thời gian điều tra khoảng 15 phút.
cs scan . --max-time 15

Chi phí phải chốt trước khi quét repo lớn. Codex Security có cơ chế giới hạn chi phí: --max-cost trên CLI hoặc maxCostUsd trong SDK — muốn có hiệu lực thì chọn model có bảng giá tích hợp sẵn. scan --dry-run cho thấy giới hạn đã chốt; tài liệu nói thẳng request đang chạy có thể vượt giới hạn. Workflow mẫu cho GitHub Action dùng mức giới hạn ước tính 5 USD mỗi lần quét — đó là cấu hình ví dụ, không phải chi phí thực đo.

Mã thoát của lệnh quét tách bạch ba trạng thái, tiện cho CI: 0 là sạch, 1 là có findings vượt ngưỡng --fail-on-severity, 2 là lỗi thực thi. Đây là chi tiết nhỏ nhưng quan trọng — CI của bạn chỉ cần đọc mã thoát là biết chặn hay cho qua.

Model mặc định của bản quét, theo tài liệu CLI chính thức, là gpt-5.6-sol với effort xhigh, đổi được bằng --model và --effort. Tài liệu cũng nhắc tới GPT-6.1 Sol, GPT-6.1 Terra và GPT-6 Luna trong phần giá Vertex AI — quét bằng các model này cần có bảng giá công bố thì --max-cost mới áp dụng được. GPT-6.1 Sol là model thật, đã nằm trong tài liệu chính thức của OpenAI, khớp với những gì bài OpenAI rời Cursor sáng nay xác minh.

Đưa vào CI: chặn PR theo severity

Quét thủ công chỉ là bước đầu — giá trị thực nằm ở CI, và dự án chuẩn bị sẵn đường này. Workflow mẫu quét hàng tuần trên runner Ubuntu của GitHub làm ba việc:

  1. Thêm API key của OpenAI làm repository secret CODEX_SECURITY_API_KEY.
  2. Copy workflow mẫu vào .github/workflows/codex-security.yml, thay REPLACE_WITH_REVIEWED_COMMIT bằng SHA commit phân phối đã rà soát từ một release của Action.
  3. Chạy thử từ tab Actions trước lịch chạy định kỳ.

Workflow mẫu báo cáo findings mà không làm fail job. Muốn chặn thì đặt ngưỡng severity, kiểm tra PR hoặc yêu cầu runner riêng — tài liệu Action hướng dẫn đầy đủ. Với máy không giao diện, dùng device login hoặc SSH login; trong CI, đặt OPENAI_API_KEY hoặc CODEX_API_KEY vào biến môi trường của tiến trình quét.

Đầu ra chuẩn cho pipeline: SARIF, JSON và CSV — SARIF để GitHub code scanning hiển thị findings ngay trong giao diện repo. Kết hợp mã thoát theo severity, bạn có cổng chặn PR thật: finding nghiêm trọng thì PR không merge được, finding nhẹ chỉ ghi vào báo cáo. Quét hàng loạt nhiều repo qua Docker Compose, giữ kết quả và đăng nhập giữa các lần chạy.

Trước và sau: scanner liệt kê, Codex Security khép vòng

Khía cạnhScanner truyền thốngCodex Security
Tìm lỗ hổngLiệt kê findingsQuét Standard, Deep, theo diff
Xác thực findingBạn tự đọc và tự loại$triage-finding / cs validate, đối chiếu code nguồn
VáBạn tự viết patch$fix-finding / cs patch tạo bản vá
Kiểm chứng bản váBạn tự kiểm tra lại$verify-fix trả fixed / still_vulnerable / inconclusive
Chặn PR trong CITùy tích hợpMã thoát 0/1/2 + --fail-on-severity, SARIF
Giới hạn chi phíKhông có khái niệm này--max-cost / maxCostUsd, dry-run xem trước giới hạn
Theo dõi findingsFile báo cáo rời rạcLưu cục bộ, chống trùng, Linear/Jira/GitHub

Bảng này so sánh tính năng đã xác minh trong tài liệu chính thức, không phải benchmark hiệu quả — tài liệu chính thức không công bố số đo hiệu quả nào. Các con số lan truyền từ nguồn thứ cấp (tỷ lệ phát hiện, chi phí quét, false positive) không đối chiếu được nên bài này cắt hết.

Ba giới hạn phải biết trước khi dùng

Thứ nhất, không phải ai cũng quét được ngay. Theo trang docs, quét bằng OpenAI inference cần quyền truy cập Codex Security. Một số yêu cầu bảo mật và findings được bảo vệ cần Trusted Access for Cyber; tài khoản có quyền Daybreak thì bật opt-in Daybreak để chọn chương trình truy cập.

Thứ hai, code rời khỏi máy. Quét chạy trên hạ tầng suy luận của OpenAI — code của bạn được gửi đi để phân tích, theo điều khoản OpenAI API. Repo chứa bí mật thương mại hay dữ liệu nhạy cảm thì cân nhắc: dùng provider khác (Bedrock dùng credential AWS, không cần đăng nhập OpenAI; OpenRouter, Fireworks AI, Cheaper Inference, Vertex AI) hoặc giới hạn phạm vi bằng --path.

Thứ ba, công cụ còn pre-1.0 và không thay thế mọi scanner. Phiên bản mới nhất là v0.10.0, phát hành đúng ngày 12/11/2026. Nó quét code trong repo, không tự quét dependency để tìm CVE mới — workflow $resolve-dependency-alert chỉ điều tra alert đã có. Muốn phát hiện CVE dependency vẫn cần Dependabot hoặc Snyk, rồi đưa alert vào Codex Security để điều tra và vá. Như mọi công cụ pre-1.0, giao diện lệnh có thể đổi giữa các bản — ghim phiên bản trong CI thay vì cài latest.

Khi nào dùng, khi nào chưa

Codex Security hợp nhất khi team bạn đã dùng Codex và muốn đưa quét bảo mật vào CI kèm vá và theo dõi ticket — đúng khung bài này. Nó cũng hợp khi bạn mệt vì scanner cũ báo quá nhiều finding không biết thật giả.

Chưa hợp khi repo nhỏ và bạn chỉ cần một lần quét nhanh — cài đặt, đăng nhập, kiểm tra quyền truy cập tốn nhiều thời gian hơn chính lần quét. Chưa hợp khi code không được phép rời khỏi máy và bạn không có provider thay thế. Và chưa hợp khi team chưa có quy trình xử lý findings: công cụ trả về bản vá và kết quả kiểm chứng, nhưng ai review patch và quyết định merge vẫn là việc của team.

Theo mình, điểm đáng chú ý nhất không phải “AI quét code” mà là vòng khép kín: một finding chỉ xong khi bản vá của nó trả về fixed kèm bằng chứng. Đó cũng là bài học từ Glasswing: tìm ra lỗi thì dễ, sửa xong và chứng minh đã sửa mới khó.

Bài học rút ra

  1. Scanner chỉ liệt kê findings thì chưa xong việc — vòng xác thực, vá và kiểm chứng bản vá mới là phần quyết định.
  2. Tách người đề xuất khỏi người phán xét: agent tìm lỗi không nên là agent xác nhận lỗi, dù là skill markdown hay sản phẩm đóng gói.
  3. Chốt giới hạn chi phí (--max-cost) trước khi quét repo lớn — request đang chạy có thể vượt giới hạn, dry-run cho thấy mức đã chốt.
  4. Mã thoát 0/1/2 và ngưỡng severity biến quét bảo mật thành cổng chặn PR thật, thay vì một báo cáo không ai đọc.
  5. Kiểm tra quyền truy cập (Codex Security access, Trusted Access for Cyber, Daybreak) trước khi gắn vào CI cho cả team.
  6. Công cụ quét code không thay thế scanner dependency — alert dependency vẫn cần Dependabot/Snyk, Codex Security chỉ điều tra và vá theo alert đó.

Kết luận

  • Codex Security khép kín vòng đời finding: quét → xác thực → vá → kiểm chứng lại, với kết quả fixed / still_vulnerable / inconclusive có bằng chứng.
  • Đưa vào CI được ngay: mã thoát theo severity, SARIF, workflow mẫu với giới hạn chi phí 5 USD mỗi lần quét.
  • Ba giới hạn nhớ kỹ: cần quyền truy cập Codex Security, code rời khỏi máy khi quét qua OpenAI inference, và công cụ còn pre-1.0 (v0.10.0), không tự quét dependency.

Bước tiếp theo: cài CLI, chạy cs scan . trên một repo nhỏ, đọc báo cáo và một finding đã xác thực — rồi mới quyết định có gắn vào CI không.

Phạm vi xác minh

Ngày kiểm tra: 12/11/2026 (~19:00, giờ Việt Nam). Đã xác minh từ README, tài liệu CLI và tài liệu agent workflows chính thức của repo openai/codex-security (12.053 sao, 955 fork, Apache-2.0, v0.10.0 phát hành 12/11/2026, lệnh cài/quét, yêu cầu Node.js/Python, model mặc định gpt-5.6-sol với effort xhigh, giới hạn chi phí, mã thoát, workflow mẫu GitHub Action) cùng bài tổng hợp trending ngày 12/11 (Cloudflare skill +11.507 sao/tuần, tổng 70.534; codex-security 11.921 sao lúc bài đăng; Hacker News 598 điểm, 229 bình luận ngày 28/7).

Số 5 USD mỗi lần quét là mức giới hạn cấu hình ví dụ trong workflow mẫu, không phải chi phí thực đo. Các con số hiệu quả từ nguồn thứ cấp không đối chiếu được với tài liệu chính thức nên đã cắt khỏi bài. Bài này không cài đặt hay chạy thử phần mềm nào.

Tham khảo


Bài viết liên quan

Bình luận

Bình luận được duyệt trước khi hiển thị.

Đang tải bình luận…

Để lại bình luận