Câu hỏi thường gặp về Codex Security CLI
Giải đáp về các lượt quét Codex Security, phát hiện, dương tính giả, độ bao phủ, chi phí và CI.
Tìm câu trả lời cho các câu hỏi thường gặp về việc quét kho lưu trữ và quản lý phát hiện bảo mật từ thiết bị đầu cuối. Để cài đặt và thực hiện lần quét đầu tiên, hãy bắt đầu với Hướng dẫn bắt đầu nhanh về CLI.
Quét kho lưu trữ
Tại sao lượt quét sử dụng API key sau khi đăng nhập
Khi môi trường của bạn có OPENAI_API_KEY hoặc CODEX_API_KEY, các lượt quét
không có thiết bị đầu cuối tương tác và các lượt quét JSON cũng như JSONL mặc định sử dụng API key
từ môi trường, ngay cả sau khi đăng nhập thành công bằng ChatGPT hoặc mã thông báo truy cập.
Các lượt quét tương tác với đầu ra văn bản yêu cầu bạn chọn khi cũng có
phiên đăng nhập ChatGPT. Chạy thử không hiển thị lời nhắc hoặc nạp thông tin xác thực.
Để sử dụng thông tin xác thực đã lưu cho một lượt quét, hãy chọn rõ thông tin đó:
npx @openai/codex-security scan . --auth chatgptĐể yêu cầu API key từ OPENAI_API_KEY hoặc CODEX_API_KEY:
npx @openai/codex-security scan . --auth api-keyĐể đặt thông tin xác thực đã lưu làm lựa chọn tự động mặc định, hãy chạy
unset OPENAI_API_KEY CODEX_API_KEY. Để xem tất cả chế độ xác thực được hỗ trợ,
hãy xem tài liệu tham chiếu CLI.
Lượt quét hàng loạt bị gián đoạn có thể tiếp tục không
Có. Hãy chạy cùng một lệnh bulk-scan với tệp CSV và thư mục đầu ra ban đầu. Codex Security sẽ bỏ qua các kho lưu trữ đã hoàn tất.
Thêm --max-attempts 3 để thử lại các lỗi tạm thời của kho lưu trữ hoặc lượt quét:
npx @openai/codex-security bulk-scan repositories.csv \
--output-dir /path/outside/repositories/security-scans \
--workers 4 \
--max-attempts 3Các lượt quét đã hoàn tất giữ lại kết quả và không được thử lại, ngay cả khi vẫn còn
khoảng trống trong phạm vi bao phủ. Những khoảng trống này không khiến đợt quét kết thúc với mã 2.
Phát hiện và độ bao phủ
Nhóm có thể tìm kết quả quét trước đó ở đâu
Liệt kê các lượt quét đã lưu cho kho lưu trữ của bạn:
npx @openai/codex-security scans list /path/to/repositorySử dụng ID lượt quét trong kết quả để kiểm tra các phát hiện của lượt quét đó:
npx @openai/codex-security scans show SCAN_IDMỗi lượt quét đã hoàn tất lưu báo cáo, phát hiện, độ bao phủ và các tạo tác hỗ trợ cùng nhau. Hãy xem Tạo tác quét để biết bố cục đầy đủ.
Để kiểm tra các sự kiện quét và sự kiện worker đã lưu, hãy chạy scans logs SCAN_ID. Các nhật ký này
không được che dữ liệu nhạy cảm và có thể chứa mã nguồn hoặc thông tin xác thực.
Nếu CLI không thể lưu lịch sử quét thì sao
Codex Security lưu lịch sử quét trong cơ sở dữ liệu workbench. Nếu thư mục trạng thái mặc định không thể ghi, hãy chọn một thư mục riêng tư bên ngoài kho lưu trữ:
export CODEX_SECURITY_STATE_DIR=/path/outside/repository/codex-security-stateCách các lượt quét phân biệt phát hiện mới và đã biết
Liệt kê các phát hiện đang mở từ tất cả các lần quét của một kho lưu trữ:
npx @openai/codex-security findings list /path/to/repositoryDanh sách xác định các phát hiện đã được xác nhận trong lần quét gần nhất và các phát hiện đang mở trước đó mà lần quét không xác nhận.
So sánh các phát hiện giữa hai bản quét:
npx @openai/codex-security scans compare PREVIOUS_SCAN_ID CURRENT_SCAN_IDPhép so sánh tự động đối chiếu các phát hiện theo nguyên nhân gốc rễ, tái sử dụng những kết quả đối chiếu đã lưu và xác định các phát hiện mới, còn tồn tại, được mở lại, không ghi nhận, đã giải quyết và chưa xác định. Khi lượt quét sau không tìm thấy phát hiện trước đó trong phần mã mà nó đã quét, phát hiện đó được coi là không ghi nhận. Phát hiện chỉ được tính là đã giải quyết sau khi được đóng một cách rõ ràng với lý do đã sửa. Các đường dẫn bị loại trừ và kết quả đối chiếu không chắc chắn vẫn ở trạng thái chưa xác định.
Phản hồi về dương tính giả hoạt động như thế nào
Kiểm tra lượt quét đã lưu để tìm ID lần xuất hiện:
npx @openai/codex-security scans show SCAN_IDGhi lại lý do phát hiện đó không áp dụng:
npx @openai/codex-security findings false-positive FINDING_OCCURRENCE_ID \
--reason "The framework escapes this input before it reaches the query"Các lượt quét trong tương lai của cùng kho lưu trữ nhận được lời giải thích đó làm ngữ cảnh. Chúng vẫn độc lập kiểm tra mã nguồn, biện pháp kiểm soát và khả năng tiếp cận hiện tại. Việc loại bỏ một phát hiện không loại trừ một quy tắc, đường dẫn hoặc lớp lỗ hổng.
Để biết chi tiết về lệnh, hãy xem tài liệu tham chiếu về phát hiện.
Tại sao các lượt quét lặp lại có thể trả về những phát hiện khác nhau
Các lượt quét có AI hỗ trợ có thể cho kết quả khác nhau, ngay cả với cùng một cấu hình quét. Hãy bắt đầu bằng cách chạy lại lượt quét cơ sở:
npx @openai/codex-security scans rerun BASELINE_SCAN_IDLần chạy lại giữ nguyên cấu hình quét ban đầu và yêu cầu cùng một phiên bản plugin. Nếu plugin đã cài đặt thay đổi, lệnh sẽ dừng.
So sánh bản quét cơ sở với bản quét mới:
npx @openai/codex-security scans compare BASELINE_SCAN_ID REPEAT_SCAN_IDCung cấp hướng dẫn chung về kiến trúc và bảo mật khi ngữ cảnh còn thiếu có thể góp phần gây ra sự khác biệt. Việc đối sánh có thể xác định cùng một phát hiện cơ bản qua nhiều lần chạy, nhưng không làm cho các lượt quét trở nên tất định. Hãy trực tiếp kiểm tra lại mọi phát hiện quan trọng đã biến mất.
Cách một nhóm xác nhận bản sửa lỗi đã có hiệu quả
Kiểm tra lại phát hiện ban đầu trên bản mã đã thay đổi. Từ bản mã đó, truyền báo cáo của phát hiện và vấn đề bạn muốn xác minh:
npx @openai/codex-security validate /path/to/original/findings.json \
"Recheck the SQL injection in src/orders.ts:42 against the current code"Xem xét bằng chứng cho thấy luồng thực thi có lỗ hổng đã được chặn và hành vi hợp lệ vẫn hoạt động. Chạy lại chương trình tái hiện ban đầu hoặc kiểm thử hồi quy nếu có. Nếu không thể chạy bước kiểm tra, hãy ghi rõ những điểm còn chưa chắc chắn trong kết quả.
Phép so sánh lượt quét có thể cho thấy các phát hiện đã thay đổi như thế nào, nhưng chỉ riêng việc không thấy một phát hiện không xác minh được rằng lỗi đã được sửa.
Độ bao phủ không đầy đủ có nghĩa là gì
Xem coverage.json để biết các đường dẫn bị loại trừ, các phần hoãn rà soát và các câu hỏi còn bỏ ngỏ.
Kết quả mới không có trường cho biết mức độ đầy đủ của phạm vi bao phủ. Kiểm tra scan.status trong
scan-manifest.json để biết trạng thái thực thi.
Khoảng trống trong phạm vi bao phủ không thay đổi mã thoát của lượt quét đã hoàn tất. Mã thoát 0 không có nghĩa là
mọi tệp đều đã được rà soát. Lượt quét sau không thể xác nhận rằng một phát hiện trước đó
không còn tồn tại nếu không bao phủ đường dẫn ban đầu của phát hiện đó.
Tự động hóa và chi phí
Giới hạn thời gian của lượt quét sâu hoạt động như thế nào
Đặt thời hạn cho worker khi bắt đầu một lượt quét sâu:
npx @openai/codex-security scan . --mode deep --max-time-hours 1.5Giá trị mặc định là 96 giờ. Sử dụng giá trị dương bất kỳ không vượt quá 96, kể cả
giá trị thập phân. Khi hết thời hạn, Codex Security dừng các worker chưa hoàn tất, giữ lại
kết quả quét tiêu chuẩn đã hoàn tất và tổng hợp chúng vào báo cáo cuối cùng.
Kiểm tra báo cáo để biết các khu vực đã được rà soát và công việc bị hoãn. Chỉ riêng thời hạn
không quyết định mã thoát; trạng thái thực thi và chính sách mức độ nghiêm trọng mới quyết định mã này.
Đối với cài đặt lâu dài hoặc chiến dịch quét hàng loạt, hãy đặt max_time_hours trong
[deep_scan] tại phần cấu hình lượt quét
sâu.
Cách hoạt động của giới hạn chi phí quét
Đặt giới hạn chi phí ước tính bằng USD trước khi bắt đầu quét:
npx @openai/codex-security scan . --max-cost 5Giới hạn này là giá trị ước tính, không phải mức trần chi tiêu cứng. Các yêu cầu đang
xử lý có thể hoàn tất với chi phí vượt giới hạn. Nếu lượt quét sâu chạm giới hạn sau khi Codex
Security tổng hợp kết quả của các worker đã hoàn tất, CLI có thể lưu một báo cáo
hoàn chỉnh kèm cảnh báo ngân sách. CLI trả về 0, hoặc 1 nếu các phát hiện đạt
ngưỡng mức độ nghiêm trọng đã cấu hình. Nếu không thể tạo kết quả hoàn chỉnh hợp lệ,
CLI trả về 2 và giữ lại mọi đầu ra hiện có.
Để kiểm tra pull request trên GitHub và quét kho lưu trữ theo lịch, hãy sử dụng
Codex Security GitHub Action. Với
action-v0.3.0, một lượt quét hoàn tất có nghĩa là quá trình phân tích đã cấu hình tạo ra
kết quả hợp lệ. Các mục bị loại khỏi phạm vi và các cuộc điều tra bị hoãn không được miễn áp dụng
chính sách về mức độ nghiêm trọng. Kiểm tra coverage.json để đánh giá phạm vi và
hạn chế của lượt quét. Để từ chối cả phần khác biệt trống và các lượt chạy thử, hãy yêu cầu đầu ra
scan-status của Action phải là completed; xem Chọn chính sách về mức độ
nghiêm trọng.
Đối với các nhà cung cấp khác, xem Tổng quan về CI/CD.
Để kiểm tra trước mỗi lần commit, hãy sử dụng
install-hook.