TECHDEV · Flagship · Công cụ mã nguồn mở

vetgate

Cổng kiểm tra trước khi chạy, chạy local, xác định, cho phần mềm mà agent sắp cài đặt. Gọi nó thay vì chạy lệnh cài đặt: một lần gọi, một kết luận, mỗi phát hiện đều kèm đúng chuỗi bằng chứng đã khớp.

TypeScript · MCP server + CLI · MIT · Node 20+ · Không cần thư viện runtime ngoài MCP SDK · Không dùng model, không cần tài khoản, không cần API key, không có điểm số kết luận.

Thời điểm mà công cụ chặn

Agent cài đặt một package sẽ chạy hook postinstall trước khi bất kỳ ai đọc output. Kiểm tra sau khi cài đặt, kiểm tra PR và dashboard đều đứng sai phía của thời điểm đó: khi chúng chạy, payload đã kích hoạt. vetgate đứng trước khi chạy: agent gọi nó, đọc kết luận, rồi mới quyết định cài đặt, cài với --ignore-scripts, ghim theo digest, hay hỏi người dùng.

Nếu coding agent của bạn cài package, action hay script thay bạn, mỗi lần cài đều chạy mà không được kiểm tra — vetgate là bước kiểm tra chạy trước.

Công cụ kiểm tra gì

Công cụ / lệnhĐầu vàoViệc làm
vet_package / npm:name@versionTên npm và version chính xácTải tarball đã publish, kiểm tra, không bao giờ chạy nó
vet_action / action:owner/repo@refRef GitHub ActionChỉ kiểm tra dạng local: đã ghim SHA, tag có thể thay đổi, hay không ghim
vet_script / url:https://...URL scriptLấy text (timeout 10s, giới hạn 1MB), quét, không bao giờ chạy nó

Đường mặc định không gửi gì đi đâu ngoài việc tải chính artifact (vet_package) và lấy text script (vet_script, được ghi rõ trong manifest kết luận). Mọi phân tích đều local. local: là chế độ fixture cho demo offline; không phải tính năng MCP đã ship.

Kết luận

Kết luậnÝ nghĩaMã thoát
ALLOWKhông có phát hiện.0
REVIEWCó phát hiện nhưng không có phát hiện mức high. Kèm safeAction (cài với --ignore-scripts, ghim theo digest, hoặc hỏi người dùng) — không bao giờ âm thầm ALLOW và không bao giờ DENY chỉ vì tín hiệu yếu.1
DENYCó phát hiện mức high.1

Mỗi phát hiện đều kèm chuỗi bằng chứng, cắt còn 120 ký tự. Phát hiện không có bằng chứng là bug. Tính xác định: cùng input bytes và cùng rules version cho cùng kết luận, trừ manifest.checkedAt.

Quy tắc (v1)

DENY: install script, file .js/.sh được quét, hoặc text script từ xa vừa đọc credential hoặc biến môi trường VỪA gửi dữ liệu ra mạng trong cùng text; chuỗi tải-và-chạy (curl|sh, curl|bash, wget|sh, wget|bash, curl|node, PowerShell IEX với URL http(s)); dấu hiệu làm rối (eval(atob(, base64 rồi eval, String.fromCharCode từ 10 đối số trở lên, escape hex \x dày đặc) kết hợp với gọi mạng; typosquat — tên package cách đúng 1 ký tự Levenshtein so với tên package phổ biến; ref action là :latest, không tag, hoặc sai dạng.

REVIEW (không bao giờ DENY một mình): có install script; thiếu trường license; ref action là tag có thể thay đổi (v4, main, tag semver), kèm khuyến nghị ghim digest; ký tự zero-width hoặc bidirectional-override trong text script; script từ xa chứa URL ra ngoài nhưng không có mẫu DENY.

Bộ quy tắc đầy đủ, mẫu và fixture kích hoạt: docs/RULES.md trong repo. Danh sách typosquat là mẫu cố định 39 package nổi tiếng, KHÔNG đầy đủ — tên không có trong danh sách chỉ là chưa được kiểm tra typosquat, không bao giờ được tuyên bố là an toàn vì lý do đó.

Cách dùng

# MCP server (xem examples/mcp-config.json trong repo)
{
  "mcpServers": {
    "vetgate": { "command": "npx", "args": ["-y", "vetgate", "serve"] }
  }
}
# hoặc chạy trực tiếp qua stdio:
vetgate serve
# CLI
vetgate check npm:react@18.3.1
vetgate check action:actions/checkout@v4
vetgate check url:https://example.com/install.sh
# Build từ source
git clone https://github.com/techdevfun/vetgate.git
cd vetgate
npm ci
npm run build
npm test

Lệnh và config chép từ README của vetgate (v0.1.0). Cần Node 20 trở lên. CLI in Verdict JSON ra stdout và một dòng tóm tắt ra stderr. Với vet_script, việc lấy text script tự nó là một lần fetch mạng — manifest kết luận ghi rõ điều đó, trong khi mọi phân tích đều local và script không bao giờ được chạy.

Số liệu đã đo (README, bộ fixture)

Đây KHÔNG phải gì — và đối thủ hơn chúng ta ở đâu

Source + README trên GitHub → · Báo lỗi → · ask@techdev.fun

Công cụ liên quan

Các công cụ mã nguồn mở khác của TECHDEV: sessguard, runverdict, gheist-guard, context-diet, ci-failure-detective, agent-seatbelt, devsecops-os, env-doctor, skill-audit, logtrim, testguard, breakcheck, keymap, memgraph, ggufit, leaseguard, factfence, jsonfold

Đóng góp ý kiến

Bình chọn cho công cụ này, đề xuất tính năng, hoặc thảo luận với các vận hành khác trên bảng cộng đồng.