SafetyCard Request a review

CyberStrikeAI

AI-native security testing platform in Go integrating 100+ tools with multi-agent orchestration and MCP

github.com/AIPentest/CyberStrikeAI · 2026-10-03 · 470eb5e

Defense-in-depth score

2.6 / 10

This is a high-privilege platform by design: its shell and scanner tools run as the server's OS user with the full environment, and the human-approval gate is off by default. Authentication is real (generated admin password, per-user RBAC), but nothing contains the agent once a session is running, and untrusted target content flows straight into a model that can run commands. Operators should treat every deployment as a privileged system, enable approval, and isolate the host.

Safest setup

CyberStrikeAI ships with real sign-in (a generated admin password and per-user roles), a per-call approval gate and a record of every tool call. As shipped, approval is off and every tool runs as the server's own OS user with no sandbox, so the safest setup turns approval on, trims the tool set and builds the containment around the host yourself.

SetupHowWhat it gives you
Scoped, low-limit keysGive the server only model and search keys made for it, each with a spending limit set at the providerWhatever the shell or a tool reads, the keys it finds reach only the spend and services you chose C8
A dedicated host and userRun the server as its own low-privilege OS user on a VM or container that holds only this engagement's files, with the web UI reachable only from your own networkThe agent's authority ends at that user and machine, not your workstation or other systems C1
Per-call human approvalSet default_mode: approval and keep default_reviewer: human in the hitl block of config.yamlA person sees the tool name and exact arguments before each non-allowlisted call runs C2
A read-only approval allowlistKeep only read-only lookups in tool_whitelistProject-fact writes and C2 helper tools also come to a person for approval C2
Only the tools neededList just the engagement's tools under tools in the role file you useThe model sees a smaller tool set, with shell and exploitation tools only where you chose them C3
C2 off when unusedSet enabled: false in the c2: block when the engagement has no C2 workNo C2 listener starts and no C2 tools are offered to the model C3
Tight run limitsLower max_iterations and tool_timeout_minutes in the agent block to fit the taskA runaway agent or a hung tool stops in minutes rather than hours C10
Records kept off the hostCopy the tool-call and audit records under data/ regularly to storage the server's OS user can't writeA record of every tool call and approval that the agent's own shell can't alter C9

Approving with confidence

  • Read each prompt and approve calls one at a time; review_edit mode lets you correct the arguments before a call runs.
  • Keep the reviewer human: the optional audit-agent reviewer is told to approve when unsure.
  • An unanswered prompt is rejected after default_timeout_seconds, so a missed prompt stops the call.

Handling data

  • Tool arguments and results are stored unredacted for 90 days by default; store data/ like the target data it holds.
  • config.yaml holds keys in plain text with owner-only permissions; keep it that way and out of shared directories.

Key gaps (3)

  1. Tools run as same-user host subprocesses with the full inherited environment and no sandbox of any kind. C4 · Code-execution isolation
  2. Worst case after a hijack is unattended data leakage plus irreversible actions, because the approval gate defaults to off (C5-WORSTCASE). C5 · Untrusted input blast radius
  3. If the authorization layer fails, the agent's authority is the server user's full host authority. C1 · Identity & least privilege

Criteria

C1 Identity & least privilege

0.20 / 1.00

The platform has real multi-user authentication: a generated 24-character admin password on first start, per-user roles and permissions, resource-level scopes, a login rate limit, and a principal that is carried into the MCP tool-call authorizer. That governs which human may use the platform. The agent's tools, however, run as the server's OS user with the full inherited environment, so the authority the agent holds is ambient and broad. If the authorization layer fails, the process can reach everything that OS user can.

C2 Approval gates

0.38 / 1.00

A per-call human approval gate exists (the HITL feature): it shows the tool name and exact arguments, supports reject, edit-before-run, and auto-rejects on timeout. It is off by default, so a fresh install runs every tool, including the shell and C2 task tools, with no approval. The shipped allowlist of approval-exempt tools also contains project-fact writes and some C2 helper tools. A wrongly approved or unapproved call can act irreversibly on real targets with no rollback.

C3 Tool & action scoping

0.28 / 1.00

Tool arguments are mostly passed straight through. The shell tool takes an arbitrary command string, and the only central validation is a configurable regex deny rule (government domains by default) applied to every tool call, which its own docs say is not an exhaustive authorization check. Engagement scope is given to the model as prompt text rather than enforced in code. About 78 tools, including shell, scanners, and C2 tools, are enabled in the default role.

C4 Code-execution isolation

0.00 / 1.00

Commands and scanner tools run as ordinary subprocesses of the server, under the server's OS user, with the full inherited environment. A process-guard layer adds cgroup or process-group containment, a process count limit, a memory ceiling, and kill-on-cancel, but that is lifecycle and resource control, not an isolation boundary, and there is no container, filesystem, user, or network separation. The shell tool accepts arbitrary command strings, so anything that reaches it is host-level execution.

C5 Untrusted input blast radius

0.00 / 1.00

Output from scanned targets, web pages, files, and external tools enters the model's context with the same standing as the user's instructions, and nothing in code tracks provenance or restricts tools after untrusted content is read. Combined with a shell, network tools, and C2 tools running ungated by default, a hijacked agent can both exfiltrate data and take irreversible actions without a human. This platform's core job is to read hostile content, so the exposure is built in.

C6 Memory, context & configuration integrity

0.30 / 1.00

The model can write persistent project facts and security-finding records, which are re-injected into later sessions as working context, and the shipped approval allowlist exempts fact writes from review. Project data is isolated per user through resource-assignment queries, but facts are not validated or expired, and automatic storage cleanup is off by default. Configuration and prompt files load only from the platform's own directories, not from a target workspace.

C7 Third-party extensions

0.23 / 1.00

Third-party extensions are opt-in: the external MCP server list ships empty. An authenticated operator can add a stdio server by naming a command and arguments, and the platform launches it as a same-user process with no version pin, hash check, or re-approval when it changes. Skills and tool definitions are local files loaded from the platform directories. The gap is the absence of any verification, not automatic installation.

C8 Secrets & sensitive-data protection

0.30 / 1.00

Secrets live in a plaintext config file created with owner-only permissions, and the settings API does not fully protect secrets. Platform audit records redact common secret-named fields, but full tool arguments and results are stored unredacted in the execution table and tool subprocesses inherit the whole environment. Telemetry is local-only by default. Long-lived provider keys are reachable by anything the shell can read.

C9 Audit & traceability

0.50 / 1.00

Every tool call routed through the MCP server is saved with arguments, result, status, timestamps, owning user and conversation. Approval requests and decisions are stored with reviewer type and whether the system or a human decided, and platform actions (logins, config changes) have a separate audit log with actor and IP. Records sit in the same local SQLite database the server's shell could modify, and are not signed or exported by default.

C10 Limits & kill switch

0.40 / 1.00

Per-tool timeouts, a shell no-output timeout, concurrency caps and a circuit breaker for external servers, and a process-guard memory and process ceiling are enforced in code, and cancel kills the whole process group. There is no cost or wall-clock budget for a run, and the shipped example config sets the iteration limit to 12000 and the per-tool timeout to 60 minutes, so a runaway can continue for a very long time. Stopping works on in-flight commands, but batch task schedules can restart work.