K0NSULT // ai-truth/ipIII
k0nsult.cloud / ai-truth / ipIII / dev

Dev & Pentester Landing — Evidence & Resilience Orchestrator

Techniczny punkt wejścia. Bez marketingu. Poniżej: quickstart (import → pack → retest), formaty importu z realnymi parserami, przykłady curl, kontrakt openapi.json, kanon statusów i znane ograniczenia. Baza API: https://k0nsult.cloud/api/ip3/v1.

Granica działania. ipIII to narzędzie GRC / obrony (blue) i orkiestracji dowodów — nie disassembler, nie deobfuscator, nie zestaw ataku. System nie wykonuje nieautoryzowanych skanów, exploitacji ani hack-back. Import findingów = MEDIA_SIGNAL (sygnał do triażu), nie dowód naprawy. Wszelkie działania o charakterze testu bezpieczeństwa (BAS, red-team) wyłącznie w granicach pisemnych Rules of Engagement. Ta strona nie zawiera payloadów ani instrukcji ofensywnych. Doktryna: claim ≤ proof.
import → pack → retest → close (z dowodem)

Realne parsery Burp/ZAP/Nessus/Qualys/CSV/JSON + YARA/RE zapisują incydenty i evidence (sha256 + chain-of-custody) do PostgreSQL. Reguła close-with-evidence egzekwowana w bazie: bez rekordu CONFIRMED zamknięcie zwraca 422. Evidence-package (JSON/PDF + package_sha256) odzwierciedla każdą zmianę stanu.

PĘTLA: login (JWT)import findingsincydent + evidenceevidence-packageretestclose-with-evidence

Kanon liczby testów i dowodów: Evidence Matrix (/roadmap-dev). Kanon statusu każdego elementu: Status Matrix. Ta strona nie duplikuje liczb „NN/NN" — linkuje do źródła prawdy.

1 · Quickstart (import → pack → retest)

Minimalna ścieżka end-to-end na warstwie v1 (auth-gated, DB). Wymaga konta v1 (na zaproszenie — patrz roadmap-dev). Sample pack niżej działa bez logowania.

Krok 1 — Login. POST /api/ip3/v1/auth/login → zwraca {token, token_type:"Bearer", expires_in:3600, roles[]}. Token = JWT ważny 1h.
Krok 2 — Import. Wyślij artefakt do właściwego konektora (/imports/burp|zap|nessus|qualys|csv|generic|re) z nagłówkiem Authorization: Bearer <token>. Odpowiedź 201 = connector_run (utworzone incydenty + evidence, import=MEDIA_SIGNAL).
Krok 3 — Board pack. GET /api/ip3/v1/reports/evidence-package/:id?format=pdf → pobieralny PDF; ?format=json → manifest + package_sha256 + chain-of-custody.
Krok 4 — Retest / close. Dodaj evidence POST /incidents/:id/evidence, ustaw retest CONFIRMED (PATCH /incidents/:id), a następnie POST /incidents/:id/close. Bez rekordu CONFIRMED → 422. Pobierz pack ponownie — package_sha256 się zmieni (dowód zmiany stanu).

2 · Formaty importu (realne parsery)

Każdy endpoint ma test jednostkowy parsera + test integracyjny na żywej bazie. Kanon liczb → Evidence Matrix.

KonektorEndpoint (POST)Content-Type / bodyStatus
Burp Suite/imports/burpapplication/xml — surowy eksport XML (<issue>)LIVE v1
OWASP ZAP/imports/zapapplication/json (alerts) lub application/xmlLIVE v1
Nessus / Tenable/imports/nessustext/csv — kolumny Name,Risk,CVE,CVSS,Host…LIVE v1
Qualys VM/imports/qualystext/csv (QID,Title,Severity,CVE ID,CVSS Base,Host,Threat) lub application/xmlLIVE v1
Generic CSV/imports/csvtext/csv — nagłówki title,severity,cve?,cvss?,type?,host?LIVE v1
Generic JSON/imports/genericapplication/json{source_tool, findings:[{title,severity,cve?,cvss?,incident_type?}]}LIVE v1
YARA / RE (malware)/imports/reapplication/json — YARA {matches|rules} lub {findings:[{title,severity,type,sha256,technique}]}LIVE v1

Normalizacja: severity → P0–P3, enrichment offline (KEV/CVSS/EPSS hint z seedu), mapowanie MITRE ATT&CK (GET /incidents/:id/ttp). Online-lookup NVD/CISA, STIX/TAXII, deduplikacja/idempotencja = ROADMAP. YARA/RE: ipIII orkiestruje dowody z warsztatu RE — nie deobfuskuje.

3 · Przykłady curl

Baza: API=https://k0nsult.cloud/api/ip3/v1. Zamień :id, :eid i dane logowania na własne. Uwierzytelnianie: Authorization: Bearer <token>.

Login → token

# zwraca {token, token_type:"Bearer", expires_in:3600, roles[]}
TOKEN=$(curl -s -X POST https://k0nsult.cloud/api/ip3/v1/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"email":"analyst@example.org","password":"<secret>"}' \
  | sed -n 's/.*"token":"\([^"]*\)".*/\1/p')

Import — Burp (XML)

curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/burp \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type: application/xml' \
  --data-binary @burp-export.xml
# 201 {ok,connector_run:{...},created,evidence_ids[...]}  |  422 no_findings

Import — Nessus (CSV) / ZAP (JSON) / Generic (JSON)

curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/nessus \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: text/csv' \
  --data-binary @nessus.csv

curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/zap \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  --data-binary @zap-report.json

curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/generic \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"source_tool":"custom-dast","findings":[{"title":"SQLi /login","severity":"high","cve":"CVE-2021-44228","cvss":9.8,"incident_type":"injection"}]}'

Import — YARA / RE (malware, defensywnie)

curl -s -X POST https://k0nsult.cloud/api/ip3/v1/imports/re \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"findings":[{"title":"YARA hit: Emotet loader","severity":"high","type":"malware","sha256":"<hash>","technique":"T1027"}]}'
# ipIII = evidence orchestration, NIE disassembler/deobfuscator

Board pack — evidence-package (PDF)

curl -s -X GET "https://k0nsult.cloud/api/ip3/v1/reports/evidence-package/:id?format=pdf" \
  -H "Authorization: Bearer $TOKEN" -o board-pack.pdf
# ?format=json => manifest + package_sha256 + chain-of-custody + audit trail

Legal Trigger Engine (incydent → obowiązek)

curl -s -X GET "https://k0nsult.cloud/api/ip3/v1/incidents/:id/legal-triggers?personal_data=true&high_risk=true&entity=bank&sector=finance" \
  -H "Authorization: Bearer $TOKEN"
# {triggers[],trigger_count,basis,doctrine} — DORA art.19 / NIS2 24h-72h / RODO art.33-34 / AI Act art.73
# zegary (deadline ISO od created_at) + draft powiadomienia. DECISION-SUPPORT, nie porada prawna.

MITRE ATT&CK — TTP mapping

curl -s -X GET https://k0nsult.cloud/api/ip3/v1/incidents/:id/ttp \
  -H "Authorization: Bearer $TOKEN"
# {ttps:[{id:"T1027",tactic,name}...],count} — heurystyka, nie automatyczna atrybucja

DORA/TIBER — engagement report-package

curl -s -X GET "https://k0nsult.cloud/api/ip3/v1/engagements/:eid/report-package?format=pdf" \
  -H "Authorization: Bearer $TOKEN" -o tlpt-report.pdf
# raport TLPT: engagement + timeline + evidence-register + final-report + manifest + package_sha256

4 · Kontrakt — openapi.json

Kontrakt referencyjny (OpenAPI 3.1). Nie jest to SLA. Statusy per-endpoint w polu x-status (LIVE / GAP / reference).

Maszynowo

GET /ai-truth/ipIII/openapi.json

info.version: 0.1.0-reference · x-status: reference-contract

Przeglądarka

API Docs — viewer OpenAPI (inline, CSP-safe).

API Explorer — interaktywny, woła żywe read-path endpointy.

Uwierzytelnianie

bearer (JWT z /auth/login). Nagłówek x-konsult-secret = DEPRECATED do prod (docelowo OIDC/OAuth2 + mTLS).

Warstwy API. /api/ip3/incidents = publiczny read-path (dane SIMULATION). /api/ip3/v1/* = LIVE auth-gated (JWT/RBAC/PostgreSQL, zapis). /api/incidents = legacy placeholder GAP (chroniony, 401 anon). Nie mieszać warstw.

5 · Status matrix (kanon statusu)

Ta strona nie definiuje statusów lokalnie. Jedyne źródło prawdy dla statusu każdego elementu portalu → Status Matrix. Poniżej tylko legenda reguły §16.

StatusZnaczenieWarunek nadania
LIVEDziała produkcyjnie/na gałęzi z dowodem.Kod + test + endpoint (lub link do artefaktu).
DEMOŚcieżka odczytu na danych przykładowych.Endpoint read-path działa, dane oznaczone jako demo.
SIMULATIONWartości/incydenty ilustracyjne.Jawnie „symulacja", nie stan realnej infrastruktury.
ROADMAPSpecyfikacja docelowa, jeszcze nie zbudowane.Opisane kryteria akceptacji, brak działającego kodu.
GAPHipoteza/luka bez pokrycia dowodowego.Brak dowodu — nie wolno przedstawiać jako fakt.

6 · Known limitations (jawne granice)

Skrót. Pełny, wersjonowany rejestr → Known Limitations. Deklarujemy je zamiast je ukrywać — to jest waluta zaufania.

Bez overclaim. ipIII nie jest „certyfikowany", nie jest „w 100% bezpieczny", nie jest „produkcyjnym systemem bankowym" ani „w pełnej zgodności" — to narzędzie GRC/obrony w rozwoju przyrostowym. Każdy status ma dowód (kod+test+endpoint) albo nosi etykietę ROADMAP/GAP.

7 · Sample pack (bez logowania)

Syntetyczne artefakty do testu parserów i kształtu odpowiedzi — publiczne, bez tokenu, zero danych realnych. Whitelist plików (zero path-traversal).

PlikTypDo czego
import-burp-demo.xmlapplication/xmlwejście dla /imports/burp
import-nessus-demo.csvtext/csvwejście dla /imports/nessus
evidence-package-demo.jsonapplication/jsonkształt board pack (manifest + hash)
README.txttext/plainopis + zasady użycia
# indeks sample pack (JSON)
curl -s https://k0nsult.cloud/ai-truth/ipIII/samples

# pobierz demo i sprawdź parser lokalnie (bez zapisu — potrzebny token do /imports)
curl -s -o burp.xml https://k0nsult.cloud/ai-truth/ipIII/samples/import-burp-demo.xml

8 · Zgłaszanie podatności (VDP)

Znalazłeś błąd w ipIII? Zgłoś przez /.well-known/security.txt lub stronę disclosure / CVD. Testy bezpieczeństwa samego portalu — tylko po uzgodnieniu zakresu (RoE). Weryfikator integralności pakietów: verify.

Zasada nadrzędna. Ten landing nie sprzedaje „gotowego systemu" — pokazuje realny kontrakt techniczny i jego granice. Co LIVE (z dowodem) vs co ROADMAP rozstrzyga Status Matrix; ile testów przechodzi rozstrzyga Evidence Matrix. Bez kodu + testu + endpointu = nie LIVE (§16).