Kiểm toán mã nguồn
Kiểm toán mã nguồn là tính năng thử nghiệm.
Kiểm toán mã nguồn là một đợt đánh giá bảo mật dự án, chạy thông qua tác nhân lập trình trên máy của bạn. Nhấp chuột phải vào một dự án trong thanh bên, chọn “Thử nghiệm” → “Kiểm toán mã nguồn”, rồi chọn “Tạo cuộc kiểm toán”. Trong “Trợ lý trên máy”, chọn “Codex” hoặc “Claude”; sau đó chọn “Mô hình”, “Mức độ suy luận” và “Phạm vi”, rồi nhấp “Bắt đầu kiểm toán”. Trang báo cáo hiển thị giai đoạn hiện tại của lần quét. “Phiên trợ lý” hiển thị nguyên văn các lệnh gọi công cụ, phần phân tích và các yêu cầu cấp quyền đang chờ của tác nhân; hãy trả lời các yêu cầu tại đó để cuộc kiểm toán tiếp tục. Báo cáo xuất hiện khi Codex Security niêm phong kết quả.
Cuộc kiểm toán chạy trên máy chứa dự án và dùng CLI đã cài của tác nhân được chọn, với thông tin đăng nhập, cấu hình và cách xử lý quyền hiện có của CLI đó (“Sử dụng thông tin đăng nhập và cấu hình của trợ lý trên máy. Không cần cấu hình API mô hình riêng.”). VelaTerm chỉ thêm một máy chủ MCP Codex Security cho riêng phiên kiểm toán; các máy chủ MCP khác của bạn được giữ nguyên, và bản thân VelaTerm không gọi API mô hình. CLI cần được cài đặt, đăng nhập sẵn và vẫn còn trong giới hạn của tài khoản. Cấu hình riêng của CLI có thể chọn nhà cung cấp mô hình; VelaTerm không thay đổi cấu hình này.
Mục “Kiểm toán mã nguồn” cũng xuất hiện với bộ sưu tập. Không thể kiểm toán bộ sưu tập không có thư mục gốc.
Mô hình và mức suy luận
Danh sách mô hình giống với danh sách mà hộp thoại tạo phiên mới dùng cho tác nhân đó và có tính đến các tham số khởi chạy mặc định của tác nhân, nên danh sách khớp với cách cuộc kiểm toán sẽ chạy. “Mô hình mặc định” giữ lựa chọn riêng của tác nhân. “Mức độ suy luận” khả dụng khi bạn chọn một mô hình có các mức suy luận; “Tự động” giữ lựa chọn riêng của tác nhân. Nếu không tải được danh sách, nút thử lại sẽ xuất hiện. Máy chủ kiểm tra các tổ hợp được chọn cụ thể, và cuộc kiểm toán lưu các giá trị đã chọn vào lịch sử và cho các lần chạy sau. Việc một mô hình có trong danh sách không có nghĩa là tài khoản của bạn được phép dùng mô hình đó. Lỗi từ nhà cung cấp, kể cả khi đã hết hạn mức sử dụng, sẽ khiến cuộc kiểm toán kết thúc ở trạng thái thất bại.
Các cuộc kiểm toán mới yêu cầu viết phần phân tích bằng ngôn ngữ giao diện. Các trường giao thức, đường dẫn, định danh và bằng chứng mã nguồn được trích dẫn được giữ nguyên.
Tích hợp Codex Security
VelaTerm đóng gói kèm bản phát hành công khai theo giấy phép Apache-2.0 @openai/codex-security@0.1.26, có manifest plugin phiên bản 0.1.95; trang tạo cuộc kiểm toán hiển thị cả hai phiên bản. Các kỹ năng, tài liệu tham chiếu, schema, script, bộ chạy và giấy phép gốc đều được đưa vào, và UPSTREAM.json ghi lại nguồn gói, giá trị toàn vẹn và giá trị băm của từng tệp.
Mỗi cuộc kiểm toán mới đăng ký một lần quét thực trên workbench của dự án gốc (upstream). Tác nhân đọc kỹ năng đầu vào được đóng gói kèm và dùng các công cụ MCP cùng định dạng kết quả của upstream. Các bản ghi từ quy trình xử lý theo lô được triển khai độc lập trước đây vẫn đọc được và được gắn nhãn “Kiểm toán theo quy trình cũ · Bản ghi này không sử dụng quy trình Codex Security.”
Cả hai tác nhân dùng cùng một quy trình của upstream. SDK TypeScript công khai điều khiển bộ chạy Codex và không cung cấp trình thực thi cho Claude Code, nên VelaTerm tích hợp thông qua máy chủ MCP và workbench cục bộ của upstream. Khả năng hỗ trợ Claude Code là một lớp chuyển đổi (adapter) của VelaTerm, không phải là cam kết hỗ trợ chính thức Claude từ phía upstream.
Bộ chạy cần Node.js trên PATH, với phiên bản được gói upstream hỗ trợ, và Python 3.10 trở lên; Python 3.10 còn cần gói tomli, còn từ Python 3.11 trở đi, gói này được thay bằng tomllib tích hợp sẵn. VelaTerm kiểm tra các tài nguyên được đóng gói kèm và giải nén chúng vào thư mục dữ liệu của VelaTerm. VelaTerm không cài chúng vào cấu hình Codex hay Claude của bạn.
Phạm vi và quy trình
- Toàn bộ kho mã chạy lần quét Standard của upstream trên một bản chụp cố định của mục tiêu và chính sách bảo mật của kho mã.
- Thư mục hoặc tệp chạy Standard với một “Đường dẫn tương đối” chính xác. Các tệp mã nguồn khác có thể được đọc để hiểu một chuỗi lời gọi, nhưng điều đó không có nghĩa là những phần đó đã được kiểm toán đầy đủ.
- Thay đổi trong cây làm việc chạy kỹ năng diff của upstream trên một tập thay đổi Git cố định. Phạm vi này bao gồm các thay đổi đã stage, chưa stage và chưa theo dõi mà bộ xác định mục tiêu của upstream hỗ trợ, đồng thời giữ bằng chứng gốc cho các tệp đã bị xóa.
Standard đọc skills/security-scan/SKILL.md và references/core-scan.md. Quy trình này thực hiện kiểm tra trước khi chạy, phân tích độc lập về hiện trạng ban đầu và kiến trúc, điều tra bám theo mã nguồn, các điểm kiểm tra cho phát hiện cần xác minh, rà soát bằng chứng phản bác, xác minh và đối chiếu phạm vi đã đánh giá. Các worker độc lập được dùng khi tác nhân hỗ trợ; nếu không, phương án tuần tự dự phòng của upstream được áp dụng, và phải nêu rõ các hạn chế của phương án này. Riêng thiết lập về số lượng worker không phải là bằng chứng cho thấy các worker độc lập đã thực sự chạy.
Kiểm toán cây làm việc đọc skills/security-diff-scan/SKILL.md. Quy trình này cố định mục tiêu, xây dựng mô hình mối đe dọa, chuẩn bị và liệt kê các mục cần rà soát, tìm các phát hiện cần xác minh, xác minh chúng, phân tích đường tấn công và gửi bản nháp kết quả để hoàn tất. Chỉ rà soát nội dung hiện tại của các tệp đã thay đổi thì không thay thế được quy trình này.
Workbench của upstream chỉ chấp nhận thư mục làm phạm vi. Để việc chọn tệp vẫn hoạt động, bộ chạy đã cài áp dụng hai bản vá nhỏ có ghi lại giá trị băm: một tệp có sẵn được phép làm phạm vi và được tính là một mục trong bản chụp. Các tệp gốc được đóng gói kèm không bị thay đổi, và ADAPTER.json đã cài ghi lại cả giá trị băm gốc lẫn giá trị băm sau khi điều chỉnh. Việc chọn một tệp không bao giờ biến thành quét toàn bộ thư mục chứa tệp đó.
Chỉ dẫn kiểm toán cấm sửa mã nguồn, sửa lỗi, công bố và thay đổi cấu hình của tác nhân. Các quyền dùng công cụ của chính tác nhân vẫn có hiệu lực. Các chỉ dẫn này không phải là sandbox của hệ điều hành. Phần xác minh phải nêu rõ những gì đã thực sự được kiểm tra, và một phát hiện tĩnh không có nghĩa là lỗ hổng đã được khai thác lại thành công (“Chỉ đánh giá tĩnh. Phạm vi được báo cáo không bảo đảm đã tìm thấy mọi lỗ hổng. Không thực hiện khai thác động.”).
Báo cáo, phạm vi đã đánh giá và hủy
Kết quả chính thức là các tệp scan-manifest.json, findings.json và coverage.json của upstream. Bộ hoàn tất của upstream xác minh và niêm phong các tệp này rồi tạo báo cáo dễ đọc. VelaTerm nhập các tệp này và kiểm tra vị trí cùng các dòng mã nguồn chính xác của từng phát hiện, coi ký tự xuống dòng LF và CRLF là như nhau. Riêng cấu trúc hợp lệ và dòng mã nguồn khớp không chứng minh được rằng phát hiện có thể bị khai thác. Nếu bằng chứng mã nguồn không khớp, cuộc kiểm toán giữ trạng thái “Thất bại” và các phát hiện không được chấp nhận là đã xác minh. Báo cáo đã niêm phong của upstream vẫn được giữ, và bản xuất Markdown đặt lỗi xác minh lên đầu mà không viết lại báo cáo.
Trước khi niêm phong, VelaTerm kiểm tra đường dẫn, khoảng dòng và đoạn trích trong bản nháp bằng cùng bộ kiểm tra được dùng khi nhập. Nếu bằng chứng không khớp, lần quét chưa được niêm phong và tác nhân được cho biết những vị trí cần sửa. Sau đó, công cụ hoàn tất của Codex Security tạo và niêm phong báo cáo. Bước kiểm tra này không bao giờ viết lại đoạn trích, xóa phát hiện hay thay đổi kết quả đã niêm phong. Khi nhập, bước kiểm tra được thực hiện lại, nên các thay đổi mã nguồn về sau không thể âm thầm biến bằng chứng không hợp lệ thành kết quả thành công.
Phạm vi đã đánh giá được xác định từ các bản ghi kiểm tra và quyết định của upstream, không dựa trên số tệp mà tác nhân cho biết đã đọc. Các phát hiện cần xác minh chưa được giải quyết, phần việc bị hoãn, các loại trừ và cảnh báo khi hoàn tất vẫn được hiển thị. Lần quét đã niêm phong nhưng chưa đánh giá hết phạm vi được hiển thị là “Mới đánh giá một phần”. Ngay cả khi đã đánh giá toàn bộ phạm vi, cũng không có gì bảo đảm mọi lỗ hổng đều đã được tìm thấy.
Khi tác nhân kết thúc một lượt trong lúc lần quét vẫn còn việc phải làm, VelaTerm tiếp tục cùng phiên và cùng lần quét đó, giữ nguyên các phát hiện hiện có và kết quả của worker. Các yêu cầu cấp quyền vẫn ở trạng thái chờ (“Cần cấp quyền hoặc nhập thông tin”), và thao tác hủy hoặc lỗi từ nhà cung cấp sẽ dừng việc tự động tiếp tục. Nếu ba lượt liên tiếp kết thúc mà tiến độ rà soát, phát hiện hoặc phạm vi đã đánh giá phía upstream không thay đổi, cuộc kiểm toán dừng với lỗi quét chưa hoàn tất và giữ lại các điểm kiểm tra.
Thẻ “Báo cáo” hiển thị các phát hiện được giữ lại, bằng chứng mã nguồn và giới hạn của phạm vi đã đánh giá. Mỗi phát hiện có URL riêng và hiển thị đường tấn công, cách xác minh và kết luận (nếu có), khuyến nghị khắc phục cùng các đoạn trích mã nguồn được báo cáo; hãy kiểm tra trạng thái của cuộc kiểm toán trước khi coi các đoạn trích này là đã được xác minh. Thẻ “Tệp báo cáo” lưu toàn bộ báo cáo do upstream tạo và ID của lần quét. Lần quét đang chạy hiển thị phiên bản gói và plugin của upstream, giai đoạn và tiến độ thực tế, cùng các cảnh báo; khi chưa có báo cáo đã niêm phong, thông tin tiến độ và điểm kiểm tra được hiển thị thay cho một bản đánh giá trống. Trong “Phiên trợ lý”, ô nhập tin nhắn thông thường và chức năng quay lại hội thoại bị vô hiệu hóa để một lượt không liên quan không thể thay thế cuộc kiểm toán; các yêu cầu cấp quyền vẫn dùng được.
“Hủy” dừng lần quét của upstream và tác nhân. Các điểm kiểm tra đã lưu vẫn còn khi workbench của upstream có thể niêm phong chúng, và chúng giữ trạng thái đã hủy hoặc thất bại. Kết quả đến muộn không thể khôi phục một cuộc kiểm toán đã bị hủy. Sau khi khởi động lại, VelaTerm đối chiếu với trạng thái của upstream: kết quả đã hoàn tất và niêm phong có thể được nhập, còn lần chạy chưa hoàn tất được đánh dấu “Bị gián đoạn”, và các tệp được giữ lại của lần chạy đó vẫn phân biệt được với một kết quả đã hoàn tất.
“Bắt đầu kiểm toán” trên một bản ghi có sẵn sẽ tạo một lần quét mới cho mục tiêu hiện tại với tác nhân và các lựa chọn đã lưu. Thao tác này không tiếp tục một lượt mô hình đã dừng và không dùng lại kết luận cũ.
Lịch sử kiểm toán, biểu mẫu tạo cuộc kiểm toán, chi tiết báo cáo và phiên trợ lý đều có URL riêng, nên có thể mở trực tiếp, làm mới và điều hướng bằng nút lùi và tiến của trình duyệt. Trên màn hình hẹp, lịch sử và chi tiết được hiển thị thành các chế độ xem riêng.
Xuất kết quả và giới hạn
“Xuất báo cáo” có hai định dạng Markdown và JSON. Bản xuất Markdown chứa báo cáo của upstream nếu có; nếu không, bản xuất ghi rõ đây là bản ghi của một lần quét chưa hoàn tất. Bản xuất JSON giữ toàn bộ dữ liệu đã nhập cùng siêu dữ liệu riêng của VelaTerm. Thư mục quét của upstream cũng giữ tệp SARIF và các tệp khác do upstream tạo ra. Bản xuất có thể chứa đoạn trích mã nguồn và chi tiết lỗ hổng, vì vậy hãy cân nhắc kỹ khi chia sẻ.
Giao diện này cung cấp kiểm toán Standard và kiểm toán diff cây làm việc. Các kỹ năng khác được đóng gói kèm, chẳng hạn quét chuyên sâu, khắc phục, xác minh bản sửa và theo dõi issue bên ngoài, được giữ lại dưới dạng tài nguyên của upstream nhưng không có thao tác riêng. Cuộc kiểm toán không áp dụng bản sửa, không công bố phát hiện, không tạo issue và không mở pull request.
Chẩn đoán
Máy chủ ghi vòng đời của cuộc kiểm toán và thông tin giai đoạn của upstream vào runtime-*.log trong thư mục nhật ký của ứng dụng. VLX_LOG_DIR đặt vị trí dùng chung; khi chưa đặt biến này, VLX_SECURITY_LOG_DIR đặt vị trí cho các sự kiện kiểm toán. VLX_SECURITY_LOG_LEVEL=error chỉ ghi các lỗi, còn off tắt hoàn toàn. Prompt và câu trả lời chỉ được mô tả bằng kích thước và giá trị băm SHA-256; toàn bộ mã nguồn, thông tin xác thực và toàn văn câu trả lời của AI không được sao chép vào nhật ký, và thông báo gốc từ nhà cung cấp không được lưu giữ. Tên mô hình tùy chỉnh được thay bằng định danh ẩn danh chỉ có hiệu lực trong tiến trình hiện tại. Số token, khi có, là tổng mức sử dụng tích lũy của phiên. Cuộc hội thoại của tác nhân vẫn được ghi lại như bình thường.
Với cuộc kiểm toán thất bại, hãy đọc giải thích của nhà cung cấp trên báo cáo hoặc mở “Phiên trợ lý”. Hãy xử lý các vấn đề về đăng nhập, bộ chạy, quyền hoặc giới hạn tài khoản trước khi bắt đầu một cuộc kiểm toán khác. Máy chủ MCP đã kết nối chỉ cho thấy các công cụ đang khả dụng; điều đó không cho thấy mô hình đã hoàn tất lần quét.
Tài liệu tham khảo của upstream: Tổng quan CLI, Tài liệu tra cứu CLI, Mã nguồn công khai.