Tài liệu cho nhà phát triển & AppSec

Hướng dẫn tham khảo cho nhà phát triển: Chạy & quản lý các đợt kiểm tra

Khám phá bốn cách chạy các đợt kiểm tra lỗ hổng tự động với Cyfendo: tải thư mục lên web trực tiếp, kho Git liên tục, CLI nhẹ đồng bộ với đám mây, và Cyfendo Private Scan (không gửi mã nguồn tới Cyfendo).

Bốn cách chạy đợt kiểm tra lỗ hổng

Chọn quy trình phù hợp nhất với mức độ an toàn, yêu cầu lưu giữ dữ liệu và vòng đời phát triển của bạn.

Kéo & thả thư mục trên giao diện web

Nhanh nhất cho các đợt kiểm tra tức thời. Kéo bất kỳ thư mục dự án cục bộ nào vào trình duyệt. Bộ lọc AST ngay trong trình duyệt tính LOC được bảo vệ trong vài mili giây mà không gửi tệp nhị phân hay thư viện phụ thuộc.

Tích hợp kho Git

Lý tưởng cho việc theo dõi nhánh tự động. Liên kết URL kho GitHub, GitLab hoặc Bitbucket của bạn. Cyfendo tự động nhận diện nhánh và SHA commit để thực hiện các đợt kiểm tra theo phần thay đổi (diff) tăng dần.

CLI đám mây nhẹ (cyfendo scan .)

Quét đồng bộ với đám mây theo cách tiêu chuẩn, dành cho người dùng terminal và pipeline CI/CD. Đóng gói mã cục bộ, tải lên các sandbox đám mây tạm thời, truyền trực tiếp dữ liệu theo dõi và xuất các diff .patch thống nhất.

Cyfendo Private Scan (cyfendo scan --private .)

Không gửi mã tới Cyfendo

Pipeline cục bộ • Không gửi mã nguồn tới Cyfendo. Chạy toàn bộ pipeline bảo mật đa tác tử (multi-agent) trên phần cứng cục bộ của bạn bằng khóa API LLM của bạn (OpenAI, Anthropic, Gemini, Vertex, Azure) hoặc mô hình cục bộ (Ollama/vLLM). Mã nguồn, AST, bằng chứng của phát hiện và bản vá của bạn không được gửi tới Cyfendo. Với nhà cung cấp AI bên ngoài, một phần mã của bạn được gửi tới nhà cung cấp đó. Với mô hình cục bộ, không có mã nào rời khỏi máy của bạn.

Phương pháp 1: Tải thư mục lên qua giao diện web

Chạy các đợt xem xét bảo mật tức thời ngay từ trình duyệt mà không cần cài phần mềm cục bộ nào.

Mở bảng điều khiển & nhấp “Start New Scan”

Vào /dashboard và nhấp nút Start New Scan. Đảm bảo tab Upload Folder đang được chọn.

Chọn hoặc kéo thư mục dự án cục bộ của bạn

Chọn thư mục gốc của dự án cục bộ. Trình quét chạy ngay trong trình duyệt của Cyfendo tự động áp dụng các quy tắc loại trừ:

  • Tuân theo các tệp .gitignore và .cyfendoignore tùy chỉnh.
  • Tự động bỏ qua node_modules/, vendor/, .git/, dist/, build/, môi trường ảo (venv/) và các tài nguyên nhị phân.
  • Tính chính xác LOC được bảo vệ và hiển thị ngay phần kiểm tra hạn mức trước khi tải lên.

Theo dõi dữ liệu đa tác tử trực tiếp

Sau khi gửi, luồng Server-Sent Events (SSE) trực tiếp truyền việc thực thi theo thời gian thực qua các giai đoạn phân tích phân tán: Phân tích cú pháp AST → Lan truyền taint → Xác minh PoC trong sandbox tạm thời → Tổng hợp bản vá khắc phục bằng AI.

Xem lại trong IDE lỗ hổng tương tác

Xem các phát hiện được phân loại theo CWE và điểm CVSS. Xem các vector taint đến từng dòng, chạy bằng chứng khai thác (PoC) trong sandbox, và tải về các diff .patch thống nhất đã tổng hợp hoặc báo cáo SARIF.

Phương pháp 2: Tích hợp kho Git & lên lịch quét tự động

Kết nối các kho Git từ xa để theo dõi nhánh liên tục, giới hạn theo thư mục con của monorepo và chạy các đợt kiểm tra bảo mật định kỳ tự động.

Chọn “Git Repository” trong hộp thoại quét

Trong hộp thoại Start New Scan trên bảng điều khiển, chuyển sang tab Git Repository. Nhập URL kho của bạn (ví dụ: https://github.com/org/repo.git) và chỉ định nhánh cần kiểm tra (ví dụ: main, develop hoặc release/v2).

Giới hạn theo thư mục con của monorepo (tùy chọn)

Nếu kho của bạn chứa nhiều microservice hoặc package, hãy chỉ định một đường dẫn tương đối trong Subdirectory (Optional) (ví dụ: apps/api hoặc packages/backend). Cyfendo chỉ đóng gói và kiểm tra các tệp mã nguồn nằm trong đường dẫn con đó, tránh tiêu tốn LOC không cần thiết cho các dự án không liên quan.

Xác thực cho kho riêng tư

Với kho riêng tư, hãy cung cấp Personal Access Token (PAT) chỉ có quyền đọc kho (ví dụ: PAT chi tiết của GitHub với Contents: Read-only, Project Access Token của GitLab hoặc App Password của Bitbucket). Token được mã hóa khi lưu trữ bằng AES-256 (Fernet), chỉ được giải mã trong bộ nhớ khi lấy mã trong sandbox tạm thời, và không bao giờ được lưu dưới dạng văn bản thuần.

Tính liên tục tăng dần & theo dõi thay đổi

Cyfendo liên kết mỗi kho với một Dự án được bảo vệ đang hoạt động. Khi quét lại mã, Cyfendo đánh giá tính liên tục AST theo ngữ nghĩa so với các ảnh chụp trước đó và chỉ tính hạn mức của bạn cho những dòng mã mới thêm hoặc đã sửa.

Quét định kỳ tự động & phát hiện thay đổi thông minh

Giữ mã nguồn production của bạn được bảo vệ liên tục mà không cần can thiệp thủ công. Cyfendo cho phép bạn gắn lịch quét định kỳ tự động vào bất kỳ dự án Git nào đã kết nối, ngay từ bảng điều khiển.

Các tham số cấu hình quét định kỳ tự động cho Git và hành vi lên lịch
Tham số lịch quét Tùy chọn / hành vi Mô tả
Tần suất quét daily, weekly, monthly Tự động chạy mỗi 24 giờ, mỗi 7 ngày hoặc mỗi 30 ngày.
Nhánh / Tham chiếu Chuỗi (ví dụ: main, staging) Nhánh Git từ xa được theo dõi liên tục để phát hiện commit mới.
Thư mục con Đường dẫn tương đối tùy chọn (ví dụ: apps/api) Giới hạn các đợt kiểm tra định kỳ chỉ trong một microservice hoặc package monorepo được chỉ định.
Phát hiện thay đổi thông minh Bật bỏ qua 0 tín dụng Kiểm tra SHA commit từ xa bằng git ls-remote trước khi quét. Nếu mã không thay đổi, lần chạy hoàn tất trong vài mili giây và dùng 0 tín dụng quét.
Bản vá khắc phục Công tắc (bật theo mặc định) Tự động tổng hợp các bản vá diff thống nhất chính xác, đã được xác minh trong sandbox, cho các phát hiện mức Nghiêm trọng và Cao. Các phát hiện khác có thể tạo bản vá theo yêu cầu.

Thông báo & cảnh báo tự động

Khi một bản quét theo lịch kết thúc, Cyfendo gửi cảnh báo tức thì qua nhiều kênh:

  • Trung tâm thông báo trong ứng dụng: Huy hiệu chưa đọc theo thời gian thực và danh sách thả xuống có liên kết trực tiếp để xem phân loại phát hiện và các bản vá.
  • Gửi thông báo qua email: Báo cáo bảo mật mang thương hiệu Cyfendo, gửi từ noreply@cyfendo.com, nêu tổng số phát hiện, phân bổ theo mức độ nghiêm trọng (Nghiêm trọng, Cao, Trung bình, Thấp), điểm rủi ro và trạng thái tổng hợp bản vá.
  • Trạng thái an toàn tự động: Nếu đạt hạn mức quét hằng tháng, lịch quét tự động tạm dừng (paused_quota) mà không làm mất cấu hình dự án của bạn. Nếu thông tin xác thực Git hết hạn, một cảnh báo sẽ nhắc bạn cập nhật token truy cập (paused_auth_error).

Quản lý thông tin xác thực Git & cô lập theo từng dự án

Để tuân theo nguyên tắc đặc quyền tối thiểu, Personal Access Token (PAT) có thể được giới hạn chặt chẽ cho một dự án cụ thể (project_id). Điều này bảo đảm các token chi tiết ở cấp kho (ví dụ: GitHub Fine-Grained PAT) sẽ không bao giờ lan sang hay kích hoạt bản quét trên các kho khác trong không gian làm việc của bạn.

$ curl -X POST https://cyfendo.com/api/v1/integrations/git/credentials \
    -H "Authorization: Bearer cy_live_..." \
    -H "Content-Type: application/json" \
    -d '{"project_id": "<PROJECT_ID>", "name": "Repo Scoped Token", "token": "github_pat_...", "provider": "github"}'

Tự động hóa lên lịch bằng REST API

Bạn có thể cấu hình hoặc kích hoạt lịch quét bằng chương trình thông qua REST API có xác thực của Cyfendo:

$ curl -X POST https://cyfendo.com/api/v1/projects/<PROJECT_ID>/schedule \
    -H "Authorization: Bearer cy_live_..." \
    -H "Content-Type: application/json" \
    -d '{"frequency": "daily", "git_branch": "main", "git_subdir": "apps/api", "only_scan_on_changes": true, "generate_patches": true}'

Phương pháp 3: Trình quét CLI cục bộ của Cyfendo

Trình quét CLI nhanh, không cần thư viện phụ thuộc, dành cho terminal của nhà phát triển, máy chủ SSH không giao diện và pipeline CI/CD.

1. Cài đặt

Chọn cách cài đặt bạn muốn bên dưới:

Cách A: Trình quản lý gói Python (pip / pipx)
$ pip install --upgrade cyfendo
Cách B: Trình cài đặt một dòng (macOS & Linux)

Cài chính gói PyPI đó cho bạn (dùng pipx nếu có, nếu không thì dùng pip --user; Python 3.9+). Tệp nhị phân độc lập không còn được phân phối; trình cài đặt sẽ gỡ tệp nhị phân do bản cài đặt trước để lại.

$ curl -sSL https://cyfendo.com/install.sh | bash

2. Xác thực

Tạo khóa API từ Menu người dùng góc trên bên phải → Developer & CLI Access và xác thực CLI của bạn:

# Option A: Interactive login command
$ cyfendo login --key cy_live_xxxxxxxxxxxxxxxxxxxxxxxx

# Option B: Set as environment variable
$ export CYFENDO_API_KEY=cy_live_xxxxxxxxxxxxxxxxxxxxxxxx

3. Chạy bản quét trên Cyfendo Server

Khi chạy các bản quét tiêu chuẩn không có cờ --private, codebase của bạn được tải lên và phân tích trên Cyfendo Server (Cloud hoặc tại chỗ). Việc phân tích, xác minh trong sandbox và tổng hợp bản vá được thực thi từ xa trên hệ thống máy chủ, không cần khóa mô hình thương mại hay phụ thuộc GPU cục bộ.

Khi có terminal, cyfendo scan hỏi trước khi tải lên. Khi không có terminal (CI, git hook, --no-interactive) thì không có ai để hỏi, nên lệnh chỉ tải lên khi có --yes; nếu không có cờ này, không có gì được tải lên và lệnh thoát với mã 2.

Việc tải lên tuân theo các tệp .gitignore và .cyfendoignore ở mọi cấp thư mục và luôn loại trừ các tệp .env (các tệp mẫu như .env.example được giữ lại), khóa riêng SSH và TLS, keystore, và các tệp cấu hình chứa khóa riêng. Symlink trỏ ra ngoài dự án bị bỏ qua, các tệp .sarif và mọi báo cáo mà CLI đã ghi vào dự án ở lần chạy trước (--sarif, -o, --patch-bundle) cũng vậy, nên chúng không bao giờ được tải lên hay tính là LOC được bảo vệ. CLI liệt kê các tệp chứa thông tin xác thực mà nó đã loại trừ, và dừng với một lỗi nếu kho lưu trữ vượt quá 250 MB. Các tệp khóa phụ thuộc (yarn.lock, poetry.lock, Cargo.lock, ...) và các tệp kê khai thư viện phụ thuộc của workspace dưới packages/ được tải lên cho phần kiểm tra thư viện phụ thuộc; chúng không bao giờ được tính là LOC được bảo vệ.

# 1. Standard fast PoC scan on Cyfendo server:
$ cyfendo scan .

# 2. Server-side scan with automated AI remediation patch generation (no --private flag needed):
$ cyfendo scan . --generate-patch

# 3. Server scan with patch generation, custom bundle export, and SARIF report:
$ cyfendo scan . \
    --generate-patch \
    --patch-bundle fixes.patch \
    --sarif cyfendo-results.sarif

# 4. Target a specific existing project in your workspace:
$ cyfendo scan /path/to/source --project "payment-gateway" --generate-patch

# 5. Connect to a custom or self-hosted Cyfendo server endpoint:
$ cyfendo scan --server https://cyfendo.internal:5001 . --generate-patch

# 6. CI/CD or headless execution with auto-confirm:
$ cyfendo scan . --generate-patch --yes --no-interactive

4. Nhiều tài khoản & không gian làm việc của tổ chức

Nếu tài khoản của bạn được liên kết với một tổ chức hoặc nhiều tài khoản Business, một khóa API duy nhất cấp quyền truy cập vào tất cả. Bạn có thể chuyển ngữ cảnh không gian làm việc đang dùng ngay trên máy hoặc chỉ định không gian làm việc đích khi chạy lệnh:

# 1. List all accessible personal and business workspaces:
$ cyfendo workspaces

# 2. Switch default active workspace (persisted to ~/.cyfendo/config.json):
$ cyfendo workspace switch ws_acme_corp_8f3a

# 3. Execute a scan under a specific organization without switching default:
$ cyfendo scan . --workspace ws_acme_corp_8f3a --generate-patch

# 4. In CI/CD runners, set CYFENDO_WORKSPACE_ID to attribute scans to your organization:
$ export CYFENDO_WORKSPACE_ID=ws_acme_corp_8f3a
$ cyfendo scan . --generate-patch

Phương pháp 4: Cyfendo Private Scan

Trên máy cục bộ • Không gửi mã nguồn tới Cyfendo

Chạy các đợt kiểm tra bảo mật đa tác tử tự động ngay trên máy trạm cục bộ hoặc runner riêng của bạn bằng khóa nhà cung cấp LLM của bạn hoặc mô hình tự lưu trữ, với toàn quyền kiểm soát dữ liệu.

Lưu giữ dữ liệu riêng tư: Không gửi mã nguồn tới Cyfendo

Cyfendo Private Scan được thiết kế cho các nhóm quốc phòng, y tế, công nghệ tài chính và doanh nghiệp có yêu cầu nghiêm ngặt về lưu giữ dữ liệu theo mô hình zero-trust:

Thực thi pipeline 100% cục bộ
Việc phân tích cú pháp AST, phân tích taint giữa các tệp, đồ thị lời gọi, xác minh khai thác và tổng hợp bản vá đều được thực thi trực tiếp trong môi trường cục bộ của bạn.
Kết nối trực tiếp với LLM
Máy của bạn giao tiếp trực tiếp với OpenAI, Anthropic, Gemini, Vertex, Azure hoặc Ollama cục bộ. Máy chủ Cyfendo không bao giờ làm trung gian chuyển tiếp mã nguồn hay prompt gửi tới mô hình của bạn. Nguyên tệp mã nguồn đến được mô hình, kể cả những tệp không được tệp nào import; tệp .env, khóa riêng, tệp bị bỏ qua và liên kết trỏ ra ngoài dự án thì không.
Lưu trữ cục bộ trong .cyfendo/
Mọi phát hiện, dấu vết khai thác, báo cáo Markdown, tệp SARIF và từng diff .patch chỉ được lưu trong không gian làm việc cục bộ của bạn.
Đồng bộ quyền sử dụng ở mức tối thiểu
Không có mã nguồn, nội dung tệp hay phát hiện nào được gửi đi. Để tính hạn mức, CLI gửi siêu dữ liệu của bản quét (tên dự án, số tệp và số LOC, nhà cung cấp và mô hình, nhánh git, SHA commit và URL từ xa), các cập nhật tiến độ theo giai đoạn, và khi hoàn tất thì gửi số lượng theo mức độ nghiêm trọng, điểm rủi ro và số bản vá (hoặc thông báo lỗi nếu bản quét thất bại). Private Scan cần truy cập mạng tới một máy chủ Cyfendo (cyfendo.com, hoặc máy chủ tại chỗ của bạn qua --server) để xác minh quyền sử dụng.
Tra cứu thư viện phụ thuộc
Để kiểm tra các gói phần mềm của bên thứ ba có lỗ hổng đã công bố hay không, CLI gửi tên và phiên bản của chúng (không gửi mã nguồn, đường dẫn tệp hay tên dự án) trực tiếp tới OSV.dev và gửi các CVE ID tìm được tới FIRST EPSS, đồng thời tải xuống danh mục CISA KEV. Khi không có tệp khóa phụ thuộc nào bao phủ một gói, tên và phiên bản công khai của gói đó cũng được gửi tới deps.dev, và một khoảng phiên bản đã khai báo sẽ được tra trên npm registry hoặc PyPI. Các gói workspace, gói theo đường dẫn và gói git, cũng như các gói mà tệp khóa hoặc cấu hình registry gắn với một registry riêng tư, không bao giờ được gửi, và không có thông tin nào về thư viện phụ thuộc của bạn được gửi tới Cyfendo. --no-deps sẽ bỏ qua bước này. Xem Kiểm tra thư viện phụ thuộc của bên thứ ba.
Tệp và PoC (bằng chứng khai thác)
Private Scan chạy trên một bản sao riêng được tạo theo cùng quy tắc như tải lên đám mây: không có tệp .env, khóa riêng hay tệp bị bỏ qua nào đến được mô hình hoặc các tập lệnh. Các tập lệnh chạy trong sandbox của hệ điều hành khi có: thư mục home bị ẩn và việc ghi chỉ diễn ra trong các thư mục của bản quét và /tmp, trên macOS với mạng chỉ loopback (việc cài thư viện phụ thuộc và các ứng dụng khởi động qua Maven hoặc Gradle có dùng mạng), trên Linux khi đã cài bubblewrap, nhưng không có giới hạn mạng đó. Việc cài thư viện phụ thuộc chạy dù có --no-deps hay không và không dùng .npmrc, pip.conf hay .gitconfig của riêng bạn, nên không truy cập được registry riêng. CLI in ra những gì mỗi lần chạy nhận được.

Hướng dẫn từng bước cho khách hàng

Cài đặt hoặc cập nhật Cyfendo CLI

Cài gói Python chính thức của Cyfendo (yêu cầu Python 3.9+) hoặc dùng tập lệnh curl độc lập:

$ pip install --upgrade cyfendo

Xác thực không gian làm việc Cyfendo của bạn

Tạo khóa API Cyfendo từ Menu người dùng → Developer & CLI Access và xác thực máy cục bộ của bạn. Bước này xác minh quyền sử dụng của gói và số dư LOC được bảo vệ của bạn:

$ cyfendo login --key cy_live_xxxxxxxxxxxxxxxxxxxxxxxx

# Verify workspace balance & active plan:
$ cyfendo status

Chọn nhà cung cấp mô hình & đặt thông tin xác thực

Xuất khóa API nhà cung cấp AI của bạn dưới dạng biến môi trường, hoặc cung cấp trực tiếp qua cờ --llm-key khi chạy:

# For OpenAI:
$ export OPENAI_API_KEY="sk-proj-xxxxxxxxxxxxxxxxxxxxxxxx"

# For Anthropic Claude:
$ export ANTHROPIC_API_KEY="sk-ant-xxxxxxxxxxxxxxxxxxxxxxxx"

# For Google Gemini / Vertex AI:
$ export GEMINI_API_KEY="AIzaSyxxxxxxxxxxxxxxxxxxxx"
# Or for GCP Vertex: export GCP_PROJECT="my-enterprise-project"

# For Azure OpenAI:
$ export AZURE_OPENAI_ENDPOINT="https://my-resource.openai.azure.com/"
$ export AZURE_OPENAI_KEY="xxxxxxxxxxxxxxxxxxxxxxxx"
$ export AZURE_OPENAI_DEPLOYMENT="gpt-4o"

Cấu hình mặc định lâu dài (tùy chọn)

Lưu nhà cung cấp và mô hình mặc định bạn ưa dùng trong ~/.cyfendo/config.json để không phải truyền cờ ở các bản quét sau:

$ cyfendo config --set-provider openai
$ cyfendo config --set-model gpt-4o
$ cyfendo config --set-llm-key sk-proj-xxxxxxxxxxxxxxxxxxxxxxxx

Chạy Cyfendo Private Scan

Chạy cyfendo scan --private . trên thư mục đích của bạn. Thêm --generate-patch để tổng hợp các diff khắc phục thống nhất cho các phát hiện mức Nghiêm trọng và Cao:

# 1. Run local scan with OpenAI GPT-4o and patch generation:
$ cyfendo scan --private \
    --provider openai \
    --model gpt-4o \
    --generate-patch \
    .

# 2. Run with Anthropic Claude Sonnet 5.5 and extended reasoning:
$ cyfendo scan --private \
    --provider anthropic \
    --model claude-sonnet-5-5 \
    --thinking high \
    --generate-patch \
    .

# 3. Steer how patches are written (a directive needs --generate-patch):
$ cyfendo scan --private \
    --provider openai \
    --model gpt-4o \
    --generate-patch \
    --directive "Use the shared db.query() helper for every SQL fix" \
    .

Xem lại phát hiện & áp dụng bản vá cục bộ

Mọi tệp kết quả được lưu trong .cyfendo/ ở thư mục gốc dự án của bạn. Xem báo cáo trong terminal và áp dụng bản vá chỉ bằng một lệnh:

# List all generated patches:
$ cyfendo patches

# View colorized diff for a specific finding:
$ cyfendo patch fnd_388b --show

# Apply patch directly to source code via git apply:
$ cyfendo patch fnd_388b --apply

# Read full Markdown audit report:
$ cat .cyfendo/report.md

Hướng dẫn thiết lập nhà cung cấp & thông tin xác thực cho Private Scan

Hướng dẫn thiết lập toàn diện cho các nhà cung cấp AI doanh nghiệp, nền tảng đám mây và mô hình cục bộ tự lưu trữ.

OpenAI (GPT-5.6, GPT-4o, O3-Mini, O1)

--provider openai

Hỗ trợ mọi mô hình chat và suy luận chính thức của OpenAI. Cũng hỗ trợ các cổng proxy tương thích OpenAI tùy chỉnh qua --endpoint hoặc OPENAI_BASE_URL.

export OPENAI_API_KEY="sk-proj-..."
$ cyfendo scan --private --provider openai --model gpt-4o --generate-patch .

# With custom OpenAI-compatible endpoint (e.g. corporate proxy / LiteLLM):
$ cyfendo scan --private --provider openai --endpoint "https://ai-proxy.corp.internal/v1" --model gpt-4o .

Anthropic Claude (Claude Sonnet 5.5, Claude Opus 5.5)

--provider anthropic

Tận dụng khả năng hiểu mã vượt trội và khả năng suy luận thích ứng của Claude. Dùng --thinking high để đạt độ sâu tối đa khi lan truyền taint sâu và sửa bản vá.

export ANTHROPIC_API_KEY="sk-ant-..."
$ cyfendo scan --private \
    --provider anthropic \
    --model claude-sonnet-5-5 \
    --thinking high \
    --generate-patch \
    .

Google Gemini & GCP Vertex AI

--provider gemini / vertex

Dùng Gemini Developer API tiêu chuẩn với khóa API, hoặc tận dụng GCP Vertex AI bằng Application Default Credentials (ADC) cấp doanh nghiệp trong phạm vi dự án Google Cloud của bạn.

# Option A: Gemini Developer API Key
export GEMINI_API_KEY="AIzaSy..."
$ cyfendo scan --private --provider gemini --model gemini-3.6-flash --generate-patch .

# Option B: GCP Vertex AI with Enterprise ADC
$ gcloud auth application-default login
export GCP_PROJECT="my-enterprise-gcp-project"
export VERTEX_AI_LOCATION="us-central1"
$ cyfendo scan --private --provider vertex --model gemini-3.6-flash .

Microsoft Azure OpenAI Service

--provider azure

Kết nối với tài nguyên Microsoft Azure OpenAI riêng tư của bạn với bảo mật mạng chuyên dụng, tuân thủ HIPAA/SOC-2 và ranh giới dữ liệu cấp doanh nghiệp.

export AZURE_OPENAI_ENDPOINT="https://my-resource.openai.azure.com/"
export AZURE_OPENAI_KEY="xxxxxxxxxxxxxxxxxxxxxxxx"
export AZURE_OPENAI_DEPLOYMENT="my-gpt4o-deployment"

$ cyfendo scan --private --provider azure --generate-patch .

Mô hình cục bộ & tại chỗ (Ollama, vLLM)

--provider ollama

Giữ việc suy luận của mô hình bên trong mạng của bạn. Với một công cụ suy luận cục bộ (chẳng hạn Ollama hoặc vLLM), không có lưu lượng mô hình nào rời khỏi máy hoặc mạng LAN riêng của bạn. Lưu lượng khác thì vẫn có: CLI gửi siêu dữ liệu bản quét và số lượng phát hiện tới một máy chủ Cyfendo, và máy chủ này phải truy cập được (với các mạng không có truy cập internet, hãy trỏ nó tới một máy chủ Cyfendo tại chỗ bằng --server); việc cài thư viện phụ thuộc cho bằng chứng khái niệm kết nối tới các kho gói; và việc tra cứu thư viện phụ thuộc gửi tên và phiên bản gói công khai tới các dịch vụ công khai, trừ khi bạn thêm --no-deps. Mô hình cục bộ có thể chậm trên máy trạm: mỗi yêu cầu có thể mất tới CYFENDO_LLM_TIMEOUT giây (mặc định 900 cho ollama).

# 1. Pull open-weights reasoning model in Ollama:
$ ollama pull deepseek-r1:32b
# (or: ollama pull qwen2.5-coder:32b / llama3.3:70b)

# 2. Run the scan on the local model (default endpoint http://localhost:11434/v1):
$ cyfendo scan --private \
    --provider ollama \
    --model deepseek-r1:32b \
    --generate-patch \
    .

# 3. For custom internal vLLM cluster:
$ cyfendo scan --private \
    --provider ollama \
    --endpoint "http://vllm-cluster.internal:8000/v1" \
    --model deepseek-ai/DeepSeek-R1 \
    .

Cài đặt quét & tùy chọn nâng cao

Tùy chỉnh phạm vi loại bỏ trùng lặp phát hiện, tổng hợp bản vá khắc phục bằng AI và chế độ đánh giá benchmark trên giao diện web và CLI.

Phạm vi loại bỏ trùng lặp (--dedup-scope)

Điều khiển cách các dấu vết taint thô và các phát hiện ứng viên trên đồ thị lời gọi, phạm vi AST và các tệp nguồn được gom nhóm thành các cảnh báo bảo mật hợp nhất:

  • root_cause (Mặc định): Gom nhóm AST đa yếu tố phổ quát trên các hàm và route. Hợp nhất các cảnh báo dư thừa thành các phát hiện theo nguyên nhân gốc để nhà phát triển phân loại.
  • file (Cô lập theo từng tệp): Ngăn các phát hiện ở những tệp riêng biệt bị gộp lại với nhau. Rất quan trọng với các bộ kiểm thử tổng hợp và các đợt kiểm tra chi tiết từng tệp một.
  • none (Dấu vết thô): Tắt hoàn toàn việc gom nhóm loại bỏ trùng lặp. Xuất trực tiếp mọi dấu vết phát hiện ứng viên đã được xác minh mà không gộp.

Chế độ Fast PoC so với bản vá khắc phục bằng AI (--generate-patch)

Theo mặc định, Cyfendo chạy ở chế độ Fast PoC—thực hiện đầy đủ việc lan truyền taint trên AST và xác minh khai thác trong sandbox gVisor chỉ trong vài giây mà không phải chờ tổng hợp bản vá bằng AI.

Để tạo các diff sửa lỗi chính xác cho các phát hiện mức Nghiêm trọng và Cao trong lúc quét, hãy bật công tắc trên giao diện web hoặc truyền --generate-patch trong CLI. Bạn cũng có thể tạo các bản vá được xác minh bằng hai tiêu chí (dual-oracle) theo yêu cầu ngay trong IDE lỗ hổng, hoặc bằng cyfendo patch <finding_id> --regenerate, cho bất kỳ phát hiện riêng lẻ nào.

Chế độ đánh giá benchmark (--benchmark-mode)

Được thiết kế cho các benchmark đánh giá tự động (như OWASP Benchmark, Juliet và các bộ kiểm thử tổng hợp tùy chỉnh). Khi bật, Cyfendo tự động áp dụng cô lập theo từng tệp (--dedup-scope=file) để tránh gộp giữa các tệp và tắt việc tạo bản vá ban đầu nhằm đạt thông lượng đánh giá tối đa và so sánh chính xác với đáp án chuẩn.

# 1. Run in Benchmark Mode (per-file isolation, fast PoC)
$ cyfendo scan . --benchmark-mode

# 2. Run with per-file deduplication and full AI patch generation
$ cyfendo scan . --dedup-scope=file --generate-patch

# 3. Run raw audit without any deduplication
$ cyfendo scan . --dedup-scope=none

Xem & áp dụng bản vá khắc phục

Cyfendo tạo các diff thống nhất sẵn sàng để xem xét cho các lỗ hổng đã được xác minh. Hãy xem và áp dụng chúng thủ công hoặc qua CLI.

# 1. List and export individual .patch files into .cyfendo/patches/
$ cyfendo patches

# 2. Inspect colorized diff for a specific finding in the terminal
$ cyfendo patch fnd_91a4 --show

# 3. Apply patch directly to local source code using git apply
$ cyfendo patch fnd_91a4 --apply

# 4. Or apply manually with standard git tooling
$ git apply .cyfendo/patches/01_sql_injection.patch

# 5. Regenerate a cloud finding's patch on the server, optionally with a steering directive:
$ cyfendo patch fnd_91a4 --regenerate --directive "Use the shared db.query() helper"

# 6. Generate patches via Cyfendo server during scan & export unified bundle (no --private flag):
$ cyfendo scan . --generate-patch --patch-bundle fixes.patch
$ git apply fixes.patch

Kiểm tra thư viện phụ thuộc của bên thứ ba

Mỗi bản quét đầy đủ cũng liệt kê các gói phần mềm mà dự án của bạn phụ thuộc vào và các lỗ hổng đã được công bố ảnh hưởng đến chúng.

Cyfendo đọc các lockfile và manifest của bạn, rồi tra từng phiên bản gói trong các nguồn cảnh báo bảo mật công khai: OSV.dev (GitHub Advisory Database, PyPA, Go, RustSec và các gói độc hại của OpenSSF), danh mục CISA Known Exploited Vulnerabilities và điểm khai thác FIRST EPSS.

Đây là các cảnh báo bảo mật đã được công bố, không phải phát hiện của Cyfendo. Cyfendo không kiểm thử chúng trên ứng dụng của bạn, nên chúng có trang và báo cáo riêng: chúng không bao giờ làm thay đổi số lượng phát hiện, điểm rủi ro, cổng --fail-on hay SARIF phát hiện của bạn. Phần kiểm tra này không dùng thêm tín dụng quét nào, và lockfile không bao giờ được tính là LOC được bảo vệ.

Chạy ở đâu

Ở đâu Khi nào chạy Kết quả nằm ở đâu
Giao diện web, kho Git, Cloud CLI Mọi bản quét, trên các worker của Cyfendo. Nút Dependencies trên trang bản quét, và Export Report → SBOM (CycloneDX 1.6). Một bản quét CLI cũng lưu .cyfendo/dependencies.json.
Private Scan Mọi bản quét đầy đủ, trên máy của bạn. --no-deps bỏ qua bước này. Kiểm tra nhanh (--changed, --paths) chỉ chạy bước này khi --deps-fail-on, --sbom hoặc --sarif-include-deps cần kết quả của nó. .cyfendo/dependencies.json và .cyfendo/sbom.cdx.json, chỉ trên máy của bạn.
cyfendo deps Khi bạn chạy lệnh. Không dùng mô hình AI và không tải lên. Cần đăng nhập, miễn phí trên mọi gói và không dùng tín dụng quét. Terminal, .cyfendo/dependencies.json, và các tệp --sbom, --sarif và -o.
Công cụ lập trình AI Các bản quét đầy đủ. Việc kiểm tra các tệp mà một tác vụ đã thay đổi sẽ bỏ qua bước này. Một phần dependencies trong kết quả của tác tử của bạn (xem bên dưới), và trang Dependencies của bản quét.

Những gì được đọc

Cyfendo đọc lockfile trước, và đọc manifest ở những nơi không có lockfile nào bao phủ một gói.

Hệ sinh thái Lockfile (đọc trước) Manifest (khi không có lockfile bao phủ)
npm package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml, bun.lock package.json
PyPI uv.lock, poetry.lock, pdm.lock, pylock.toml, Pipfile.lock, đầu ra của pip-compile requirements*.txt, pyproject.toml, Pipfile, setup.cfg, setup.py
Go go.mod Không cần
Maven / Gradle gradle.lockfile pom.xml, build.gradle, build.gradle.kts, libs.versions.toml
NuGet packages.lock.json *.csproj, *.fsproj, *.vbproj, packages.config
Cargo, Composer Cargo.lock, composer.lock Cargo.toml, composer.json
RubyGems, Hex, Pub, Swift Gemfile.lock, mix.lock, pubspec.lock, Package.resolved Không có: nếu thiếu lockfile thì không biết được phiên bản

Khi không có lockfile nào bao phủ một gói, Cyfendo suy ra phiên bản mà một lần cài mới hiện nay sẽ nhận được: các khoảng phiên bản npm và PyPI được giải quyết trên registry công khai, còn các gói phụ thuộc gián tiếp của các gói npm, PyPI, Maven/Gradle và Cargo trực tiếp lấy từ deps.dev. Báo cáo gắn nhãn các phiên bản này, vì chúng có thể khác với những gì bạn phát hành.

Các bản quét kho Git và tải lên từ CLI có kèm lockfile của bạn. Việc tải thư mục lên qua giao diện web loại bỏ các tệp có đuôi .lock (như yarn.lock và poetry.lock) và thư mục packages/, và một công cụ lập trình AI tải tệp lên thường cũng không gửi lockfile, nên các lần kiểm tra đó dựa nhiều hơn vào manifest của bạn. Để có danh sách đầy đủ nhất, hãy quét qua Git hoặc CLI.

Mức ưu tiên

Mức ưu tiên Ý nghĩa
P1 Một gói độc hại đã biết, hoặc một cảnh báo bảo mật nằm trong danh sách của CISA về các lỗ hổng bị khai thác trong thực tế. Hãy sửa những mục này trước.
P2 Mức độ nghiêm trọng cao hoặc nghiêm trọng ở một gói mà ứng dụng của bạn phát hành, hoặc điểm EPSS từ 10% trở lên.
P3 Mức độ nghiêm trọng thấp hơn hoặc chưa được xếp hạng, hoặc một cảnh báo mức cao hoặc nghiêm trọng ở một gói trực tiếp mà mã của bạn dường như không import.
P4 Chỉ các gói phát triển hoặc kiểm thử (một gói độc hại đã biết vẫn là P1).

Mức độ nghiêm trọng là xếp hạng do cảnh báo bảo mật công bố; mức ưu tiên là thứ tự cần sửa trước do Cyfendo xác định. Cyfendo kiểm tra xem mã của bạn có import từng gói hay không chỉ để xếp hạng các cảnh báo. Cyfendo không bao giờ ẩn cảnh báo nào, vì một gói không được import vẫn có thể được nạp bởi một plugin, một công cụ hoặc cấu hình.

Mỗi cảnh báo bảo mật liệt kê phiên bản đầu tiên đã được sửa. Cyfendo không tạo bản vá cho các thư viện phụ thuộc: hãy nâng cấp lên phiên bản đó, hoặc gỡ gói độc hại và đổi mọi secret mà quá trình build hay ứng dụng có thể truy cập được.

Lệnh CLI & cổng kiểm soát CI

# Packages and advisories only
$ cyfendo deps .

# Fail CI on high or critical
$ cyfendo deps . --fail-on high \
    --sbom sbom.cdx.json \
    --sarif deps.sarif

# List packages, send nothing
$ cyfendo deps . --offline

# As part of a scan
$ cyfendo scan . \
    --deps-fail-on high \
    --sbom sbom.cdx.json \
    --sarif results.sarif \
    --sarif-include-deps

# Private Scan without the lookup
$ cyfendo scan --private . --no-deps

--deps-fail-on trên một bản quét, và --fail-on trên cyfendo deps, thoát với mã 1 nếu một cảnh báo bảo mật từ mức đó trở lên ảnh hưởng đến một gói không chỉ dành cho phát triển. Một gói độc hại đã biết luôn làm cổng kiểm soát thất bại. Chúng cũng thoát với mã 1 khi việc tra cứu cảnh báo bảo mật không hoàn tất (không truy cập được OSV.dev, hoặc hết thời gian), vì một danh sách chưa được kiểm tra đầy đủ thì không chứng minh được điều gì. Khi việc tra cứu bị tắt (--offline, CYFENDO_SCA, --no-deps), cổng không được áp dụng và CLI sẽ báo điều đó. --fail-on trên cyfendo scan chỉ áp dụng cho các phát hiện trong mã.

Giám sát hằng ngày

Mỗi ngày, Cyfendo kiểm tra lại các gói của bản quét đám mây mới nhất của từng dự án với OSV.dev. Các cảnh báo bảo mật được công bố kể từ bản quét đó xuất hiện dưới mục Published since this scan trên trang Dependencies của nó và trong thông báo của bạn, và chủ sở hữu không gian làm việc nhận một email (các cảnh báo chỉ ảnh hưởng đến gói phát triển thì có thông báo chứ không có email). Một cảnh báo tự đóng khi cảnh báo bảo mật không còn ảnh hưởng đến phiên bản đó nữa, và một bản quét mới sẽ thay thế danh sách gói được giám sát.

Để dừng việc này cho một dự án, hãy nhấp Turn off monitoring trên trang Dependencies (vai trò của bạn cần có quyền quản lý dự án). Các Private Scan không được giám sát: danh sách gói của chúng không bao giờ đến được Cyfendo.

Trong công cụ lập trình AI

Kết quả bản quét đầy đủ đã hoàn tất và cyfendo_status có kèm một phần dependencies: số lượng theo mức ưu tiên, tối đa 10 cảnh báo P1 và P2 (gói, phiên bản, ID cảnh báo, CVE, mức độ nghiêm trọng, phiên bản đã sửa) và tối đa 10 cảnh báo giám sát đang mở. Tác tử của bạn báo cáo chúng là các cảnh báo bảo mật về thư viện phụ thuộc, tách biệt với các vấn đề đã được xác nhận. Chúng không có ID phát hiện, nên cyfendo_generate_fix không áp dụng: cách sửa là nâng cấp.

Chỉ các mã định danh và con số này được gửi đến tác tử. Nội dung văn bản của cảnh báo bảo mật đến từ bên thứ ba và không bao giờ được chuyển tiếp, và một tên gói có thể bị hiểu là chỉ dẫn cho tác tử sẽ được đếm nhưng không được liệt kê. Trang Dependencies của bản quét liệt kê mọi thứ.

REST API

Endpoint Chức năng
GET /api/v1/scans/<scan_id>/dependencies Báo cáo của bản quét và, với bản quét được giám sát của dự án, các cảnh báo đang mở của nó. Thêm ?components=1 để có danh sách gói đầy đủ.
GET /api/v1/scans/<scan_id>/export/sbom SBOM CycloneDX 1.6 của các gói trong bản quét và các cảnh báo bảo mật của chúng.
GET /api/v1/projects/<project_id>/dependency-alerts Cảnh báo giám sát: ?status=open (mặc định), resolved hoặc all.
POST /api/v1/projects/<project_id>/dependency-monitoring Bật hoặc tắt giám sát bằng {"enabled": true} hoặc {"enabled": false}.

Những gì được gửi đi

Tên và phiên bản gói, không bao giờ gửi mã nguồn, đường dẫn tệp hay tên dự án:

  • OSV.dev nhận tên và phiên bản gói, còn FIRST EPSS nhận các CVE ID tìm được. Danh mục CISA được tải xuống, nên CISA không nhận được gì về dự án của bạn.
  • Khi không có lockfile nào bao phủ một gói, deps.dev nhận tên và phiên bản của nó, còn npm registry hoặc PyPI nhận tên của các gói được khai báo với một khoảng phiên bản.
  • Các gói workspace, gói theo đường dẫn và gói git, cũng như các gói mà lockfile, phạm vi .npmrc/.yarnrc.yml hoặc thiết lập package-index gắn với một registry riêng tư, không bao giờ được gửi (một gói không có phạm vi được lấy qua proxy registry được coi là công khai).
  • Trong Private Scan và cyfendo deps, các yêu cầu này đi trực tiếp từ máy của bạn, và không có thông tin nào về thư viện phụ thuộc của bạn đến được Cyfendo. --no-deps và cyfendo deps --offline bỏ qua các yêu cầu này. Private Scan vẫn cài thư viện phụ thuộc của dự án để các bằng chứng khái niệm chạy được, dù có --no-deps hay không, và việc cài đặt đó kết nối tới các kho gói.
  • Trong bản quét đám mây, các yêu cầu đến từ các worker của Cyfendo, và danh sách gói của bản quét mới nhất được giữ lại để giám sát.

Giới hạn

  • Khoảng phiên bản chỉ được giải quyết cho npm và PyPI; ở các hệ sinh thái khác, một khoảng phiên bản không có lockfile được liệt kê là chưa kiểm tra. Mỗi bản quét tra cứu tối đa 150 khoảng phiên bản và đồ thị phụ thuộc của 60 gói trực tiếp.
  • Việc tra cứu dừng sau 240 giây theo mặc định (CYFENDO_SCA_BUDGET_SECONDS, hoặc --timeout trên cyfendo deps). Nếu một nguồn chậm hoặc không truy cập được, báo cáo sẽ nêu rằng danh sách có thể chưa đầy đủ và bản quét vẫn tiếp tục, nhưng cổng kiểm soát thư viện phụ thuộc thoát với mã 1.
  • Phần kiểm tra này không đọc các gói hệ điều hành, container image hay mã vendored.

Cổng chất lượng CI/CD & bảo vệ pull request trên GitHub

Áp dụng bảo mật dịch chuyển sang trái (shift-left) tự động ngay trên các pull request GitHub. Tự động quét các diff mã, đăng chú thích SARIF trực tiếp trên tab Files changed của PR, chặn hợp nhất khi có lỗ hổng mức cao/nghiêm trọng thông qua GitHub Branch Protection, và tạo tệp bản vá 1-click để nhà phát triển khắc phục ngay.

1. Kích hoạt từ PR
Sự kiện PR & chạy đồng thời

Kích hoạt khi pull request opened, synchronize (commit mới) và reopened. Tính năng hủy chạy đồng thời thông minh sẽ hủy các lần chạy đã bị thay thế để tiết kiệm phút runner và token AI.

2. Kiểm tra ngay trên runner
Kiểm tra tự động

Chạy trên máy ảo runner CI của bạn bằng Cyfendo Private Scan (hoặc trên các Cloud Worker được quản lý). Trong Private Scan, không có mã nguồn nào được gửi tới Cyfendo: một phần mã của bạn, kể cả nguyên tệp mã nguồn, được chuyển trực tiếp tới nhà cung cấp AI bạn đã cấu hình (hoặc ở lại trong mạng của bạn nếu dùng mô hình cục bộ), và siêu dữ liệu bản quét cùng số lượng phát hiện được gửi tới Cyfendo để đo hạn mức.

3. SARIF 2.1.0
Chú thích trực tiếp trên PR

Xuất các phát hiện theo chuẩn SARIF 2.1.0 và tải lên qua upload-sarif@v4. Các cảnh báo bảo mật, liên kết CWE và dấu vết taint hiển thị ngay trên tab Files changed của PR.

4. Cổng hợp nhất
Cổng bảo vệ nhánh

Chính sách --fail-on=high thoát với mã 1 nếu các lỗ hổng vượt ngưỡng mức độ nghiêm trọng của bạn, khiến GitHub Branch Protection vô hiệu hóa nút Merge pull request.

1 Cấu hình secret của kho mã nguồn trên GitHub.com

Trong kho GitHub của bạn, vào Settings → Secrets and variables → Actions → New repository secret. (Với thiết lập cho toàn tổ chức hoặc monorepo, hãy cấu hình ở Organization Settings → Secrets and variables → Actions).

CYFENDO_API_KEY

Token không gian làm việc của bạn từ bảng điều khiển Cyfendo. Xác thực hạn mức LOC được bảo vệ & giới hạn quyền sử dụng mà không truyền mã nguồn.

GEMINI_API_KEY / OPENAI_API_KEY

Khóa mô hình AI thương mại của bạn (Gemini, OpenAI, Anthropic hoặc Azure). Được truyền thẳng cho CLI trên runner, không qua proxy trung gian nào.

GITHUB_TOKEN (Automatic)

Token GitHub Actions tích hợp sẵn. Được runner GitHub tự động cung cấp; được upload-sarif@v4 dùng để đăng chú thích trực tiếp trên PR.

CYFENDO_WORKSPACE_ID (Optional)

ID không gian làm việc Business đích (ví dụ: ws_acme_corp_8f3a). Giới hạn các bản quét kho trong CI/CD vào hạn mức dùng chung của tổ chức công ty bạn.

2 Thêm tệp workflow cho pull request (.github/workflows/cyfendo-pr.yml)

Chạy đợt kiểm tra lỗ hổng tự động cục bộ trên máy ảo runner GitHub Actions của bạn bằng Cyfendo Private Scan. Không có mã nguồn nào được gửi tới máy chủ của Cyfendo. Một phần mã của bạn, kể cả nguyên tệp mã nguồn, được chuyển thẳng tới nhà cung cấp AI bạn đã phê duyệt, và siêu dữ liệu bản quét cùng số lượng phát hiện được gửi tới Cyfendo để đo hạn mức. (Để giữ mã và prompt trong mạng của riêng bạn, hãy dùng Chế độ 3 với mô hình cục bộ.)

name: Cyfendo PR Security Gate

on:
  pull_request:
    branches: [main, master]
    types: [opened, synchronize, reopened]

# Cancel in-progress runs when new commits are pushed to the same pull request
concurrency:
  group: cyfendo-${{ github.workflow }}-${{ github.head_ref || github.ref }}
  cancel-in-progress: true

jobs:
  security-gate:
    name: Cyfendo Private Security Gate
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write  # Required to publish SARIF alerts to GitHub PR Files Changed tab
      actions: read  # Required for upload-sarif to query workflow run metadata

    steps:
      - name: Checkout Pull Request Code
        uses: actions/checkout@v4

      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install Cyfendo CLI & Model Provider SDK
        run: |
          pip install --upgrade cyfendo google-genai
          # For OpenAI:    pip install --upgrade cyfendo openai
          # For Anthropic: pip install --upgrade cyfendo anthropic

      - name: Run Cyfendo Private Scan
        env:
          CYFENDO_API_KEY: ${{ secrets.CYFENDO_API_KEY }}
          GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
          # OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          # ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: >
          cyfendo scan .
          --private
          --provider gemini
          --fail-on high
          --generate-patch
          --sarif cyfendo-results.sarif
          --no-interactive

      # Publish standard SARIF 2.1.0 findings to PR "Files changed" annotations
      - name: Upload SARIF to GitHub PR & Security Tab
        uses: github/codeql-action/upload-sarif@v4
        if: always() && hashFiles('cyfendo-results.sarif') != ''  # Upload whenever SARIF exists (even if quality gate fails)
        continue-on-error: true  # Resilient if GitHub Advanced Security is disabled on private repos
        with:
          sarif_file: cyfendo-results.sarif

      # Archive generated remediation patches so developers can download & apply them
      - name: Archive Remediation Patches & SARIF
        uses: actions/upload-artifact@v4
        if: always()
        continue-on-error: true
        with:
          name: cyfendo-remediation-patches
          include-hidden-files: true  # .cyfendo/ is a hidden folder, which upload-artifact skips by default
          path: |
            cyfendo-results.sarif
            .cyfendo/patches/
            .cyfendo/report.md

      # Publish quick audit summary directly into the GitHub Actions run summary
      - name: Publish PR Step Summary
        if: always()
        run: |
          if [ -f .cyfendo/report.md ]; then
            echo "## Cyfendo Security Gate Summary" >> $GITHUB_STEP_SUMMARY
            cat .cyfendo/report.md >> $GITHUB_STEP_SUMMARY
          fi

3 Áp dụng kiểm tra trạng thái bằng quy tắc GitHub Branch Protection

Để ngăn các pull request còn lỗ hổng nghiêm trọng hoặc mức cao chưa được vá bị hợp nhất vào production, hãy đặt Cyfendo làm kiểm tra trạng thái bắt buộc trên các nhánh được bảo vệ của bạn:

Thiết lập GitHub Branch Protection từng bước

  1. Mở kho của bạn trên github.com và nhấp tab Settings.
  2. Ở thanh bên trái, dưới Code and automation, nhấp Branches (hoặc Rules → Rulesets).
  3. Nhấp Add branch protection rule (hoặc sửa quy tắc hiện có của bạn cho main).
  4. Ở mục Branch name pattern, nhập main (hoặc tên nhánh production của bạn).
  5. Đánh dấu “Require a pull request before merging”.
  6. Đánh dấu “Require status checks to pass before merging”.
  7. Trong ô tìm kiếm kiểm tra trạng thái, tìm và chọn Cyfendo Private Security Gate (hoặc tên job được chỉ định trong YAML của bạn).
  8. Đánh dấu “Require branches to be up to date before merging” để bảo đảm các bài kiểm thử chạy trên commit đích mới nhất.
  9. Nhấp Save changes / Create.

Nhà phát triển thấy gì trên GitHub.com:

Pull Request #42: Refactor user authentication routes
feature/auth-routes → main
Cyfendo Private Security Gate — Thất bại Hoàn tất trong 48s • Details

Tìm thấy 1 lỗ hổng mức Cao (CWE-89 SQL Injection trong services/auth.py:48). Ngưỡng của cổng là --fail-on=high.

Unit Tests & Linting Đạt trong 1m 12s • Details

Tất cả 42 bộ kiểm thử đã đạt thành công.

4 Nhà phát triển xem xét & khắc phục bằng bản vá 1-click

Cyfendo biến việc xem xét bảo mật thành quy trình xem xét mã tiêu chuẩn. Nhà phát triển có thể xem các phát hiện ngay trong diff của pull request và áp dụng các bản vá đã tạo chỉ trong vài giây:

Chú thích mã trực tiếp trên PR

Vì các phát hiện được tải lên theo định dạng SARIF 2.1.0 chuẩn, GitHub tự động hiển thị cảnh báo ngay trên chế độ xem Files changed của PR. Mỗi chú thích hiển thị đúng dòng mã có lỗ hổng, đường đi taint từ dữ liệu đầu vào không tin cậy tới sink, định nghĩa CWE và hướng dẫn khắc phục.

Áp dụng các bản vá đã tải về

Một bản quét PR chạy với --generate-patch, như trong cả hai quy trình GitHub Actions đầy đủ ở trên, lưu trữ các bản vá diff thống nhất cho các phát hiện mức Nghiêm trọng và Cao của nó trong bảng Artifacts của GitHub Actions. Nhà phát triển có thể tải cyfendo-remediation-patches.zip và áp dụng các bản sửa cục bộ chỉ bằng một lệnh:

# Apply autonomous patch locally
$ git apply .cyfendo/patches/01_sql_injection.patch

# Commit and push back to the pull request
$ git commit -am "fix(security): apply Cyfendo remediation patch"
$ git push origin feature/auth-routes
Tự động mở khóa hợp nhất

Việc đẩy commit khắc phục sẽ lập tức kích hoạt một bản quét PR mới của Cyfendo. Khi không còn lỗ hổng nào trên ngưỡng chính sách của bạn, kiểm tra trạng thái chuyển sang xanh (Cyfendo Private Security Gate — Passed), và GitHub Branch Protection tự động bật lại nút Merge pull request.

Nhóm & không gian làm việc Business

Không gian làm việc tổ chức nhiều người dùng, kiểm soát truy cập theo vai trò (RBAC) chi tiết 3 cấp, liên kết nhiều tài khoản, hạn mức dùng chung của nhóm và tiếp nhận thành viên tự động.

1. Loại tài khoản & kiến trúc

Cyfendo tách biệt việc phát triển cá nhân với cộng tác nhóm của tổ chức:

Tài khoản nhà phát triển (không gian làm việc cá nhân)

Phù hợp cho nhà phát triển độc lập, người sáng lập và chuyên gia tư vấn bảo mật. Gắn với một danh tính cá nhân, với các gói thanh toán cá nhân (Free tới 10K LOC, Starter, Growth hoặc Scale) và kho riêng tư.

Tài khoản Business (không gian làm việc tổ chức)

Được thiết kế cho các nhóm kỹ thuật và doanh nghiệp. Có không gian làm việc mang tên tổ chức (ví dụ: Acme Cybersecurity Inc.), dung lượng LOC được bảo vệ dùng chung và hạn mức quét hằng tháng chia sẻ cho mọi thành viên trong nhóm, xuất hóa đơn tập trung và quản lý nhiều người dùng.

Một danh tính → nhiều không gian làm việc

Một lần đăng nhập (email/mật khẩu hoặc SSO Google Workspace) có thể liên kết đồng thời với một không gian làm việc nhà phát triển cá nhân và nhiều tổ chức Business. Chuyển đổi giữa các không gian làm việc ngay lập tức qua menu thả xuống ở thanh điều hướng trên cùng trong giao diện web hoặc qua cyfendo workspace switch trong CLI.

2. Ma trận kiểm soát truy cập theo vai trò (RBAC)

Mỗi thành viên của không gian làm việc Business được gán một trong ba vai trò chuẩn để thực thi bảo mật theo đặc quyền tối thiểu:

Ma trận quyền kiểm soát truy cập theo vai trò (RBAC) của không gian làm việc Business Cyfendo
Khả năng / Hành động Chủ sở hữu không gian làm việc Chạy & xem (Kỹ sư) Chỉ xem (Kiểm toán viên)
Chạy bản quét bảo mật (giao diện web & CLI) ✔ Được phép ✔ Được phép ✖ Bị chặn (403)
Tạo / liên kết dự án được bảo vệ ✔ Được phép ✔ Được phép ✖ Bị chặn
Xem lỗ hổng & bản vá AI ✔ Đầy đủ ✔ Đầy đủ ✔ Chỉ đọc
Xuất báo cáo SARIF, PDF & tuân thủ ✔ Được phép ✔ Được phép ✔ Được phép
Mời & quản lý thành viên nhóm ✔ Độc quyền ✖ Không có quyền truy cập ✖ Không có quyền truy cập
Quản lý thanh toán, hóa đơn & nâng cấp gói ✔ Độc quyền ✖ Không có quyền truy cập ✖ Không có quyền truy cập
Xóa dự án / không gian làm việc ✔ Độc quyền ✖ Không có quyền truy cập ✖ Không có quyền truy cập

3. Quản lý nhóm & lời mời an toàn

Chủ sở hữu không gian làm việc quản lý cộng tác viên thông qua Team Dashboard riêng (/team):

Lời mời qua email bằng token

Chủ sở hữu mời đồng đội bằng cách nhập địa chỉ email và vai trò được gán (Run & View hoặc View-Only). Cyfendo phát hành một liên kết có token an toàn về mặt mật mã, có hiệu lực trong 7 ngày.

Tiếp nhận không rườm rà

Nếu người được mời đã có tài khoản Cyfendo, việc mở liên kết sẽ gắn tổ chức vào danh tính của họ ngay lập tức. Nếu họ mới dùng Cyfendo, họ hoàn tất bước kích hoạt một bước gọn nhẹ (/auth/activate/<token>) mà không cần nhập thông tin thẻ tín dụng.

Cô lập dữ liệu nghiêm ngặt & thu hồi quyền truy cập tức thì

Kho mã nguồn của công ty, ảnh chụp mã nguồn, dữ liệu theo dõi bản quét và bản vá khắc phục thuộc hoàn toàn về không gian làm việc của tổ chức. Khi một nhân viên bị gỡ, quyền truy cập của họ vào mọi tài sản của công ty được thu hồi ngay lập tức, trong khi không gian làm việc nhà phát triển cá nhân của họ vẫn hoàn toàn nguyên vẹn.

4. CLI nhiều không gian làm việc & ngữ cảnh CI/CD

Nhà phát triển xác thực một lần bằng khóa API cá nhân và có thể đưa các bản quét vào bất kỳ không gian làm việc nào họ truy cập được:

# View all accessible personal & business workspaces:
$ cyfendo workspaces

# Switch local CLI default workspace context:
$ cyfendo workspace switch ws_acme_corp_8f3a

# Scan directly within an organization context without changing default:
$ cyfendo scan . --workspace ws_acme_corp_8f3a --generate-patch

# Configure CI/CD runners (GitHub Actions / GitLab CI) to use organization quota:
$ export CYFENDO_WORKSPACE_ID=ws_acme_corp_8f3a
$ cyfendo scan . --generate-patch

LOC được bảo vệ & tính hạn mức

Tìm hiểu cách số dòng mã được đếm, lưu đệm và tính phí theo mô hình LOC được bảo vệ của Cyfendo.

Chỉ tính dòng mã nguồn

Cyfendo chỉ đo các dòng mã nguồn thực thi. Dòng trống, khối chú thích, các thư mục vendor của bên thứ ba (ví dụ node_modules/, vendor/, venv/), gói đã thu nhỏ (minified) và tệp nhị phân đã biên dịch được tự động lọc bỏ và không bao giờ bị tính phí. Private Scan đếm theo cùng cách với bản quét trên đám mây.

Không tính phí hai lần khi quét lại

Trong một chu kỳ thanh toán, việc quét lại một Dự án được bảo vệ hiện có sẽ dùng lại dung lượng LOC bạn đã đăng ký. Nếu bạn quét lại cùng một codebase 10,000 LOC 50 lần trong CI/CD, bạn dùng đúng 10,000 LOC được bảo vệ, không phải 500,000.

Bộ đệm AST tăng dần

Khi bạn đẩy commit hoặc quét các nhánh tính năng, bộ đệm phân tán của Cyfendo nhận diện ngay các tệp không thay đổi thông qua mã băm AST mật mã, bảo đảm thời gian phản hồi dưới một giây và xác thực khai thác tức thì.

Tham chiếu đầy đủ các lệnh CLI

Bảng tra cứu nhanh về mọi lệnh và cờ hiện có.

Danh sách đầy đủ các lệnh, cờ, mô tả và ví dụ của Cyfendo CLI
Lệnh / Cờ Mô tả Ví dụ
cyfendo login Xác thực CLI và lưu thông tin xác thực vào ~/.cyfendo/config.json. cyfendo login --key cy_live_...
cyfendo whoami Hiển thị tài khoản người dùng đang dùng, vai trò, tổ chức và mức sử dụng hạn mức. cyfendo whoami
cyfendo status Bí danh của whoami: hiển thị số dư LOC được bảo vệ, giới hạn của gói và trạng thái thời gian ân hạn. cyfendo status
cyfendo projects Liệt kê các dự án được bảo vệ đang hoạt động trong không gian làm việc của bạn kèm số LOC. cyfendo projects
cyfendo scan <path> Đóng gói thư mục (tuân theo .gitignore / .cyfendoignore ở mọi cấp và không bao giờ đưa vào tệp .env hay khóa riêng), tải lên sandbox đám mây của Cyfendo và truyền trực tiếp dữ liệu theo dõi của đợt kiểm tra. cyfendo scan .
cyfendo scan --private <path> Cyfendo Private Scan: phân tích, xác minh và tạo bản vá chạy trên máy này mà không gửi mã nguồn tới Cyfendo, bằng khóa LLM của riêng bạn hoặc mô hình cục bộ. Chỉ siêu dữ liệu bản quét và số lượng phát hiện được đồng bộ về Cyfendo, và Cyfendo phải truy cập được để xác minh quyền sử dụng. cyfendo scan --private .
--provider <name> Chỉ định nhà cung cấp AI cho Cyfendo Private Scan: openai, anthropic, gemini, vertex, azure hoặc ollama. --provider openai
--model <name> Chỉ định mô hình LLM đích (ví dụ gpt-4o, gpt-4o-mini, claude-sonnet-5-5, gemini-3.6-flash, deepseek-r1:32b). Một mô hình đã chỉ định là ràng buộc, kể cả khi đặt bằng cyfendo config --set-model hoặc CYFENDO_BYOM_MODEL: chỉ mô hình đó chạy, và một lệnh gọi mà mô hình từ chối hoặc thất bại sẽ bị mất, điều này được nêu trong phần tóm tắt. Nếu không chỉ định mô hình, mô hình mặc định của nhà cung cấp và các mô hình dự phòng sẽ chạy. Hãy để trống mô hình ở những nơi một lệnh gọi bị từ chối không được khiến --fail-on không đạt. --model gpt-4o
--llm-key <key> Khóa API trực tiếp cho nhà cung cấp LLM đã chọn (hoặc xuất qua OPENAI_API_KEY, ANTHROPIC_API_KEY, v.v.). --llm-key sk-proj-...
--endpoint <url> URL cơ sở tương thích OpenAI tùy chỉnh cho proxy doanh nghiệp, vLLM hoặc Ollama tự lưu trữ. --endpoint http://localhost:11434/v1
CYFENDO_LLM_TIMEOUT Thời gian chờ mô hình cho mỗi yêu cầu, tính bằng giây, áp dụng cho mọi nhà cung cấp (mặc định 900 cho ollama, 180 cho nhà cung cấp trên đám mây). Hãy tăng giá trị này cho các mô hình cục bộ lớn. CYFENDO_LLM_TIMEOUT=1800
--thinking <level> Đặt mức nỗ lực suy luận cho các mô hình có khả năng suy luận (off / none, low, medium, high). --thinking high
--directive <text> Định hướng cách viết bản vá (cần --generate-patch; không được gửi cùng bản quét trên đám mây). --directive "Use the db.query() helper"
cyfendo config Xem hoặc cấu hình các giá trị mặc định lâu dài của CLI (--set-provider, --set-model, --set-thinking, --set-llm-key, --set-endpoint, --show). cyfendo config --set-provider openai
cyfendo workspaces Liệt kê mọi không gian làm việc cá nhân và Business truy cập được, kèm loại tài khoản, vai trò và trạng thái. cyfendo workspaces
cyfendo workspace switch <id> Chuyển ngữ cảnh không gian làm việc đang dùng mặc định tại máy trong ~/.cyfendo/config.json. cyfendo workspace switch ws_acme_corp
--workspace, -w <id> Cờ toàn cục để chạy bất kỳ lệnh nào trong một không gian làm việc tổ chức cụ thể. Dùng được trước hoặc sau lệnh con. cyfendo -w ws_acme_corp scan .
--key <key> Cờ toàn cục: khóa API Cyfendo cho lệnh này (ghi đè CYFENDO_API_KEY và khóa đã lưu). cyfendo --key cy_live_... whoami
--server <url> Cờ toàn cục: URL máy chủ Cyfendo cho máy chủ tự lưu trữ hoặc cục bộ (ghi đè CYFENDO_SERVER_URL và máy chủ đã lưu). --server http://127.0.0.1:8080
CYFENDO_WORKSPACE_ID Biến môi trường chỉ định ngữ cảnh không gian làm việc đích (khuyến nghị cho runner CI/CD). CYFENDO_WORKSPACE_ID=ws_...
--project, -p Gắn lần chạy quét với tên hoặc ID của một Dự án được bảo vệ hiện có. --project "backend-api"
--dedup-scope <scope> Đặt phạm vi loại bỏ trùng lặp lỗ hổng: root_cause (mặc định), file (cô lập theo từng tệp) hoặc none (dấu vết thô). --dedup-scope=file
--benchmark-mode Chạy ở chế độ đánh giá benchmark (ghi đè --dedup-scope=file và tắt việc tạo bản vá). --benchmark-mode
--generate-patch Tổng hợp và xác minh trong sandbox các bản vá khắc phục bằng AI cho các phát hiện mức Nghiêm trọng và Cao trong lúc quét. --generate-patch
--no-patch Bỏ qua việc tạo bản vá khắc phục một cách tường minh (chế độ Fast PoC mặc định). --no-patch
--patch-bundle <path> Xuất tệp gói tổng hợp các diff khắc phục thống nhất. --patch-bundle fixes.patch
--fail-on <level> Thoát với mã 1 nếu có phát hiện ở mức bằng hoặc cao hơn ngưỡng (critical, high, medium, low), hoặc nếu phần nghiên cứu của Private Scan không hoàn tất. --fail-on=high
cyfendo deps [path] Liệt kê các gói phần mềm của bên thứ ba và các cảnh báo bảo mật đã công bố ảnh hưởng đến chúng (OSV.dev, CISA KEV, FIRST EPSS), không dùng LLM và không tải lên. Nhận các cờ --fail-on, --sbom, --sarif, -o, --offline, --all. --fail-on cũng thoát với mã 1 nếu việc tra cứu cảnh báo bảo mật không hoàn tất. cyfendo deps . --fail-on high
--deps-fail-on <level> Thoát với mã 1 nếu các cảnh báo bảo mật về thư viện phụ thuộc ở mức bằng hoặc cao hơn ngưỡng ảnh hưởng đến các gói không chỉ dành cho phát triển, hoặc nếu việc tra cứu cảnh báo bảo mật không hoàn tất. Tách biệt với --fail-on, vốn chỉ áp dụng cho các phát hiện trong mã. --deps-fail-on=critical
--sbom <path> Xuất SBOM CycloneDX 1.6 của các gói bên thứ ba trong dự án và các cảnh báo bảo mật của chúng. --sbom sbom.cdx.json
--sarif-include-deps Thêm các cảnh báo bảo mật về thư viện phụ thuộc vào tệp --sarif dưới dạng một lần chạy riêng. --sarif-include-deps
--no-deps Private Scan: bỏ qua phần kiểm tra thư viện phụ thuộc, nên không có tên gói nào được gửi tới OSV.dev. --no-deps
--output, -o <path> Ghi thêm một bản sao JSON kết quả quét vào đường dẫn này (luôn được lưu vào .cyfendo/scan-results.json). --output results.json
--sarif <path> Xuất các phát hiện theo định dạng OASIS SARIF 2.1.0 JSON để tích hợp GitHub / IDE. --sarif=results.sarif
--clean Xóa mọi checkpoint các giai đoạn phân tích đã lưu đệm và buộc quét mới từ đầu (mã đã sửa, cài đặt thay đổi hoặc nâng cấp CLI sẽ tự làm điều đó). --clean
--changed [ref] Private Scan: kiểm tra nhanh những gì đã thay đổi kể từ một bản sửa đổi Git (mặc định: công việc chưa commit). Kết quả nằm trong .cyfendo/quick/. Thư viện phụ thuộc chỉ được kiểm tra khi --deps-fail-on, --sbom hoặc --sarif-include-deps cần kết quả. --changed origin/main
--paths <path...> Private Scan: kiểm tra nhanh các tệp hoặc thư mục này. --paths src/api
--max-pocs <n> Private Scan: chạy tối đa số PoC này, ưu tiên các tệp đã thay đổi và mức nghiêm trọng nhất trước (mặc định của kiểm tra nhanh: 5). --max-pocs 3
--time-limit <seconds> Private Scan: không bắt đầu thêm lệnh gọi mô hình, bằng chứng hay bản vá mới nào sau khoảng thời gian này và kết thúc với những gì đã làm xong. Một bản quét như vậy không thể đạt --fail-on. --time-limit 1800
--vertex-tier <tier> Private Scan trên Vertex AI: standard (mặc định), priority hoặc flex (một nửa giá, chậm hơn). --vertex-tier flex
--no-interactive Tắt các vòng quay và thanh tiến trình động để nhật ký CI/CD gọn gàng. Khi đó, bản quét trên đám mây cần có --yes. --no-interactive
--yes, -y Xác nhận việc tải lên đám mây, nên không hiện lời nhắc. Một lần chạy không có terminal phải truyền cờ này; nếu không, sẽ không có gì được tải lên và lệnh thoát với mã 2. cyfendo scan . --yes
--open Mở bản quét trong bảng điều khiển web khi nó kết thúc. --open
--separate Đăng ký một bản quét đám mây thành dự án mới thay vì khớp với một dự án hiện có. --separate
-v, --verbose Bật các dấu vết chẩn đoán chi tiết và nhật ký giao tiếp với mô hình. cyfendo scan --private -v .
cyfendo patches [id] Liệt kê các tệp .patch cục bộ, hoặc, khi cho ID bản quét, tải về và xuất các bản vá của bản quét đám mây đó (--out-dir đặt thư mục; mặc định .cyfendo/patches/). Việc xuất của mỗi bản quét thay thế các bản vá được đánh số của bản quét trước; các bản vá regen_* được tạo lại sẽ được giữ. cyfendo patches scan-2026-xyz
cyfendo patch <target> Xem (--show) hoặc áp dụng (--apply) bản vá lỗ hổng vào các tệp cục bộ. Áp dụng lại một bản vá đã áp dụng sẽ báo như vậy và không thay đổi gì. cyfendo patch 01_sql --show
cyfendo patch <id> --regenerate Tạo một regen_*.patch mới: với phát hiện của Private Scan thì tạo trên máy này bằng mô hình của riêng bạn, với phát hiện trên đám mây thì tạo trên máy chủ. --directive định hướng việc này (và ngầm hiểu --regenerate); --scan đặt ID bản quét của một phát hiện trên đám mây khi nó không có trong .cyfendo/scan-results.json. cyfendo patch fnd_91a4 --directive "Use db helper"
cyfendo verify <id> [path] Chạy lại bằng chứng khai thác (PoC) của một phát hiện Private Scan trên mã hiện tại, rồi đến các bài kiểm thử của nó (không dùng mô hình, không tải lên). Mã thoát 0 là đã bị chặn, 1 là vẫn khai thác được, 2 là chưa kết luận được. cyfendo verify cwe89-c894a71d
cyfendo logout Xóa khóa API Cyfendo, máy chủ và không gian làm việc đã lưu. Cài đặt Private Scan và khóa LLM được giữ lại; --all xóa hoàn toàn ~/.cyfendo/config.json. cyfendo logout --all
--version, -V In ra phiên bản CLI đã cài. cyfendo --version

Ma trận ngôn ngữ & framework được hỗ trợ

Phân tích chính thức về độ sâu phân tích cú pháp, phân tích taint giữa các tệp, nhận diện framework, xác thực PoC trong sandbox và phạm vi benchmark thực nghiệm.

Ngôn ngữ Quét cơ bản Phân tích giữa các tệp Xác thực trong sandbox Tạo bản vá Framework & benchmark Trạng thái
Python
.py, .pyw
Có hỗ trợ (cú pháp AST và phát hiện taint sink) Đồ thị lời gọi xuyên tệp và liên module đầy đủ Có hỗ trợ (sandbox tạm thời với runtime python3) Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét
Django, Flask, FastAPI, Tornado, thư viện chuẩn
Production
Java
.java
Có hỗ trợ (cú pháp AST và phát hiện taint sink) Phân tích phân cấp lớp và lời gọi phương thức xuyên package Có hỗ trợ (sandbox tạm thời với bộ công cụ javac / java) Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét
Spring Boot, Jakarta EE, Servlet API
Production
JavaScript / TypeScript
.js, .jsx, .mjs, .cjs, .ts, .tsx
Có hỗ trợ (cú pháp AST và phát hiện taint sink) Theo dõi import ES module, require của CommonJS và đồ thị route Có hỗ trợ (sandbox tạm thời với node và tsx/ts-node) Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét
Node.js, Express, Next.js, Fastify, React
Bộ kiểm thử tổng hợp nội bộ (đang chờ bộ công khai chuẩn hóa)
Production
Go
.go
Có hỗ trợ (cú pháp AST và phát hiện taint sink) Đồ thị lời gọi mức package và lời gọi phương thức xuyên tệp Có hỗ trợ (sandbox tạm thời với bộ công cụ go) Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét
Thư viện chuẩn (net/http), Gin, Echo, Fiber
Bộ kiểm thử tổng hợp nội bộ (đang chờ bộ công khai chuẩn hóa)
Production
C / C++
.c, .h, .cpp, .cc, .cxx, .hpp, .hh
Có hỗ trợ (phát hiện ranh giới từ vựng và sink bộ đệm) Lập chỉ mục tham chiếu header và đơn vị biên dịch Có hỗ trợ (sandbox tạm thời với trình biên dịch gcc / clang) Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét
API chuẩn POSIX, API socket, xử lý bộ đệm bộ nhớ
Bộ kiểm thử nội bộ tập trung vào CWE
Production
Rust
.rs
Có hỗ trợ (cú pháp AST và phát hiện khối unsafe) Lập chỉ mục module mức crate và theo dõi khối unsafe Có hỗ trợ (sandbox tạm thời với rustc / cargo) Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét
Actix-web, Axum, thư viện chuẩn
Bộ kiểm thử tổng hợp nội bộ
Production
PHP
.php, .phtml
Có hỗ trợ (trích xuất symbol và sink) Lập chỉ mục include tệp và định nghĩa hàm toàn cục Có hỗ trợ (sandbox tạm thời với php CLI) Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét
PHP thuần, route Laravel và Symfony
Bộ kiểm thử nội bộ tập trung vào CWE
Production
Ruby
.rb
Có hỗ trợ (trích xuất symbol và phương thức) Lập chỉ mục module và câu lệnh require Có hỗ trợ (sandbox tạm thời với runtime ruby) Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét
Ruby on Rails, Sinatra
Bộ kiểm thử nội bộ tập trung vào CWE
Production
Shell / Bash
.sh, .bash, .zsh
Có hỗ trợ (phân tích lệnh và đối số) Phân tích script được source Có hỗ trợ (sandbox tạm thời với bash/sh) Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét
POSIX Shell, script Bash
Ca kiểm thử command injection nội bộ
Production
Kotlin / Android
.kt, .kts, .dex
Có hỗ trợ (mã nguồn .kt và các tệp Dalvik .dex đã giải nén; tệp .apk không được tự động mở) Có hỗ trợ (đồ thị lời gọi JVM và bytecode đã dịch ngược) Hỗ trợ qua thực thi Gradle/JVM và dịch ngược bytecode Dalvik Bao gồm đầy đủ tính năng tạo bản vá sẵn sàng để xem xét (đã xác minh trên AST)
Android SDK, Ktor, Spring Boot (Kotlin), Gradle KTS
Bộ kiểm thử CWE Android nội bộ (đã kiểm chứng trong E2E Case 13)
Production
C#, Swift, Scala
.cs, .swift, .scala
Có hỗ trợ (phát hiện mẫu cú pháp và sink) Đang được tích cực phát triển (lộ trình) Có giới hạn: C# trên .NET hiện đại đang ở giai đoạn thử nghiệm ban đầu. Swift và Scala không chạy trong sandbox. Lộ trình / Có giới hạn
ASP.NET Core, thư viện chuẩn Swift, sbt
Hiện chưa công bố
Beta / Lộ trình

Ghi chú về phạm vi hỗ trợ: 1. Quét cơ bản: Kiểm tra từ vựng và cú pháp AST để tìm các mẫu lỗi có thể thấy ngay.
2. Phân tích giữa các tệp: Lần theo đồ thị lời gọi liên thủ tục và lan truyền taint giữa các mô-đun trên toàn bộ kho mã nguồn.
3. Xác thực trong sandbox: Thực thi trong container Docker tạm thời để xác minh khả năng tiếp cận khai thác trong môi trường chạy thực tế.
4. Tạo bản vá: Các bản vá mã được xác thực bằng hai tiêu chí (Dual-Oracle), cung cấp dưới dạng diff sẵn sàng để xem xét.
5. Beta / Lộ trình: Đã có phân tích cú pháp và các kiểm tra quy tắc cú pháp cơ bản; taint giữa các tệp và sandbox tự động đang được phát triển.

Chế độ triển khai & kiến trúc lưu giữ dữ liệu

So sánh toàn diện về nơi lưu giữ mã nguồn, ranh giới mạng, tích hợp nhà cung cấp AI và chính sách lưu giữ.

Khía cạnh bảo mật Chế độ 1: Đám mây được quản lý Chế độ 2: Private Scan (AI bên ngoài) Chế độ 3: Private Scan (mô hình cục bộ)
Nơi thực thi Container RAM trên Google Cloud & AWS Máy trạm, máy ảo hoặc runner CI của khách hàng Máy trạm, máy ảo hoặc phần cứng tại chỗ của khách hàng
Mã nguồn đi đâu Được tải lên qua TLS 1.3 tới các container RAM tạm thời Không có mã nguồn hay tệp nào được gửi tới Cyfendo Không có mã nguồn hay tệp nào được gửi tới Cyfendo
Mã đi đâu để AI phân tích Được phân tích trong container RAM tạm thời; bị hủy ngay lập tức Một phần mã của bạn, kể cả nguyên tệp mã nguồn, được gửi trực tiếp tới nhà cung cấp AI của khách hàng (OpenAI, Anthropic, Gemini). Tệp .env, khóa riêng, tệp bị bỏ qua và liên kết trỏ ra ngoài dự án không được gửi 100% bên trong vành đai (chỉ định tuyến tới Ollama/vLLM trên localhost)
Dữ liệu theo dõi đi đâu Siêu dữ liệu bản quét, tiêu đề phát hiện, CWE được lưu trong không gian làm việc Siêu dữ liệu bản quét (tên dự án, số tệp và số LOC, nhà cung cấp và mô hình, nhánh git, SHA của commit và URL remote), tiến độ và số lượng phát hiện được gửi tới Cyfendo để đo hạn mức Siêu dữ liệu bản quét (tên dự án, số tệp và số LOC, nhà cung cấp và mô hình, nhánh git, SHA của commit và URL remote), tiến độ và số lượng phát hiện được gửi tới Cyfendo để đo hạn mức
Nhà cung cấp AI bên ngoài Suy luận cấp doanh nghiệp do Cyfendo quản lý API do khách hàng chọn (OpenAI, Anthropic, Gemini) Không có (Ollama, vLLM, mô hình tự lưu trữ)
Phân loại dữ liệu đưa ra ngoài Xử lý trong RAM đám mây với việc hủy tạm thời Dữ liệu đưa tới API nhà cung cấp AI của khách hàng + dữ liệu đo hạn mức gửi tới Cyfendo + các kho gói cho việc cài thư viện phụ thuộc phục vụ bằng chứng khái niệm Không có mã hay prompt nào rời khỏi mạng của bạn. Dữ liệu đo hạn mức được gửi tới máy chủ Cyfendo, và việc cài thư viện phụ thuộc cho bằng chứng khái niệm kết nối tới các kho gói, dù có --no-deps hay không. Nếu không có --no-deps, tên và phiên bản gói công khai cũng được gửi tới các dịch vụ cảnh báo bảo mật và gói công khai cho phần kiểm tra thư viện phụ thuộc
Chính sách lưu giữ áp dụng Chính sách RAM tạm thời của Cyfendo; bị hủy khi bản quét hoàn tất Hoàn toàn theo thỏa thuận và điều khoản lưu giữ của khách hàng với nhà cung cấp AI Chính sách máy/phần cứng nội bộ của khách hàng; không lưu giữ mã trên bất kỳ đám mây nào
Chính sách huấn luyện mô hình Không bao giờ được dùng để huấn luyện các mô hình nền tảng Theo thỏa thuận của khách hàng với nhà cung cấp AI mà họ chọn Không nhà cung cấp AI nào nhận được mã của bạn
Vận hành ngoại tuyến / cô lập mạng (air-gapped) Không (cần kết nối internet tới đám mây Cyfendo) Không (cần kết nối internet tới nhà cung cấp AI bên ngoài & xác minh token của Cyfendo) Được hỗ trợ với máy chủ Cyfendo tại chỗ (lưu lượng mô hình ở lại cục bộ; việc kiểm tra quyền sử dụng đi tới máy chủ được đặt bằng --server). Nếu không có đường tới các kho gói, việc cài thư viện phụ thuộc cho bằng chứng khái niệm sẽ thất bại và bản quét vẫn tiếp tục, nên những bằng chứng cần các gói đó có thể không chạy được
Lệnh CLI cyfendo scan [PATH] cyfendo scan --private . cyfendo scan --private --provider ollama .
Khách hàng kiểm soát Quản lý không gian làm việc, lịch quét, RBAC theo vai trò Khách hàng kiểm soát khóa API, nhà cung cấp và mô hình Khách hàng kiểm soát phần cứng, mạng và trọng số mô hình

Chứng nhận & công bố về độ tin cậy

  • Hạ tầng đám mây: Các dịch vụ đám mây của Cyfendo chạy trên các cơ sở trung tâm dữ liệu của Google Cloud Platform và AWS có các chứng nhận độc lập SOC 2 Type II, ISO 27001 và FedRAMP.
  • Tư thế bảo mật của nền tảng: Kiến trúc nền tảng, vòng đời phát triển nội bộ và các chính sách truy cập của Cyfendo được xây dựng theo sát các khung kiểm soát SOC 2 Type II và ISO 27001. Cyfendo chưa hoàn tất đợt kiểm toán doanh nghiệp độc lập của riêng mình.
  • Tuyên bố miễn trừ về báo cáo đánh giá: Các báo cáo và chứng nhận quét của Cyfendo ghi lại kết quả phân tích tĩnh và phân tích trong sandbox tự động tại thời điểm đánh giá. Chúng phản ánh kết quả kiểm thử thực nghiệm và không cấu thành chứng nhận quy định độc lập, sự chứng thực của OWASP, hay bảo đảm tuyệt đối rằng một ứng dụng không có lỗ hổng.