SafetyCard Request a review

Argus

Open-source AI-native agentic SOC platform (alerts, ticketing, CMDB, workflow automation, AI assistant)

github.com/Sec-Link/Argus-Agentic-SOC-Platform · 2026-10-03 · dd803f0

Defense-in-depth score

4.0 / 10

The AI assistant itself is tightly bounded: its default tool set is four read-only knowledge/skill tools plus four read-only built-in ticket and asset lookups, so a manipulated model cannot change state or reach the network by design. The larger risks sit around it. The SOAR workflow engine runs containment, email and generic HTTP actions with no per-run approval step, shared skill instructions that steer the assistant can be edited by any non-readonly user, and one assistant endpoint forwards the caller's platform token to caller-chosen MCP endpoints. Access control is flat (any authenticated user), and self-registration is auto-approved with read access by default.

Safest setup

Argus keeps its AI assistant to read-only lookups, encrypts and redacts workflow credentials, and limits the HTTP workflow action to an admin allowlist. Access is otherwise flat and published workflows run every step without a per-run approval, so the safest setup narrows who can write, what workflows can reach and where the backend can connect.

SetupHowWhat it gives you
Narrowly scoped device accountsGive the firewall, directory and email accounts that workflow actions use only the rights those actions needThe systems themselves refuse anything beyond those rights, whatever a workflow run asks for C8
Admin-approved registrationTurn off auto_approve_enabled in the system settingsEvery new account waits for an administrator before it can read SOC data C1
Read-only accounts by defaultKeep registered users on the read-only role (is_readonly) and grant write access only to people who build workflows and skillsWorkflows, skills and MCP server records can be changed only by the few accounts you trust with them C1
A short HTTP allowlistList in workflow_http_allowlist only the hosts your workflows callThe generic HTTP action reaches only those hosts C3
Request rate limitsKeep DRF_THROTTLE_USER_RATE and TICKET_PLAYBOOK_INVOKE_RATE at their defaults or lowerEach account can start only a bounded number of requests and ticket playbook runs per minute C10
A restricted backend networkRun the backend and workflow worker in a network that reaches only the model provider and the systems your workflows act onPlatform tokens, ticket text and workflow requests travel only to hosts you chose C7
Retained, exported audit recordsSet AUDIT_LOG_RETENTION_DAYS to your retention policy and copy audit and tool-call records to storage the platform can't modifyA record of logins, tool calls and workflow runs that outlives the retention job and the service itself C9

Approving with confidence

  • Read each workflow before publishing it; publishing once authorises every later run, including containment, email and HTTP steps.
  • Read changes to shared skills the same way, since skill text reaches every user's assistant.

Handling data

  • Tool-call records keep raw arguments and workflow runs keep step inputs and outputs; store database backups like the SOC data they cover.

Key gaps (2)

  1. The ticket mention endpoint attaches the caller's platform token to requests sent to MCP endpoints named by the caller. C1 · Identity & least privilege
  2. The generic HTTP and containment workflow actions run without any approval gate in the default configuration. C2 · Approval gates

Criteria

C1 Identity & least privilege

0.25 / 1.00

Everything runs under the platform's own user model: per-user API tokens, a built-in read-only role that the middleware uses to block writes, and a separately restricted credential for the workflow worker that can only reach three named routes. Authorization is otherwise flat: the default permission class is 'any authenticated user', so any non-readonly account can edit and run workflows, change skills and register MCP servers, and any account can read all tickets. By default self-registration is auto-approved with read access. One ticket-assistant endpoint forwards the caller's platform token to MCP endpoints the caller names, which is a token-passthrough pattern.

C2 Approval gates

0.13 / 1.00

The assistant has no consequential tools, so it needs no approval step. The platform's consequential actions live in the workflow engine, and there is no approval node, confirmation step or per-run human gate anywhere in it. A human publishes a workflow once, after which runs triggered by tickets, webhooks, schedules or the API execute every step, including containment, email and generic HTTP calls, unattended. The generic HTTP action is also ungated.

C3 Tool & action scoping

0.38 / 1.00

The assistant's tools are narrow and read-only, with typed schemas and clamped result limits, and database access goes through the ORM. Validation is uneven elsewhere. The generic HTTP workflow action has a strong target policy (fixed host, admin allowlist, resolved-address checks, no redirects, capped response), but the containment, lookup and webhook actions accept any URL, the skill-reading tool's argument handling is not strict, and a registry-proxy endpoint fetches caller-supplied URLs. All workflow actions are registered by default, including write and network ones.

C4 Code-execution isolation

N/A · full credit 1.00 / 1.00

No model-reachable path interprets text as code. The workflow engine substitutes variables with a regular expression, conditions use a custom evaluator, database access uses the ORM, and the model has no shell, script or package-install tool. The only process-spawning and exec hits are a manual sample script and a docstring.

C5 Untrusted input blast radius

0.50 / 1.00

Untrusted content reaches the model in several places: ticket alert JSON, tool results, knowledge-base documents and skill text. Nothing distinguishes it from instructions, but the default assistant paths have only read-only tools, so a manipulated model can read tickets and assets and shape its answer, not change state or call out. One ticket endpoint lets the caller list MCP endpoints whose tools the model may select without approval. Separately, alert fields flow into workflow variables that choose containment targets, which is not model-mediated.

C6 Memory, context & configuration integrity

0.13 / 1.00

Persistent instruction text steers the assistant. Skill documents on disk are loaded silently into the system prompt for every user, and any non-readonly authenticated user can create or overwrite them through the API, with no validation, approval, versioning or audit record. Skill-name handling is not strict. Saved chat history is per ticket and is only replayed to the model if the client sends it back. Configuration files come from the deployment, not from a workspace the assistant operates on.

C7 Third-party extensions

0.30 / 1.00

The platform loads no third-party code into its own process. MCP is used as a client to remote JSON-RPC endpoints that a user lists or registers; the endpoints, their tool lists and their tokens are not pinned or verified, tool lists are cached for three minutes, and there is no re-approval when definitions change. In the default chat paths the internal endpoint is forced, so registered servers are ignored, but the mention endpoint accepts caller-supplied endpoints and sends the caller's platform token to them.

C8 Secrets & sensitive-data protection

0.45 / 1.00

Workflow credentials are handled well: sensitive fields are write-only, encrypted at rest with a rotatable key ring, bound to their target, decrypted only in the worker, and redacted from results and errors. Startup refuses a placeholder secret key or a missing workflow key outside debug mode. Gaps remain: MCP server tokens are stored in plaintext, request bodies can carry a model API key, and the handling of some stored and deployment credentials is not locked down. No telemetry SDK is present.

C9 Audit & traceability

0.45 / 1.00

Assistant tool calls are recorded in a database table with tool name, arguments, status, endpoint and timing, and the ticket chat stores the trace. Workflow runs record step inputs, outputs and the user who started them. The record lacks the requesting user on tool calls, the general audit table only logs authentication events and read-only users' activity, and changes to skills, MCP servers and workflows are not audited. Some audit writes are wrapped so failures are swallowed.

C10 Limits & kill switch

0.45 / 1.00

The chat loop is capped at six iterations by default and each model call and MCP call has a timeout, but any authenticated caller can raise the iteration count and timeouts per request with no ceiling, and there are no token, cost or total wall-clock limits. The MCP streaming endpoint holds a worker thread open indefinitely. Workflows have a graph-loop guard, a bounded HTTP timeout and response size, and optional per-step timeouts, with cancel forwarded to the workflow engine but errors swallowed; there are no concurrency or rate limits beyond the generic request throttle.