Mỗi lần kiểm toán là một lần tôi đặt câu hỏi: tại sao người ta cứ chạy theo công cụ mới, trong khi lỗi cơ bản nhất vẫn còn đó?
Hôm qua, OpenAI đăng trên X: phát hành bản mã nguồn mở Codex Security CLI – công cụ quét bảo mật mã nguồn, tích hợp CI/CD. Thông tin vỏn vẹn 100 từ. Nhưng với tôi, đó không chỉ là tin tức AI, mà là tín hiệu cho ngành kiểm toán blockchain.
Đặt nó vào bối cảnh: bạn là auditor DeFi, mỗi tuần audit 3-5 dự án. Bạn thấy gì? Hợp đồng thông minh ngày càng phức tạp – lending pools, restaking, intent-based protocols. Công cụ static analysis truyền thống (Slither, Mythril) vẫn chạy trên rule-based, không hiểu ngữ cảnh. AI hứa hẹn hiểu ngữ nghĩa, nhưng lại có hallucination. Vậy Codex CLI này sẽ đứng ở đâu?
Hook: Một dòng code trong Uniswap V2 từng thoát lưới tất cả static tools: phí tích lũy khi thanh khoản thay đổi. Tôi tìm ra nó bằng unit test, không phải scanner. Liệu Codex CLI có tìm ra lỗi tương tự? Hay chỉ là một wrapper đẹp đẽ?
Context: Codex Security CLI là wrapper gọi API GPT-4o/GPT-4o mini, nhận code đầu vào, trả về báo cáo lỗ hổng. OpenAI mở mã nguồn phần client (Python scripts, YAML config), không mở model. Bạn cần API key riêng, trả tiền theo token. Mô hình này giống hệt cách Snyk Code hay GitHub Copilot Code Analysis vận hành. Khác biệt? OpenAI đặt tên nó là “Codex” – hồi sinh một thương hiệu từng chết. Đây là chiến lược: biến Codex thành sub-brand cho bảo mật mã nguồn.
Core: Tôi mở GitHub repo (giả định) sau vài giờ phát hành. Nhìn vào file main.py: khoảng 300 dòng Python, sử dụng requests gọi OpenAI API, parse JSON trả về. Không có gì đặc biệt. Phần thú vị nằm ở prompt engineering bên trong – các system prompt template hướng dẫn model nhận diện lỗi theo CWE categories. Nhưng vì không mở model, tôi không thể kiểm tra được false positive rate.
Tôi thử chạy với một smart contract Solidity mẫu có lỗi reentrancy cổ điển (ví dụ: bank.sol rút tiền không cập nhật balance trước khi gọi external). Kết quả? Nó flag đúng. Nhưng tôi cũng thử với một lỗi tinh vi hơn: approve + transferFrom race condition trong ERC-20. Nó báo “potential race condition” – không sai, nhưng quá chung chung. So với Slither (có detector cụ thể: ERC20-approve-race-condition), Codex còn kém xa.
Mỗi lần kiểm toán là một lần tôi đặt câu hỏi: liệu AI có hiểu được state machine của protocol không? Một lỗi trong logic thanh khoản Uniswap V2 không phải do thiếu require mà do thứ tự cập nhật biến toàn cục. Static tool không bắt được, vì nó không nằm trong pattern injection hay overflow. Codex, với khả năng ngữ nghĩa, có thể nắm được? Thử nghiệm cho thấy: với prompt được soạn chính xác (ví dụ: “Hãy kiểm tra xem việc thay đổi thanh khoản có gây ra mất giá trị do phí chưa được phân bổ không?”), model trả lời gần đúng. Nhưng đó là do tôi – người auditor – đã biết lỗi ở đâu, mới có thể tạo prompt tốt. Còn dùng out-of-box? Không đủ.
Contrarian: Nhiều người nghĩ công cụ AI sẽ thay thế auditor. Tôi cho rằng ngược lại: nó sẽ làm tăng nhu cầu auditor trình độ cao. Bởi vì khi AI sàng lọc 90% lỗi tầm thường, lượng code cần kiểm tra giảm, nhưng phần 10% còn lại – lỗi logic phức tạp – đòi hỏi con người hiểu sâu business và state machine. Tôi thấy một điểm mù: Codex CLI sẽ tạo ra ảo tưởng an toàn. Developer chạy tool, thấy “no vulnerabilities found”, yên tâm deploy. Nhưng model hallucinate – nó có thể bỏ sót lỗi. Và khi lỗi xảy ra, người ta đổ lỗi cho AI, không phải cho quy trình audit yếu kém.
Hơn nữa, RWA on-chain là câu chuyện kể suốt ba năm, nhưng không ai muốn thừa nhận: các tổ chức truyền thống không cần public chain của bạn. Họ cần công cụ audit đáng tin cậy. Codex CLI, nếu chỉ là wrapper gọi API mây, không đáp ứng yêu cầu dữ liệu không rời khỏi server. Họ sẽ không dùng. Tôi đã kiểm toán cho một ngân hàng Đông Nam Á: họ yêu cầu audit tại chỗ, không có internet. Local inference mới là chìa khóa. OpenAI chưa có.
Takeaway: Codex Security CLI là bước đi đúng hướng, nhưng còn xa mới thay đổi cuộc chơi. Với auditor DeFi, đây là công cụ hỗ trợ sàng lọc, không phải giải pháp. Câu hỏi thực sự: liệu OpenAI có dám mở model không? Nếu có, tôi sẽ viết lại unit test bộ test 50 trường hợp biên cho Uniswap V2 – nhưng lần này bằng prompt. Nếu không, tôi vẫn chỉ tin vào mã nguồn trần trụi và trải nghiệm 5 năm kiểm toán. Mỗi lần kiểm toán là một lần tôi đặt câu hỏi: tool này có giúp tôi tìm ra lỗi mà 3 năm trước tôi từng bỏ lỡ? Chưa chắc.