- Một dev vừa thả open-source công cụ secox (MIT, Rust) với pre-commit hook chặn leak API key, 43 rule, 13 provider verify live, và flow resolve tương tác hướng dẫn bạn rotate + rewrite git history chỉ với vài phím bấm.
TL;DR
secox là công cụ scan secret viết bằng Rust, MIT license, vừa release v0.2.0 ngày 19/04/2026. Khác biệt lớn nhất so với gitleaks/trufflehog: nó không chỉ in ra danh sách rồi bỏ đi — nó còn hướng dẫn bạn rotate key, tự động thay hardcoded value bằng env var ngay trong file, và nếu secret đã lọt vào git history thì nó đưa sẵn câu lệnh git filter-repo để bạn paste. Cài đặt 2 dòng: cargo install secox rồi secox init.

Chuyện gì vừa xảy ra
Ngày 19/04/2026, Immanuel Tikhonov đẩy liên tiếp hai release v0.1.0 (06:41 UTC) và v0.2.0 (08:51 UTC) cho repo immanuwell/secretoxide. Tag CLI ngắn là secox, tagline trên README: "Finds secrets in your code. Then actually helps you fix them." Toàn bộ codebase 96.6% Rust, MIT license, binary 3.48–4.43 MB, build sẵn cho Linux (x86_64/aarch64/musl), macOS (Intel/Apple Silicon) và Windows x86_64.
Vì sao đáng chú ý
Mọi team dev đều biết câu chuyện: một kỹ sư paste nhầm OPENAI_API_KEY=sk-proj-... vào file test, push lên GitHub public, 10 phút sau bot quét được rồi dùng key bạn gọi API. Các scanner hiện tại (gitleaks, trufflehog) thì báo "có leak" và dừng ở đó. Phần còn lại — vào dashboard OpenAI rotate key, sửa code, kiểm tra git history, rewrite history nếu cần — là việc thủ công của bạn.
secox trực tiếp đóng gói toàn bộ đoạn thủ công đó vào một flow terminal tên resolve. Đây là điểm khác biệt đáng kể so với mọi tool cùng lĩnh vực.
Số liệu kỹ thuật
| Hạng mục | Chi tiết |
|---|---|
| Ngôn ngữ | Rust 96.6%, Shell 3.4% |
| License | MIT, open source |
| Detection rules | 43 rule (AWS, GitHub, Stripe, OpenAI, Anthropic, Slack, GitLab, DigitalOcean, Docker Hub, Shopify, HuggingFace, Databricks, Azure, Twilio, Mailchimp, v.v.) |
| Live verification | 13 provider qua flag --verify |
| Output formats | plain text, JSON, SARIF (dùng được với GitHub Code Scanning) |
| Bộ lọc false positive | 3 lớp: context-aware, semantic, provider-level |
Về false positive, README tuyên bố rõ: ít hơn gitleaks và ripsecrets. Cách secox đạt được điều này là 3 lớp lọc xếp chồng trước khi fire một finding:
- Context-aware —
os.getenv("SECRET")là lookup, bỏ qua.<YOUR_KEY_HERE>là placeholder, bỏ qua. Giá trị trong thư mụctests/fixtures/bị downgrade. - Semantic — entropy, character diversity, và bigram filter bắt được văn xuôi tiếng Anh giả mạo. Dòng
password = "These Are Just Words"không fire. - Provider-level — GitHub token có CRC-32 checksum ở 6 ký tự cuối, secox verify checksum. AWS key suffix bị check entropy (mẫu
AKIAIOSFODNN7EXAMPLEtrong doc AWS quá lặp, skip). JWT được base64url-decode phần header, không có fieldalgthì không phải JWT.
Flow resolve — điểm khác biệt lớn nhất
Khi pre-commit hook chặn commit, bạn chạy secox resolve. Với từng finding, bấm một phím:
- r (rotate) — hiện revocation URL + hướng dẫn step-by-step cho provider đó (AWS, GitHub, Stripe, OpenAI, Anthropic, Slack, GitLab, và 15 provider khác). Hỏi bạn có muốn swap giá trị hardcoded bằng env var reference đúng ngôn ngữ không:
os.environ["KEY"]cho Python,process.env.KEYcho JS/TS,os.Getenv("KEY")cho Go. Sau đó chạygit log -Skiểm tra history — nếu secret đã nằm trong commit cũ, in ra sẵn câu lệnhgit filter-repođể bạn paste. - a (allow) — đánh dấu false positive. Tự inject comment
# secox:allowvào đúng dòng đó. Không bao giờ báo lại. - s (skip) — để đó xử lý sau.
So với gitleaks, trufflehog, GitHub Secret Scanning
Điểm mà secox vượt lên:
- Remediation tương tác — gitleaks/trufflehog chỉ detect. GitHub Secret Scanning detect + alert nhưng đã sau push. secox detect + block tại pre-commit + hướng dẫn rotate + rewrite history trong cùng một command.
- Baseline cho legacy repo — chạy
secox baselineđể snapshot toàn bộ finding hiện tại, từ đó scan chỉ fire trên secret mới. Giải quyết đúng failure mode kinh điển: team cài hook ngày 1, rip ra ngày 2 vì quá nhiều noise. - Live
--verify— ping API provider để xác nhận secret còn sống hay đã bị rotate. Quan trọng khi làm incident response — bạn cần biết key leak cách đây 3 tháng trong commit cũ vẫn còn hoạt động hay không. - Dangerous filename detection trước khi scan nội dung:
.env*,id_rsa,id_ed25519,*.pem,*.p12,*.jks,credentials.json,serviceAccountKey.json,terraform.tfvars,.netrc,.htpasswd. Commitid_rsagần như không bao giờ là có chủ đích.
Use case thực tế
- Dev cá nhân:
secox initcài hook. Lỡ stage.env.productionhayid_rsa→ block ngay tạigit commit. - Onboarding legacy codebase:
secox baselinesnapshot mọi finding hiện có vào.secox-baseline.json, commit file này. Từ đó team chỉ bị chặn trên secret mới, xử lý backlog cũ dần bằngsecox resolve. - DevSecOps / CI:
secox scan --format sariffeed GitHub Code Scanning.--format jsonpipe sang jq hoặc ship về SIEM.secox init --globalcài một hook áp dụng cho mọi repo trên máy quacore.hooksPath. - Incident response:
secox scan --git-history --verifyaudit toàn bộ commit history và báo luôn key nào còn sống ở provider.
Giới hạn & pricing
Không phải không có nhược điểm:
- AWS, Twilio, Databricks, Azure chưa có live verify — vì các provider này yêu cầu HMAC signing hoặc multi-credential correlation, một HTTP call thô không đủ.
- Dự án còn non — 1 contributor (Immanuel Tikhonov), v0.2.0 là bản stable đầu tiên, tại thời điểm research repo mới 1 star. Đừng kỳ vọng hỗ trợ enterprise-grade trong vài tháng tới.
- Pricing: free, MIT. Không có tier trả phí.
Install:
# one-liner
curl -fsL ewry.net/secox/install.sh | sh
# homebrew
brew tap immanuwell/secox https://github.com/immanuwell/homebrew-secox.git
brew install immanuwell/secox/secox
# cargo
cargo install secox
# kích hoạt trong repo
secox initRoadmap & nên thử không?
Tác giả không công bố roadmap chính thức, nhưng phần "not yet verified" trong README ngụ ý các tích hợp HMAC cho AWS/Twilio/Databricks/Azure sẽ là mục tiêu kế tiếp.
Verdict: nếu team bạn đang dùng gitleaks hoặc chỉ dựa vào GitHub Secret Scanning, cài secox song song để thử flow resolve — 2 phút install, block ngay tại pre-commit, và khi lỡ leak thật thì có sẵn hướng dẫn rotate + câu lệnh rewrite history. Với một repo công ty nhỏ hoặc indie project, đây là mức đầu tư xứng đáng.
Nguồn: immanuwell/secretoxide, Releases.



