CNCK0NSULTAI-Truthuni0naiHackatonipIII ↗k0nsult.dev ↗ dla botówDomeny osobne, spięte siecią CNC + kernelem.
K0NSULT // ai-truth/ipIII
k0nsult.cloud / ai-truth / ipIII / orchestrator / connectors

K0-Connectors — warstwa importu dowodów MVP

Konektory (§4.1) łączą Orchestrator ze źródłami dowodów: skanery podatności, DAST, SIEM, CTI, SBOM/SAST i sekrety. Wynik zewnętrznego narzędzia staje się dowodem w warstwie Evidence — z hashem, źródłem i chain-of-custody. Konektor importuje ustalenia, nie uruchamia testu. Każdy format w tabeli niżej ma realny parser, test jednostkowy i zamontowany endpoint (dowód w tabeli niżej); ticketing dwukierunkowy, BAS i część threat-intel pozostają ROADMAP.

Status: MVP — nie ROADMAP. Zgodnie z regułą §16: bez kodu + testu + endpointu = nie LIVE/MVP. Poniższa tabela pokazuje konektory importu z realnym plikiem parsera, przechodzącym testem jednostkowym i zamontowanym endpointem /api/ip3/v1/imports/* (uruchamialne dziś, patrz kolumna „Dowód"). Osobno: 3 konektory mają gotowy kod + test, ale endpoint jest fail-safe wyłączony domyślnie (501, wymaga flagi env) — oznaczone jawnie. Dwukierunkowy push do ticketingu (Jira/ServiceNow zapis zwrotny), BAS i część threat-intel = ROADMAP. Granica działania: system nie wykonuje nieautoryzowanych testów, eksploitacji ani hack-back poza pisemnym RoE. Zero payloadów. Import wyniku ≠ wykonanie testu.
Import ustaleń, nie wykonanie testu.

Konektor przyjmuje plik lub payload JSON z narzędzia, które już wykonało skan/analizę po stronie klienta. K0NSULT normalizuje ten wynik do wspólnego modelu dowodu — nie inicjuje skanu, nie wysyła pakietów do celu, nie posiada exploitów. Każde źródło dostaje status pewności (MEDIA_SIGNAL / TENTATIVE) i ślad pochodzenia (sha256, timestamp, operator).

ŚCIEŻKA: NARZĘDZIE KLIENTAEKSPORT / WEBHOOKKONEKTORNORMALIZEEVIDENCETRUTH ENGINE

Konektory importu — status LIVE dziś (kod + test + endpoint)

Wszystkie poniższe pozycje są zamontowane pod POST /api/ip3/v1/imports/<slug> w routes/ip3-api-pro.js (montaż globalny: server.jsapp.use('/api/ip3/v1', createIp3ProRouter(pool))). Import = MEDIA_SIGNAL (sygnał narzędzia, NIE dowód naprawy — doktryna claim ≤ proof). Kolumna „Dowód" = plik parsera + plik testu jednostkowego, oba do samodzielnej weryfikacji (node tests/<plik>).

KonektorFormat wejściaStatusDowód (parser + test)Endpoint
Burp SuiteXMLLIVEroutes/ip3-parsers.js (parseBurpXml) · tests/ip3-parsers.unit.jsPOST /imports/burp
OWASP ZAPJSON / XMLLIVEroutes/ip3-parsers.js (parseZapJson, parseZapXml) · tests/ip3-parsers.unit.jsPOST /imports/zap
Nessus / TenableCSVLIVEroutes/ip3-parsers.js (parseNessusCsv) · tests/ip3-parsers.unit.jsPOST /imports/nessus
Qualys VMDRCSV / XMLLIVEroutes/ip3-parsers-ext.js (parseQualysCsv, parseQualysXml) · tests/ip3-parsers-ext.unit.jsPOST /imports/qualys
OpenVAS / Greenbone (GVM)XML / CSVLIVEroutes/ip3-parsers-ext.js (parseOpenVasCsv, parseOpenVasXml) · tests/ip3-openvas.unit.jsPOST /imports/openvas
Reverse / malware (YARA, radare2)JSONLIVEroutes/ip3-re.js (parseRe) · tests/ip3-re.unit.jsPOST /imports/re
DefectDojoJSONLIVEroutes/ip3-defectdojo.js (parseDefectDojo) · tests/ip3-defectdojo.unit.jsPOST /imports/defectdojo
SARIF 2.1 (CodeQL / Semgrep / GHAS)JSONLIVEroutes/ip3-sarif.js (parseSarif) · tests/ip3-sarif.unit.jsPOST /imports/sarif
SBOM (CycloneDX / SPDX)JSONLIVEroutes/ip3-sbom.js (parseCycloneDx, parseSpdx) · tests/ip3-sbom.unit.jsPOST /imports/sbom
Secret scanning (Gitleaks / TruffleHog / GH secret-scanning)JSON / NDJSONLIVEroutes/ip3-secrets.js (parseGitleaks, parseTruffleHog) · tests/ip3-secrets-intake.unit.jsPOST /imports/secrets
Cloud posture (Prowler / ScoutSuite / Checkov / Trivy config)JSONLIVEroutes/ip3-cloud-posture.js (parseCloudPosture) · tests/ip3-cloud-posture.unit.jsPOST /imports/cloud
Splunk (Search / HEC eksport)JSONLIVEroutes/ip3-splunk.js (parseSplunk) · tests/ip3-splunk.unit.jsPOST /imports/splunk
Microsoft Sentinel (incident/alert eksport)JSONLIVEroutes/ip3-sentinel.js (parseSentinel) · tests/ip3-sentinel.unit.jsPOST /imports/sentinel
MISP (Event eksport)JSONLIVEroutes/ip3-misp.js (parseMispEvent, parseStixLite) · tests/ip3-misp.unit.jsPOST /imports/misp
Generic SIEM webhook (payload wklejony ręcznie/API)JSONLIVEroutes/ip3-siem-webhook.js (parseSiemWebhook) · tests/ip3-siem-webhook.unit.jsPOST /imports/siem-webhook
Generic CSVCSVLIVEroutes/ip3-parsers.js (parseGenericCsv) · tests/ip3-parsers.unit.jsPOST /imports/csv
Generic JSONJSONLIVEbrak dedykowanego parsera — findingi przyjmowane wprost {source_tool, findings:[...]}, walidacja pól + cap w routes/ip3-api-pro.jsPOST /imports/generic

Weryfikacja niezależna: node tests/ip3-parsers.unit.js, node tests/ip3-sarif.unit.js, node tests/ip3-sbom.unit.js, node tests/ip3-defectdojo.unit.js, node tests/ip3-secrets-intake.unit.js, node tests/ip3-cloud-posture.unit.js, node tests/ip3-splunk.unit.js, node tests/ip3-sentinel.unit.js, node tests/ip3-misp.unit.js, node tests/ip3-siem-webhook.unit.js, node tests/ip3-openvas.unit.js, node tests/ip3-parsers-ext.unit.js, node tests/ip3-re.unit.js — każdy zwraca 0 FAIL na tym repozytorium (offline, bez DB).

Konektory z gotowym kodem — endpoint fail-safe WYŁĄCZONY domyślnie

Parser i testy istnieją i przechodzą, ale endpoint zwraca 501 dopóki operator nie ustawi flagi środowiskowej — celowy fail-closed (RoE/uprawnienia), nie ukryty brak.

KonektorFormatStatusDowód (kod + test)EndpointJak włączyć
GitHub — code scanning / dependabot / secret alerts (pull live)API (pull)MVP — fail-safe OFFroutes/ip3-scm-ingest.js (ingestFromGitHub) · tests/ip3-scm-ingest.unit.js (49 PASS / 0 FAIL)POST /imports/github/:owner/:repoIP3_SCM_INGEST=on + IP3_GITHUB_TOKEN (bez tokenu: fallback na lokalny gh api)
STIX 2.1 bundle / TAXII 2.1 (CTI)JSONMVP — fail-safe OFFroutes/ip3-stix.js · tests/ip3-stix.unit.js, tests/ip3-stix-demo.unit.jsPOST /imports/stixIP3_STIX=on (parser offline działa zawsze; klient TAXII wymaga też adresu serwera)
SIEM webhook z weryfikacją HMAC (receiver, dedup+replay)JSON + podpis X-SignatureMVP — fail-safe OFFroutes/ip3-siem-guard.js · tests/ip3-siem-guard.unit.jsPOST /siem/webhookIP3_SIEM_GUARD=on + IP3_SIEM_GUARD_SECRET

GAP jawny — brak dedykowanego parsera

Syft (generator SBOM) GAP

Brak natywnego, nazwanego konektora „Syft". Output Syfta to standardowy CycloneDX lub SPDX JSON, więc trafia generycznie przez POST /imports/sbom (routes/ip3-sbom.js) — działa, ale bez rozpoznania metadanych specyficznych dla Syfta (np. pochodzenie warstwy obrazu, scope distro).

Dwukierunkowy sync ticketingu (Jira / ServiceNow zapis zwrotny) ROADMAP

Istnieje jednokierunkowy eksport zadania remediacji (GET /api/ip3/v1/incidents/{id}/ticket, payload Jira/GitHub Issues, LIVE) oraz natywny lifecycle ticketu wewnątrz ipIII (routes/ip3-ticket-sync.js, IP3_TICKET_SYNC). Realny push do zewnętrznego Jira/ServiceNow (utworzenie + odczyt statusu w systemie klienta) pozostaje ROADMAP — pushToExternalTicketSystem() zwraca jawnie {ok:false, reason:'not_implemented'}, nigdy fałszywy sukces.

Uwaga techniczna (nie osobny konektor): routes/ip3-gitleaks.js i routes/ip3-trufflehog.js mają własne, przechodzące testy (tests/ip3-gitleaks.unit.js, tests/ip3-trufflehog.unit.js), ale nie są podpięte pod żaden endpoint — te same formaty obsługuje aktywnie routes/ip3-secrets.js pod /imports/secrets. Traktować jako kod zapasowy/martwy, nie jako oddzielny, brakujący konektor.

Konektory P1 — rozszerzenie, wciąż ROADMAP

Threat-intel jako żywy feed (subskrypcja, nie jednorazowy eksport), BAS (Breach & Attack Simulation) i automatyczna walidacja ekspozycji. Żaden plik parsera/testu dla tych pozycji nie istnieje w repozytorium.

KonektorKlasaFormaty / transportRolaPrioStatus
MISP — subskrypcja żywego feeduThreat intelTAXII, pushIoC w czasie rzeczywistymP1ROADMAP (jednorazowy import Event JSON = LIVE, patrz wyżej)
OpenCTIThreat intelGraphQLkorelacja zagrożeńP1ROADMAP
SafeBreach / AttackIQ / PicusBASAPIwalidacja kontroliP1ROADMAP
Pentera / XM Cyber / NodeZeroAuto-pentestAPIekspozycja / ścieżki atakuP1ROADMAP
Dependency-TrackSCA / SBOMREST APIryzyko komponentów (integracja platformy, nie format)P1ROADMAP (SBOM CycloneDX/SPDX generyczny = LIVE, patrz wyżej)
Jira / ServiceNow — zapis zwrotnyTicketingRESTdwukierunkowoP0ROADMAP

Kreator mapowania pól (Generic) ROADMAP

Dla źródeł bez dedykowanego konektora: operator mapuje kolumny/pola wejścia na kanoniczny model dowodu przez interfejs (UI). Ten interfejs (kreator klikany, nie API) jest specyfikacją — POST /imports/generic i /imports/csv już dziś przyjmują dowolne pola bez UI, patrz tabela LIVE wyżej.

WEJŚCIE (Generic JSON, przyklad demo)         MODEL DOWODU (kanoniczny)
{                                             {
  "host":     "10.20.0.14",         ──map──►    "asset":       "10.20.0.14",
  "plugin":   "CVE-2024-XXULT",     ──map──►    "finding_ref": "CVE-2024-XXULT",
  "risk":     "High",               ──map──►    "severity":    "high",
  "evidence": "banner grab...",     ──map──►    "proof_blob":  "<hash SHA-256>",
  "tool":     "nessus"              ──map──►    "source":      "nessus",
}                                               "confidence":  0..100,
                                                "chain":       [import, ts, operator]
                                              }
Krok 1 — Źródło. Wybór konektora lub upload pliku. RoE i zakres autoryzacji sprawdzane przed przyjęciem.
Krok 2 — Mapowanie. Pola wejścia → pola modelu dowodu. Kreator (UI) zapisuje profil mapowania do ponownego użycia — ROADMAP; dziś mapowanie robi parser po stronie serwera.
Krok 3 — Normalize. Wynik trafia do warstwy Normalize: dedup, hash, severity, znacznik czasu, chain-of-custody.
Krok 4 — Evidence. Ustalenie zapisane jako dowód z poziomem pewności. Truth Engine decyduje o statusie incydentu.

Metryki warstwy

Liczby policzone z plików repozytorium w tej sesji (parsery + testy + montaż endpointu), nie deklaracja marketingowa.

20
Endpointów importu zamontowanych bezwarunkowo
+2 za flagą env (GitHub, STIX). Weryfikacja: grep -oE "r.post\('/imports/[a-z0-9-]+" routes/ip3-api-pro.js oraz grep -oE "importParser\('[a-z0-9-]+" routes/ip3-api-pro.js
3
Kod gotowy, endpoint fail-safe OFF
GitHub SCM, STIX/TAXII, SIEM-webhook HMAC
1
GAP jawny (brak dedyk. parsera)
Syft — pokryty generycznie przez SBOM
6
Standardy wymiany
SARIF · STIX/TAXII · CycloneDX/SPDX · HMAC webhook · Generic JSON/CSV
Zasada konektorów. Import ≠ wykonanie testu. K0NSULT nie posiada exploitów, nie wysyła pakietów do celu, nie inicjuje skanu ani symulacji ataku. Przyjmuje wyłącznie wyniki narzędzi uruchomionych przez klienta w jego środowisku i w ramach pisemnego RoE. Bez RoE — brak przyjęcia źródła.
Przypomnienie §16. Status tej strony to MVP: konektory importu w tabeli mają realny kod, przechodzący test jednostkowy i zamontowany endpoint (uruchamialne dziś przez inżyniera klienta pod adresami z tabeli). To NIE jest pełny system klasy bankowej — brakuje UI kreatora mapowania, dwukierunkowego syncu ticketingu, BAS i części feedów threat-intel jako subskrypcji (oznaczone jawnie ROADMAP wyżej). Import = sygnał narzędzia (MEDIA_SIGNAL/TENTATIVE), nie dowód naprawy.