Tiếng Việt

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ữ

Ai có thể sử dụng CLI

Gói @openai/codex-security được cung cấp công khai.

Việc chạy quét yêu cầu quyền truy cập Codex Security. Để có kết quả tốt nhất, hãy sử dụng tài khoản đã được xác minh cho Trusted Access for Cyber.

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.

Cách hoạt động của tính năng quét kho lưu trữ hàng loạt

Đăng nhập bằng GitHub CLI:

gh auth login

Khám phá và chọn kho lưu trữ từ một tài khoản hoặc tổ chức GitHub:

npx @openai/codex-security bulk-scan

Đối với danh sách đã chuẩn bị, hãy cung cấp một tệp CSV kho lưu trữ và thư mục đầu ra:

npx @openai/codex-security bulk-scan repositories.csv \
  --output-dir /path/outside/repositories/security-scans \
  --workers 4

Hãy xem Chạy lượt quét bảo mật hàng loạt để biết cách khám phá GitHub, định dạng CSV, kết quả chiến dịch và các tùy chọn khả dụng.

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 3

Một bản quét đã hoàn tất với phạm vi bao phủ partial hoặc unknown sẽ giữ lại kết quả và khiến chiến dịch kết thúc với mã 2. Bản quét đó sẽ không được thử lại, ngay cả khi dùng --max-attempts.

Cách cung cấp kiến trúc và chính sách bảo mật cho lượt quét

Truyền tài liệu kiến trúc, mô hình mối đe dọa hoặc chính sách bảo mật bằng --knowledge-base:

npx @openai/codex-security scan . \
  --knowledge-base /path/to/architecture.md \
  --knowledge-base /path/to/security-policies

Codex Security sử dụng những tài liệu này làm ngữ cảnh cho lượt quét hiện tại. Để biết các loại tệp được hỗ trợ và hành vi của thư mục, hãy xem Thêm ngữ cảnh bảo mật.

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/repository

Sử 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_ID

Mỗ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-state

Cá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/repository

Danh 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_ID

Quá trình so sánh tự động đối sánh các phát hiện theo nguyên nhân gốc, tái sử dụng các kết quả đối sánh đã lưu và xác định các phát hiện mới, vẫn tồn tại, được mở lại, đã khắc phục và chưa xác định được trạng thái. Một phát hiện chỉ được xem là đã khắc phục khi bản quét sau bao phủ mục tiêu ban đầu và đường dẫn bị ảnh hưởng mà không có khoảng trống trong phạm vi bao phủ.

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_ID

Ghi 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_ID

Lầ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_ID

Cung 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ả

Sau khi áp dụng bản sửa lỗi, hãy chạy lại lượt quét ban đầu:

npx @openai/codex-security scans rerun BEFORE_SCAN_ID

So sánh các phát hiện ban đầu với bản quét mới:

npx @openai/codex-security scans compare BEFORE_SCAN_ID AFTER_SCAN_ID

Xác nhận lượt quét mới bao phủ mục tiêu ban đầu và đường dẫn bị ảnh hưởng mà không có khoảng trống bao phủ. Sau đó, trực tiếp kiểm tra lại phát hiện ban đầu trên bản checkout hiện tại:

npx @openai/codex-security validate /path/to/original/findings.json \
  "Recheck the SQL injection in src/orders.ts:42 against the current code"

Chỉ riêng việc thiếu một phát hiện hoặc so sánh lượt quét không chứng minh rằng bản sửa lỗi đã có hiệu quả.

Độ bao phủ không đầy đủ có nghĩa là gì

Độ bao phủ có thể là complete, partial hoặc unknown. Hãy xem xét coverage.json để biết các đường dẫn bị loại trừ, bề mặt bị trì hoãn và câu hỏi còn mở trước khi coi một lượt quét là bằng chứng đã xem xét.

Các lượt quét có độ bao phủ một phần hoặc không xác định trả về mã thoát 2, ngay cả khi không có chính sách mức độ nghiêm trọng. Chúng vẫn giữ mọi phát hiện và dữ liệu độ bao phủ hiện có. Một lượt quét sau không thể chứng minh rằng phát hiện trước đó không còn tồn tại khi nó 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.5

Giá trị mặc định là 96 giờ. Dùng bất kỳ giá trị dương nào không vượt quá 96, kể cả số thập phân. Khi đến thời hạn, Codex Security dừng các worker chưa hoàn tất, giữ lại kết quả của lượt 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. Nếu không có worker nào hoàn tất việc xem xét mã nguồn, báo cáo sẽ ghi nhận phạm vi bao phủ một phần và CLI trả về mã thoát 2.

Đố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 5

Giớ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 được xử lý có thể hoàn tất với chi phí vượt quá giới hạn. Nếu lượt quét sâu đạt đến 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 sẽ lưu báo cáo đã hoàn tất với phạm vi bao phủ một phần và thoát với mã 2. Nếu không, CLI sẽ giữ lại mọi đầu ra một phần hiện có.

Lượt quét có thể kiểm tra commit và pull request không

Cài đặt bước kiểm tra bảo mật trước khi commit cho các thay đổi đã stage và chưa stage:

npx @openai/codex-security install-hook

Đối với bước kiểm tra pull request, hãy quét các thay đổi đã commit và đặt ngưỡng mức độ nghiêm trọng:

npx @openai/codex-security scan . \
  --diff origin/main \
  --fail-on-severity high

Một lượt quét đầy đủ trả về mã thoát 1 khi tìm thấy vấn đề có mức độ bằng hoặc cao hơn mức độ đã chọn. Hãy xem Chạy quét trong CI để biết quy trình làm việc GitHub Actions đầy đủ, cách xử lý tạo tác và xuất SARIF.

Một ứng dụng khác có thể chạy quét trực tiếp không

Có. Sử dụng TypeScript SDK để bắt đầu lượt quét, chọn mục tiêu, kiểm tra phát hiện và độ bao phủ, theo dõi tiến trình và áp dụng biện pháp kiểm soát chi phí từ một ứng dụng hoặc công cụ dành cho nhà phát triển.