//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.

训练与推理基础设施

InkBlade墨刃零

训练与推理集群渗透测试平台

产品文档 / 2026-10

把静态 Rust 探针放进已授权的 Pod,覆盖十层检测,产出双语报告、可重放规则与本地控制台。控制端不向集群下发代码。

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.
01

十层检测

探针逐层看什么

每一层都是一组可独立执行的模板。模板声明输入、步骤、检查项、发现和产物;探针执行模板并回传证据。

10检测层
286模板
29条链
11防护绕过模块

十层一览

层能做什么代表模板
1架构层审计 rail 与多平面错配、PD 分离 KV 通道、IMEX 域、MoE/EP 集合通信、长上下文 KV 生命周期、多集群联邦与身份信任。rail-mismatch-forcing, prefill-decode-kv-channel-unauth, nvlink-imex-isolation
2产品 / 框架层枚举 vLLM、SGLang、TRL、verl、AReaL、SkyRL、OpenRLHF、slime、LLaMA-Factory、ms-swift、Megatron-LM、DeepSpeed、transformers、网关与 Agent 平台的管理面与控制面。vllm-plugin-auth-bypass, sglang-admin-failopen, verl-prime-code-exec
3组件 / Operator 层检查 Ray 与 LWS 控制面、GPU Operator 与驱动容器、DRA 策略、CSI 节点插件、BMC/Redfish 与 DPU offload。ray-dashboard-job, gpu-operator-driver-audit, gpu-dra-mig-policy
4网络 / fabric 层验证 hostNetwork、SR-IOV、macvlan 上的策略旁路,CNI 双控制面、IB 子网管理器、RoCE PFC/ECN、SHARP、NCCL bootstrap 与 DNS。multus-sriov-rdma-bypass, ib-sm-partition-audit, sharp-in-network-poison
5数据 / 权重层检查 checkpoint 与优化器分片、数据集管道、HF 缓存、权重桶、模型注册表与 KV/前缀缓存。checkpoint-shard-poison, skyrl-fetch-weights-traversal, model-registry-exposure
6租户 / 隔离层度量 MIG 与 MPS 残留、GPU 池化调度器、cache_salt 策略与路由指标泄露。gpu-tenant-residue, hami-scheduler-auth-gap, cache-salt-policy-audit
7供应链 / 身份层核验 trust_remote_code、revision 固定、证明链、SBOM、IRSA/工作负载身份、IMDS 与凭据暴露。trust-remote-code-supply-chain, gpu-cc-attestation-chain, cloud-irsa-trust-wildcard
8缓存安全层测试跨租户前缀缓存、语义缓存误命中、逐出残留、远程 KV 池、EPP 指标与 TTFT 时序。prefix-cache-cross-tenant-leak, remote-kv-pool-isolation, cache-timing-sidechannel
9跨组合层只在两个或三个组件同时满足条件时才成立的发现,合并到组合层报一次,并把组件级记录并入其中。sglang-weight-exfil, imex-computedomain-gpu-memory-crossing, long-context-cache-leak
10防护绕过层度量 HIDS、运行时 eBPF、准入、镜像扫描、主机代理、WAF 与流量可视化是否看得见良性授权行为。defense-bypass-elkeid, defense-bypass-falco, defense-bypass-admission

逐层检测点与证据产出:DETECTION-LAYERS.md · PRODUCT.md

平台能力

  • 一条执行路径。 立足、Rust 探针、帧通道、Pod 内任务、子探针、证据。
  • 探针树。 probe_id 与 parent_id 标出位置;子探针用自己的 token,继承只能更严格;限制嵌套层数与并发子探针数量;清理先子后父。
  • Agent 运行时。 带预算的目标图,含决策轨迹、journal 恢复与零执行回放。
  • 跨集群中继。 集群间用同一套帧协议,并留下覆盖证明。
  • 证据由探针产出。 任务结果、步骤日志、产物、SHA-256 manifest、流量表与清理回执。
  • 规则可重放。 准入、运行时、网络三类规则包,输出拦截 / 检出 / 漏过矩阵。
  • 报告与控制台。 双语渗透与修复报告、SARIF / OCSF / VEX 导出、本地控制台。
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

02

一条执行路径

三个组件,一棵探针树

控制端不在目标侧执行任何逻辑:它负责授权、渲染模板、执行预算与归档证据。探针是 Pod 里唯一运行的代码。

执行路径
立足 ──▶ Rust 探针 ──▶ 帧通道 ──▶ Pod 内任务
                                   │
                                   ├─▶ 子探针 ──▶ 子探针
                                   └─▶ 证据 ──▶ 报告 / 规则 / 控制台

三个组件

  • 模板层。 template.json 声明输入、载荷、步骤、computed 状态、检查项、发现与产物。
  • 探针端。 静态 Rust 二进制使用 HMAC 认证的帧协议,执行 http、tcp、exec、fs、k8s、socks 与 spawn。
  • 控制端。 Python 负责授权、范围、级别、备份与审计校验,并把探针证据汇总成发现。

探针树

每颗探针都有 probe_id 与 parent_id。子探针继承父探针的只读状态、命令白名单与预算,且只能更严格。清理先子后父,避免留下未清理、仍持有 token 的子探针进程。

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

03

静态 Rust 探针

一个二进制、286 个模板

探针是 linux/amd64 与 linux/arm64 各一个静态 musl 二进制。模板是 JSON 数据。

286模板
2musl 架构
12探针操作

探针操作

操作做什么
collect采集主机、Pod、进程、网络与 Kubernetes 上下文。
exec在预算内执行白名单命令。
audit-exec执行命令并留下审计轨迹与时序记录。
read-file读取文件,带大小上限与 SHA-256 哈希。
list-files列出目录树与元数据。
upload写入前先过授权与写权限校验。
download分块流式回传文件。
spawn启动子探针,给它独立 token 与更严格的预算。
dial向范围内目标建立 TCP 或 UDP 连接。
socks暴露回环 SOCKS5 监听,兼容本地工具。
beacon经帧通道发送心跳与状态更新。
cleanup移除产物并确认探针树已清空。

每个操作都受预算与范围约束,并写入证据库;探针树按先子后父的顺序清理。

每个模块都是模板;注册表不接受带 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

04

代理协议支持

回连传输与 ML 服务代理

回连通道与 ML 代理属于两层:通道在控制端与探针之间承载帧,代理在探针与范围内目标之间承载服务协议。

层支持
回连通道TLS · WSS · HTTPS · QUIC · WebTransport(experimental)· MASQUE
ML 服务代理gRPC · Redis · TCPStore · NCCL · UCX · ZMTP(experimental)
SOCKS5仅回环兼容(127.0.0.1)

认证与加密

  • 每个帧都带 token 与 HMAC;token 或 MAC 不匹配就断开连接。
  • TLS、WSS、HTTPS、QUIC 与 WebTransport 用 SHA-256 pin 校验控制端证书,可选 CA 文件。
  • gRPC、Redis、TCPStore、NCCL 与 UCX 代理走 TLS;ZMTP 启用时使用 CURVE 与 Z85 密钥。
  • SOCKS5 只留在回环,是本地工具的兼容路径,不是全网代理。

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

05

漏洞研究

模板目录背后的漏洞研究

模板目录对应 184 条漏洞记录,每条写清组件、受影响版本、根因、影响与检测方式;其中 68 条带可运行 PoC。研究集共 169 条:47 条经动态复现并确认未公开,46 条可以进入协调披露,去重后得到 39 个独立利用原语。103 条受影响版本记录与 121 条检测规则支撑 29 条攻击链。

漏洞研究

库存数量
漏洞条目184
可运行 PoC68
研究记录169
确认未公开47
可进入披露46
独立原语39
版本矩阵条目103
载荷包47
检测规则121
攻击链29

公开台账列出组件、类别、受影响版本与披露状态;利用细节不公开。

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

06

从立足到报告

九个阶段,每步都留下下一步能校验的东西

阶段顺序很重要。任何阶段都可以拒绝,拒绝之后这次运行就停在这里。

  • 1立足session open 记录入口方式、目标、命名空间、Pod 与凭据指纹。
    → 会话记录
  • 2Rust 探针probe deploy 投放静态二进制并登记身份与哈希。
    → 探针身份
  • 3通道channel listen 接收探针回连;有本地命令通道时也可以用 stdio 通道。
    → 通道状态
  • 4检测session run、run 与 agent run 按十层执行模板。
    → 发现、证据
  • 5逃逸execute 解析链;写步骤先过备份校验。
    → 逃逸路径
  • 6横向通道转发、子探针与 agent 图边测绘内部可达性。
    → 可达图
  • 7多探针probe spawn 扩展探针树;子探针继承更严格的预算与白名单。
    → 探针树
  • 8跨集群agent relay 连接集群;agent coverage 写出完成证明。
    → 中继状态、覆盖证明
  • 9报告 / 规则 / 控制台report、export、rules generate 与 ui 完成报告、规则与控制台。
    → 报告、规则包、控制台

写操作的五道校验

校验拒绝条件信号
授权没记录、窗口过期、资产越界。exit 91
级别模板级别高于记录。exit 91
备份写步骤没有备份目标。exit 91
范围目标或命名空间不在会话内。拒绝
回滚有步骤无法恢复。exit 3

逐阶段参考

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

07

探针优先接入

安装、接入、投放、运行、报告

从控制台开始,接入你已有的探针或立足点。默认立足点是一个普通的最低权限 Pod:非 root、没有 hostPath 或 privileged、没有 kubeconfig,只有出站 TCP。

  1. python -m pip install -e .安装控制端,需要 Python 3.10 – 3.13。
  2. python -m inkblade up启动控制台,在浏览器里登录并签授权记录。
  3. python -m inkblade probe list接入已有探针;控制端监听,探针主动回连。
  4. python -m inkblade session open --mode foothold ...用已有 shell、SA token 或 RCE 完成首次投放。
  5. python -m inkblade agent run --probe <probe-id> ...通过探针通道执行检测,再生成报告。
终端 · 探针优先
$ 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

子探针由父探针用 probe upload + probe spawn 投放,回连方式相同。目标环境里有本地命令通道时,可以用 stdio 通道(channel start)。kubeconfig 是可选的,只用于首次批量 bootstrap。文档站点在本地:python -m inkblade docs 在 127.0.0.1:8766 提供 docs/ 并打开浏览器,--no-browser 则不打开。

快速开始 · 安装 · 使用

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

08

命令表

实际输入的命令面

不访问集群或 LLM 的命令可以离线运行;`agent` 规划需要配置 LLM 端点。

任务命令
接入向导inkblade up
授权记录inkblade quickstart · inkblade roe
会话inkblade session open|status|close|run
探针inkblade probe deploy|list|collect|exec|read-file|list-files|upload|download|spawn|cleanup
通道inkblade channel listen|start|status|stop
单模板inkblade session run --id --module · inkblade run --module
链inkblade execute --chain [--dry-run]
Agentinkblade agent run|status|trace|resume|replay|stop
跨集群inkblade agent relay add|list|status · inkblade agent coverage status|proof
报告inkblade report --run --lang bi
导出inkblade export --run --format sarif|ocsf|vex
规则inkblade rules generate · inkblade rules validate
控制台inkblade ui
文档站点inkblade docs --port 8766 --bind 127.0.0.1
模板inkblade template list|get|plan|validate

完整使用手册

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

09

Wheel、容器、Helm

一个控制端,三种交付方式

控制端是一个无第三方依赖的 Python 包;探针是独立的静态二进制。

wheel
python -m pip wheel . --no-deps -w dist/
python -m pip install --no-index --find-links dist/ inkblade
容器
docker build -t inkblade:0.2.0 .
docker run --rm -v inkblade-data:/data inkblade:0.2.0 up
helm · 默认只读
helm install inkblade deploy/helm/inkblade   --namespace inkblade --create-namespace

uid 10001、根文件系统只读、证据写入 PVC。默认只给读动词;写操作需要 readOnly=false、rbac.allowWrite=true 与签署记录。卸载时保留 PVC。

安装指南 · 探针投放

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.

10

安全与授权

授权是使用前提,不是功能开关

没有签署记录,InkBlade 拒绝运行。每个阶段都有自己的校验。

  1. RoE 记录目标、范围、级别、时间窗与应急联系人;记录带哈希,随每次运行进入证据。
  2. 默认只读采集、探测、读文件与只读模板不需要额外开关。
  3. 五道写权限校验会话级别、--allow-write、meta.writes、backup-write 模式、备份回执。
  4. 备份与回滚写前做快照,写操作与快照都记录,恢复按步骤进行。
  5. 审计与证据每次探针动作与文件访问进入证据库,带 SHA-256 manifest。
  6. 急停inkblade abort 停止整个工作区;agent stop 停止单次运行。
控制保证什么
授权文件每次运行都带签署授权文件的哈希,并写入证据。
范围与级别越界或超出级别的动作会在执行前被拒绝。
备份回执没有可恢复快照就没有写操作。
证据 manifest每条发现都能落到 task、step、artifact、probe 或 manifest 哈希。

仅限授权使用。没有书面授权就不做。对不归你所有的系统动手,在多数司法辖区属于违法。没有签署记录,软件会拒绝。

安全问题走 SECURITY.md 的私密渠道;公开 issue 不要贴利用细节。

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

11

常见问题

接入、探针、检测、授权、交付

探针怎么进 Pod?

从你已有的立足点投放。默认是授权 RCE:二进制 base64 分块送进 Pod,落到 memfd;没有 memfd 就落到 /dev/shm 或 /tmp,chmod 700 后启动。另外三条路是 ServiceAccount token、共享卷与 EphemeralContainer 清单:probe deploy --via sa-token 生成临时 kubeconfig 后 kubectl cp + exec;共享卷把二进制放进目标容器挂载的卷;probe deploy --via manifest 生成 Pod、Job 或 EphemeralContainer 清单。kubectl 只在批量 bootstrap 时需要。探针启动后执行 inkblade-probe reverse --host <controller> --port <port> 回连控制端,之后的命令都走这条通道。

探针是不是后门?

不是。它不持久化、不改启动项、不改镜像、不回连固定 C2。它只在授权会话内运行,执行已注册模板,默认只读,写操作过校验,退出时清理。

写操作怎么保证安全?

五道校验:授权覆盖目标、级别与时间窗;--allow-write;meta.writes 与写步骤;backup-write 模式;备份回执。写后回读哈希,失败回滚。

能离线吗?

手动执行、模板、探针和报告可以离线;`agent run` 的 LLM 规划需要配置 LLM 端点(本地模型或内网 API),没有配置时就用手动或规则模式。

能商用或 fork 吗?

Apache-2.0 允许商用与 fork。保留 LICENSE 与 NOTICE,不要用 InkBlade 商标命名 fork。

更多: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

12

许可

Apache-2.0、仓库政策

Apache-2.0。允许商用、fork 与嵌入到其他产品中;保留 LICENSE 与 NOTICE。

项目说明
许可证Apache-2.0。保留 LICENSE 与 NOTICE。
商标fork 不要使用 InkBlade 名称。
政策SECURITY.md、CONTRIBUTING.md、CODE_OF_CONDUCT.md。

文档索引:DOC-INDEX.md