KillerSkills
Security verdicts for agent skills and MCP servers, from sandbox runs, before you install them.
Description from the maker (original English)
Local security scanner for AI agents: SAST, SCA, secrets, IaC; verifies exploit and fix.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
GSC_ALLOWED_ROOTSYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"gsc-scanner": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GSC_ALLOWED_ROOTS",
"ghcr.io/poliakarmai/gsc-scanner:v1",
"mcp"
],
"env": {
"GSC_ALLOWED_ROOTS": "your-value"
}
}
}
}Run this in your terminal
claude mcp add gsc-scanner --env GSC_ALLOWED_ROOTS=your-value -- docker run -i --rm -e GSC_ALLOWED_ROOTS ghcr.io/poliakarmai/gsc-scanner:v1 mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"gsc-scanner": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GSC_ALLOWED_ROOTS",
"ghcr.io/poliakarmai/gsc-scanner:v1",
"mcp"
],
"env": {
"GSC_ALLOWED_ROOTS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"gsc-scanner": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GSC_ALLOWED_ROOTS",
"ghcr.io/poliakarmai/gsc-scanner:v1",
"mcp"
],
"env": {
"GSC_ALLOWED_ROOTS": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
GSC_ALLOWED_ROOTS envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 9, 2026
The registry name was verified with the GitHub account poliakarmai, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (1.0.0) reached the registry 15 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Docker on your computer.
In the same category: KillerSkills, OpenWorkProof, Shipshape MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Security verdicts for agent skills and MCP servers, from sandbox runs, before you install them.
Verifiable agent evidence; opt-in Codex guard and reference SOC alert review.
Dockerfile and Kubernetes lint for AI agents: Pod Security Standards, A–F grade, a fix per finding.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
GSC is a self-learning AppSec platform that proves exploits, verifies fixes, and heals CI.
detect → prove → fix → verify → heal → learn
$ gsc scan . --ci --json
[{"rule_id": "GS001", "severity": "CRITICAL", "title": "Hardcoded API key", "file_path": "app.py", "line": 1, "fix_suggestion": "Move this value to an env var"}]
Most scanners report matches. GSC proves them: every finding can be turned into a runnable proof-of-concept, validated in a sandbox, then fixed and re-verified by re-running the exploit.
What makes it different:
{tenant_hash, rule_id, tp, fp} + DP noise).Who it is for: platform/DevSecOps teams that need findings *proven* before a PR blocks; AppSec engineers triaging noisy regex output; AI coding agents that need a scanner tool over MCP.
Use it as a GitHub Action (see below), from the CLI / Docker image, or as an MCP server for AI coding agents — ten tools (scan_repo, scan_diff, list_findings, get_finding, get_poc, verify_finding, verify_findings, verify_fix, doctor, list_detectors) over stdio or HTTP. Read-only towards your repository: no patching, no PRs, no writes to the working tree. (verify_finding does execute a PoC — see the safety notes in the MCP section.)
Proven on real code: HALL_OF_FAME.md · first public case study: CASE_STUDY_CYBERBRO.md
The same fixed corpus is re-scanned after detector changes — 100 real repositories (90 clean + 10 known-vulnerable), pinned to specific commits, regex-only, no LLM key. Same projects every run, so a delta is the fix and not a new dataset.
| 2026-08-21 (baseline) | 2026-08-28 (after FP fixes) | |
|---|---|---|
| Findings | 64,831 | 41,127 |
| CRITICAL | 4,302 | 414 |
| HIGH | 37,246 | 2,187 |
| Known-vulnerable projects flagged | 8 / 10 | 10 / 10 |
| Clean projects with ≥1 false CRITICAL | 48 / 90 | 41 / 90 |
CRITICAL precision on a labeled review of 434 findings: ~4–5% at baseline → 31.1% (TP = 135, FP = 299, 2026-08-26). That is still noisy. The remaining false-positive mass is concentrated in GS001 (secrets), GS005 (SQLi), GS020 (XSS) and GS037 (path traversal) and is worked down rule by rule — we publish the numbers we have, not the numbers we would like.
*Method note:* corpus, severity counting and per-rule aggregation are ours; the engine ships as a closed image, so reproducing this means running gsc scan --ci --json over the same pinned projects and aggregating the same way. No clean-room comparison against other vendors is implied.
License: this repo (Action, docs, marketing) is Apache-2.0. The engine ships as a closed Docker image ghcr.io/poliakarmai/gsc-scanner under BSL 1.1 (free to scan your own repos; competing SaaS requires a commercial license; converts to Apache-2.0 on 2030-08-06).
First public proof — stanfrbd/cyberbro (46,677 LOC, 281 files):
| Finding | CWE-79 XSS via search highlight — static/history.js:50, p.innerHTML = p.title.replace(...) |
| Severity | MEDIUM (CVSS 5.4) — reflected XSS без аутентификации |
| Detector | GS020 (gs020_xss_injection) |
| Fix | 9 lines, 1 file — exploit re-run in sandbox confirms it no longer fires |
Full write-up → CASE_STUDY_CYBERBRO.md · more findings in production OSS → HALL_OF_FAME.md
GSC — самообучающаяся AppSec-платформа полного цикла.
detect → prove → fix → verify → heal → learn
Проверьте свой репозиторий за 30 секунд. Добавьте файл .github/workflows/gsc.yml:
name: GSC Audit
on: pull_request: branches: [main, master]
jobs: audit: runs-on: ubuntu-latest permissions: contents: read pull-requests: write steps:
Откройте pull request — GSC отсканирует код, пришлёт комментарий с находками (CRITICAL / HIGH) и поставит оценку безопасности. Ядро поставляется как закрытый Docker-образ ghcr.io/poliakarmai/gsc-scanner — исходный код движка не публикуется.
Воспроизводимость.
@v1и тег образа — плавающие ссылки: результат может
измениться без изменения вашего workflow. Для аудита/CI фиксируйте
poliakarmai/gsc@и образ по digest
(
ghcr.io/poliakarmai/gsc-scanner@sha256:).
Входные параметры:
| Вход | По умолчанию | Что делает |
|---|---|---|
path | . | Что сканировать (корень репозитория) |
deep_scan | true | Глубокий скан (Echelon 4, медленнее) |
fail_on_critical | false | true — упасть при CRITICAL |
fail_on_score | 0 | Упасть, если score ниже порога. 0 = выключено, диапазон 1–100 |
max_findings_to_comment | 10 | Сколько строк показывать в комментарии на каждую секцию |
llm_api_key | '' | BYO-LLM ключ для ревалидации (без него — regex-only) |
llm_base_url | '' | Свой OpenAI-совместимый эндпоинт (DeepSeek/OpenRouter/Ollama) |
llm_model | '' | Имя модели для ревалидации |
sarif | false | Дополнительно отдать SARIF для GitHub Code Scanning |
reachability | false | Понизить находки в недостижимых файлах (import-graph) |
Выходы: score (0–100) и grade (A+ … F).
Комментарий в PR считает находки по локациям (
file:line), а не по
срабатываниям детекторов: один секрет, пойманный четырьмя правилами, — это
одна строка с перечислением правил, а не четыре.
Totalв таблице всегда
равен сумме категорий.
LLM-ревалидация — на вашем ключе (BYO-LLM):
- uses: poliakarmai/gsc@v1
with: llm_api_key: ${{ secrets.DEEPSEEK_API_KEY }} # DeepSeek / OpenRouter / GMI / Ollama
Без ключа — быстрый regex-only скан (уязвимости находит; confirmed-вердикты — с ключом).
gsc scan . --ci --json # JSON-находки в stdout
gsc scan . --fail-on-blocking # exit 1 при CRITICAL/HIGH — гейт для pre-commit / CI
# тот же движок без установки
docker run --rm -v "$PWD:/repo:ro" ghcr.io/poliakarmai/gsc-scanner:v1 scan /repo --ci --json
scan — точка входа; pof (Proof-of-Fix), verify-fix, report, --compliance … и остальные ≈80 подкоманд — в gsc --help.
| Слой | Возможности |
|---|---|
| SAST | 68 детекторов (SAST · SCA · Secrets · IaC), YAML rule DSL, LLM-триаж с confidence scoring |
| Доказательство | PoC auto-generation — рабочий эксплойт для находки *(CLI --with-poc, MCP get_poc/verify_finding)* |
| Исправление | Proof-of-Fix — патч верифицируется перезапуском эксплойта в sandbox; self-healing CI (авто-PR) *(CLI, требует явного флага)* |
| Приоритизация | EPSS + CISA KEV + ExploitDB (не сырой CVSS), БДУ ФСТЭК |
| Recon | passive reconnaissance: subdomain / tech / DNS / HTTP |
| Supply chain | SBOM (CycloneDX / SPDX) + VEX |
| Compliance | маппинг находок на ГОСТ Р 56939-2024, PCI DSS 4.0, SOC2, ISO 27001, CWE, OWASP — отчёт для ФСТЭК / КИИ / аудита |
| Интеллект | security archaeology, predictive forecasting, NL-policy, federated self-learning |
Где что доступно. Возможности движка не равны возможностям Action/MCP:
| Возможность | Action | MCP | CLI / engine image |
|---|---|---|---|
| Скан (SAST/SCA/Secrets/IaC) | ✅ | ✅ | ✅ |
| PoC auto-generation | — | ✅ (
get_poc,verify_finding) | ✅ (--with-poc) |
| Proof-of-Fix | — | ✅ (
verify_fix) | ✅ (pof generate) |
| Self-healing CI (авто-PR) | — | — | ✅ (
--create-pr, human-approval) |
В MCP нет деструктивных действий (auto-patch/PR) — осознанно, они остаются
в CLI/human-лупе.
verify_findingперезапускает PoC в sandbox, то есть по
побочным эффектам это не «чисто read-only».
Исходники движка в публичном репо не публикуются (закрытый образ, BSL 1.1) — колонка «Где» называет модуль, а не путь в этом репозитории.
| Механика | Где | Что делает |
|---|---|---|
| Мутационный re-attack PoF | движок: PoC-мутатор → Proof-of-Fix | после фикса PoC перезапускается в мутированных формах (url-encode, double-encode, HTML-entities, case-swap, tab/space) — ловит «залатали симптом, а не причину». Детерминированно, без LLM |
| Positive control + taint-recheck | движок: PoF-sandbox + taint-recheck тесты | PoC обязан срабатывать на уязвимом варианте и молчать на исправленном |
| OS-изоляция hostile-PoC | движок: _isolation_backend() | docker/podman (--network none, read-only, cap-drop, non-root) на хосте, bubblewrap внутри образа (--unshare-all: mount/pid/net/user/ipc/uts, --clearenv, read-only системные деревья, writable только workspace, --die-with-parent) — докер-демон и проброс сокета не нужны. Уровень изоляции (docker / podman / bwrap) возвращается в каждом результате и в ответе verify_finding (isolation); без OS-изоляции движок fail-closed и отвечает unavailable, а не «не воспроизводится» |
| Quick-режим без LLM | CLI: gsc external-scan --scan-mode quick | regex-only: находки без LLM-вердиктов, 0 токенов |
GSC — это движок + детекторы + PoC, а не очередная обёртка над LLM.
Почему это выгодно вам:
Помимо BYO-LLM у GSC есть замкнутый контур обучения без LLM (0 токенов, детерминированный):
скан → авто-разметка findings по calibration-сети (13 проектов: 9 clean + 4 vuln)
→ авто-деактивация шумных паттернов (<30% TP) → пополнение эталонов из security-фидов → federated feedback (приватно: только {tenant_hash, rule_id, tp, fp} + DP-шум)
Детекторы учатся на реальных находках клиентов через federated-контур — то, чего мейнстрим сознательно избегает (риск дрейфа). GSC обходит это консервативным self-learning: разметка по фиксированной сети + дискретные деактивации, без переписывания весов — скорость ежедневного апдейта без катастрофического дрейфа.
| Вендор | Как обновляет правила | Self-learning |
|---|
| Semgrep | вручную (semgrep-rules) | ❌
Only the beginning is shown; read the rest in the repo