//InkBlade墨刃零

Training & inference infrastructure

InkBlade墨刃零

Training & Inference Cluster Penetration Testing Platform

Product documentation / 2026-10

A static Rust probe inside the authorized Pod, ten detection layers, bilingual reports, replayable rules and a local console. The controller never ships code into the cluster.

01

Ten detection layers

What the probe looks at, layer by layer

Each layer is a set of templates you can run on its own. A template declares inputs, steps, checks, findings and artifacts; the probe executes it and returns evidence.

10detection layers
286templates
29chains
11defense-bypass modules

The ten layers

LayerWhat you can doRepresentative templates
1ArchitectureAudit rail and multi-plane alignment, PD-split KV channels, IMEX domains, MoE/EP collectives, long-context KV lifetime and federation.rail-mismatch-forcing, prefill-decode-kv-channel-unauth, nvlink-imex-isolation
2Product / frameworkEnumerate admin and control surfaces of vLLM, SGLang, TRL, verl, AReaL, SkyRL, OpenRLHF, slime, LLaMA-Factory, ms-swift, Megatron-LM, DeepSpeed, transformers, gateways and agent platforms.vllm-plugin-auth-bypass, sglang-admin-failopen, verl-prime-code-exec
3Component / operatorInspect Ray and LWS control planes, GPU Operator and driver containers, DRA policy, CSI node plugins, BMC/Redfish and DPU offload.ray-dashboard-job, gpu-operator-driver-audit, gpu-dra-mig-policy
4Network / fabricTest policy bypass on hostNetwork, SR-IOV and macvlan, dual CNI planes, IB subnet manager, RoCE PFC/ECN, SHARP, NCCL bootstrap and DNS.multus-sriov-rdma-bypass, ib-sm-partition-audit, sharp-in-network-poison
5Data / weightsCheck checkpoint and optimizer shards, dataset pipelines, HF cache, weight buckets, model registries and KV/prefix caches.checkpoint-shard-poison, skyrl-fetch-weights-traversal, model-registry-exposure
6Tenant / isolationMeasure MIG and MPS residue, GPU pooling schedulers, cache_salt policy and routing metric leakage.gpu-tenant-residue, hami-scheduler-auth-gap, cache-salt-policy-audit
7Supply chain / identityVerify trust_remote_code, revision pinning, attestation chains, SBOM, IRSA/workload identity, IMDS and credential exposure.trust-remote-code-supply-chain, gpu-cc-attestation-chain, cloud-irsa-trust-wildcard
8Cache securityTest cross-tenant prefix cache, semantic false hits, eviction residue, remote KV pools, EPP metrics and TTFT timing.prefix-cache-cross-tenant-leak, remote-kv-pool-isolation, cache-timing-sidechannel
9Cross-combinationReport findings that only exist when two or three components meet, once at the combination, with component notes folded in.sglang-weight-exfil, imex-computedomain-gpu-memory-crossing, long-context-cache-leak
10Defense bypassMeasure whether HIDS, runtime eBPF, admission, image scan, host agents, WAF and network flow visibility see benign authorized activity.defense-bypass-elkeid, defense-bypass-falco, defense-bypass-admission

Layer detail, detection points and evidence produced: DETECTION-LAYERS.md · PRODUCT.md

Platform capabilities

  • One execution path. Foothold, Rust probe, framed channel, in-pod task, child probe, evidence.
  • Probe trees. probe_id and parent_id; each child has its own token and a stricter budget; the tree limits nesting depth and concurrent child probes; cleanup is child-first.
  • Agent runtime. A budgeted objective graph with decision trace, journal resume and zero-execution replay.
  • Cross-cluster relay. The same framed protocol between clusters, with a completion proof.
  • Evidence from the probe. Task results, step logs, artifacts, SHA-256 manifests, traffic tables and cleanup receipts.
  • Rules you can replay. Admission, runtime and network packs with intercepted / detected / missed matrices.
  • Report and console. Bilingual pentest and remediation reports, SARIF / OCSF / VEX export, local console.
02

One execution path

Three components, one probe tree

The controller never executes target-side logic. It authorizes, renders templates, enforces budgets and archives evidence. The probe is the only code that runs inside the Pod.

execution path
foothold ──▶ Rust probe ──▶ framed channel ──▶ in-pod task
                                              │
                                              ├─▶ child probe ──▶ child probe
                                              └─▶ evidence ──▶ report / rules / console

Three components

  • Templates. template.json declares inputs, payloads, steps, computed state, checks, findings and artifacts.
  • Probe. A static Rust binary speaks an HMAC-authenticated framed protocol and executes http, tcp, exec, fs, k8s, socks and spawn ops.
  • Controller. Python enforces consent, scope, level, backup and audit, then folds probe evidence into findings.

Probe tree

Every probe has a probe_id and a parent_id. Children inherit the parent's read-only state, command allow-list and budget, and can only be stricter. Cleanup runs child-first, so no uncleaned child probe keeps a token alive.

ARCHITECTURE.md · ARCHITECTURE-PROBE.md · PROBE-PROTOCOL.md

03

Static Rust probe

One binary, 286 templates

The probe is one static musl binary per architecture, linux/amd64 and linux/arm64. Templates are JSON data.

286templates
2musl architectures
12probe operations

Probe operations

OperationWhat it does
collectHost, Pod, process, network and Kubernetes context.
execRun an allow-listed command with a bounded budget.
audit-execRun a command and record the audit trail and timing.
read-fileRead a file with size limits and a SHA-256 hash.
list-filesList a directory tree with metadata.
uploadWrite a file after the authorization and write-permission checks.
downloadStream a file back in chunks.
spawnStart a child probe with its own token and a stricter budget.
dialOpen a TCP or UDP connection to an in-scope target.
socksExpose a loopback SOCKS5 listener for local tool compatibility.
beaconSend heartbeat and state updates over the framed channel.
cleanupRemove artifacts and confirm the probe tree is empty.

Every operation is budgeted, scoped and recorded in the evidence store; the probe tree cleans up child-first.

Every module is a template, and the registry rejects a module that ships run.py.

ARCHITECTURE-PROBE.md · PROBE-PROTOCOL.md · PROBE-BUILD.md

04

Proxy protocol support

Reverse transports and ML service proxies

The reverse channel and the ML proxies are separate layers: the channel carries frames between controller and probe, the proxies carry a service protocol between the probe and an in-scope target.

LayerSupported
Reverse channelTLS · WSS · HTTPS · QUIC · WebTransport (experimental) · MASQUE
ML service proxygRPC · Redis · TCPStore · NCCL · UCX · ZMTP (experimental)
SOCKS5Loopback compatibility only (127.0.0.1)

Authentication and encryption

  • Every framed message carries a token and an HMAC; a wrong token or MAC closes the channel.
  • TLS, WSS, HTTPS, QUIC and WebTransport validate the controller certificate against a pinned SHA-256 fingerprint and an optional CA file.
  • gRPC, Redis, TCPStore, NCCL and UCX proxies are TLS-wrapped; ZMTP uses CURVE with Z85 keys when enabled.
  • SOCKS5 stays on loopback and is a compatibility path for local tooling, not a network-wide proxy.

PROBE-CHANNEL.md · PROBE-PROTOCOL.md · USAGE.md

05

Vulnerability research

The research behind the template catalogue

The template catalogue is built on 184 vulnerability write-ups, each recording the component, affected versions, root cause, impact and detection. 68 have runnable PoCs. The research set contains 169 entries: 47 were reproduced dynamically and confirmed unpublished, 46 are ready for coordinated disclosure, and deduplication leaves 39 distinct exploit primitives. A 103-record version matrix and 121 detection rules feed 29 attack chains.

Vulnerability research

InventoryCount
Vulnerability entries184
Runnable PoCs68
Research entries169
Confirmed unpublished47
Ready for disclosure46
Unique primitives39
Version matrix rows103
Payload packs47
Detection rules121
Attack chains29

The public ledger lists component, class, affected versions and disclosure status; exploit details stay private.

0DAY-PUBLIC.md · VULNERABILITY-LAYERS.md · DETECTION-LAYERS.md

06

From foothold to report

Nine stages, each leaving behind something the next stage can check

The order matters. Any stage can refuse, and a refusal stops the run.

  • 1Footholdsession open records the entry vector, target, namespace, Pod and credential fingerprint.
    → session record
  • 2Rust probeprobe deploy delivers the static binary and registers its identity and hash.
    → probe identity
  • 3Channelchannel listen accepts the probe's reverse connection; a stdio channel is available when a local transport exists.
    → channel state
  • 4Detectionsession run, run and agent run execute templates across the ten layers.
    → findings, evidence
  • 5Escapeexecute resolves a chain; write steps pass the backup check first.
    → escape path
  • 6Lateralchannel forwards, child probes and agent graph edges map internal reachability.
    → reachability graph
  • 7Multi-probeprobe spawn extends the tree; children inherit a stricter budget and allow-list.
    → probe tree
  • 8Cross-clusteragent relay connects clusters; agent coverage writes the completion proof.
    → relay status, coverage proof
  • 9Report / rules / consolereport, export, rules generate and ui finish the engagement.
    → report, rule packs, console

Write-permission checks

GateRefuses whenSignal
ConsentNo record, expired window, out-of-scope asset.exit 91
LevelTemplate level above the record.exit 91
BackupWrite step without a backup target.exit 91
ScopeTarget or namespace outside the session.refused
RollbackA step cannot be restored.exit 3

Stage reference

07

Probe-first onboarding

Install, attach, deliver, run, report

Start from the console and attach the probe or foothold you already hold. The default foothold is a least-privilege Pod: non-root, no hostPath or privileged mode, no kubeconfig, outbound TCP only.

  1. python -m pip install -e .Install the controller (Python 3.10 – 3.13).
  2. python -m inkblade upStart the console, sign in and sign the authorization record.
  3. python -m inkblade probe listAttach an existing probe; the controller listens and the probe connects back.
  4. python -m inkblade session open --mode foothold ...First delivery from the shell, SA token or RCE you already hold.
  5. python -m inkblade agent run --probe <probe-id> ...Run detection through the probe channel, then report.
terminal · probe-first
$ python -m inkblade up
$ python -m inkblade quickstart
$ python -m inkblade probe list
$ python -m inkblade channel listen
$ python -m inkblade session open --mode foothold --target <target>     --credential-source pod-shell --namespace <namespace> --pod <pod>
$ python -m inkblade probe deploy --session <session-id> --via rce     --binary ./inkblade-probe-linux-amd64 --probe-token-file ./probe.token --allow-write
$ inkblade-probe reverse --host <controller> --port <port>
$ python -m inkblade agent run --probe <probe-id> --objective read-only-recon --workspace ./work
$ python -m inkblade report --run <run-id> --lang bi

Child probes are delivered from the parent with probe upload + probe spawn and call back the same way. A stdio channel (channel start) is available when a local command transport exists. A kubeconfig is optional, only for a first batch bootstrap of several Pods. The documentation site is local: python -m inkblade docs serves docs/ on 127.0.0.1:8766 and opens the browser; --no-browser keeps it headless.

Quick start · Install · Usage

08

Command map

The surface you actually type

Commands that do not contact a cluster or an LLM run offline. Agent planning needs an LLM endpoint.

TaskCommand
Onboardinginkblade up
Authorizationinkblade quickstart · inkblade roe
Sessioninkblade session open|status|close|run
Probeinkblade probe deploy|list|collect|exec|read-file|list-files|upload|download|spawn|cleanup
Channelinkblade channel listen|start|status|stop
One templateinkblade session run --id --module · inkblade run --module
Chaininkblade execute --chain [--dry-run]
Agentinkblade agent run|status|trace|resume|replay|stop
Cross-clusterinkblade agent relay add|list|status · inkblade agent coverage status|proof
Reportinkblade report --run --lang bi
Exportinkblade export --run --format sarif|ocsf|vex
Rulesinkblade rules generate · inkblade rules validate
Consoleinkblade ui
Docs siteinkblade docs --port 8766 --bind 127.0.0.1
Templatesinkblade template list|get|plan|validate

Full usage reference

09

Wheel, container, Helm

One controller, any of three delivery paths

The controller is a Python package with no third-party dependency. The probe is a separate static binary.

wheel
python -m pip wheel . --no-deps -w dist/
python -m pip install --no-index --find-links dist/ inkblade
container
docker build -t inkblade:0.2.0 .
docker run --rm -v inkblade-data:/data inkblade:0.2.0 up
helm · read-only by default
helm install inkblade deploy/helm/inkblade   --namespace inkblade --create-namespace

uid 10001, read-only root, a PVC for evidence. Read verbs by default; writes need readOnly=false, rbac.allowWrite=true and a signed record. Uninstall keeps the PVC.

Install guide · Probe delivery

10

Security and authorization

Authorization is a prerequisite, not a feature toggle

InkBlade refuses to run without a signed record, and each stage has its own check.

  1. RoE recordTarget, scope, level, window and emergency contact. Hash-pinned and carried by every run.
  2. Read-only defaultCollection, probes, file reads and read-only templates need no extra flag.
  3. Five write-permission checksSession level, --allow-write, meta.writes, backup-write mode, backup receipt.
  4. Backup and rollbackSnapshot before the write, record both, restore one step at a time.
  5. Audit and evidenceEvery probe action and file access lands in the evidence store with a SHA-256 manifest.
  6. Kill switchinkblade abort stops the workspace; agent stop stops one run.
ControlWhat it guarantees
Consent hashEvery run carries the hash of its signed authorization file.
Scope and levelOut-of-scope or above-level actions are refused before execution.
Backup receiptNo write without a restorable snapshot.
Evidence manifestEvery finding resolves to a task, step, artifact, probe or manifest hash.

Authorized use only. Written authorization or nothing. Testing systems you do not own is a crime in most jurisdictions. The software refuses without a signed record.

Report security issues through the private channel in SECURITY.md. Do not open a public issue with exploit detail.

11

FAQ

Access, probe, detection, authorization, delivery

How does the probe get into the Pod?

From a foothold you already hold. The default is authorized RCE: base64 chunks of the binary go into the Pod and are written through memfd, or through /dev/shm or /tmp when memfd is unavailable, then chmod 700 and start. A ServiceAccount token, a shared volume and an EphemeralContainer manifest are the other roads: probe deploy --via sa-token builds a temporary kubeconfig and uses kubectl cp + exec, a shared volume carries the binary through a mounted volume, and probe deploy --via manifest generates the Pod, Job or EphemeralContainer manifest. kubectl is only needed for batch bootstrap. Once started, the probe calls back with inkblade-probe reverse --host --port , and every later command runs over that channel.

Is the probe a backdoor?

No. It does not persist, modify startup, patch images or call a fixed C2. It runs inside an authorized session, executes registered templates, defaults to read-only, checks writes and cleans up.

How are writes controlled?

Five checks: signed authorization covering target, level and window; --allow-write; meta.writes with a write step; backup-write mode; and a backup receipt. A write reads back the hash and rolls back on failure.

Can it run air-gapped?

Manual runs, templates, probes and reports run offline. Agent mode with LLM planning needs an LLM endpoint — a local model or an internal API; without one, use manual or rule-based execution.

Can I use it commercially?

Apache-2.0 permits commercial use and forks. Keep LICENSE and NOTICE, and do not use the InkBlade trademark for a fork.

More: FAQ.md

12

License

Apache-2.0, repository policies

Apache-2.0. Commercial use, forks and embedding are permitted; keep the notices.

ItemDetails
LicenseApache-2.0. Keep LICENSE and NOTICE.
TrademarkDo not name a fork InkBlade.
PoliciesSECURITY.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md.

Documentation index: DOC-INDEX.md