Back to skill

Security audit

compliance-aiops

Security checks for vulnerabilities and agentic risk

Overview

This appears to be a legitimate offline compliance-evidence skill, with local state and optional scheduling/signing that are mostly disclosed but documented inconsistently.

Before installing, make sure the account running it is allowed to read the local AIops audit databases it will discover. Expect local state under ~/.compliance-aiops/, including config, an audit log, bundles, and possibly an encrypted signing-key store. Use signing and cron scheduling only with a least-privilege account, protect COMPLIANCE_AIOPS_MASTER_PASSWORD, and review any generated cron line before installing it.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

YARA rule 'backdoor_persistence': Backdoor persistence with malicious payloads (shell commands, SSH key injection, hidden root users) [malware]

High
Category
YARA Match
Confidence
75% confidence
Finding

YARA rule matched a known malware signature (reverse shell, backdoor, ransomware, C2 framework, or info stealer).

Content

Scanner excerpt · SKILL.md (reported line 193)May include surrounding context.

md
P: `bundle_schedule_hint`) → returns a `cronLine` plus the exact
   non-interactive command. **It writes nothing.**
3. Paste the `cronLine` into `crontab -e`, e.g.
   `0 2 * * 1 compliance-aiops bundle generate soc2 --period 7d --sign`
4. Export `COMPLIANCE_AIOPS_MASTER_PASSWORD` in the cron environment so the
   signing key unlocks non-interactively — never inline the real password in the
   crontab
5. After the first scheduled run, `compliance-aiops bundle list` and
   `bundle verify` the newest bundle to confirm the unattended path really works
6. **Failure branch**: if the cron run produces no bundle, the usual causes are
   an unset master password (signing cannot unlock) or `COMPLIANCE_AIOPS_HOME`
   not being set in cron's environment, so sources resolve elsewhere. Verify by
   running the emitted command by hand with a clean environment before trusting
   the schedule.

## Governance & Safety

The skill reads audit trails and writes evidence bundles and records what it
does

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The documentation makes a materially inaccurate safety claim by stating that only evidence bundles are written, while elsewhere it documents additional writes to a local audit database and an encrypted secrets file. This can mislead users, reviewers, or policy engines that rely on the stated write scope when deciding whether the skill is safe to run in restricted environments.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file contains contradictory statements about write behavior, first claiming only bundles are written and later acknowledging other persisted artifacts. Such contradictions weaken trust and can cause operators to underestimate persistence, leading to improper approvals or deployment into environments where additional state should be forbidden.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · SKILL.md (reported line 128)May include surrounding context.

md
fix discovery first
3. `compliance-aiops report coverage soc2` → confirm CC8.1 is actually covered by
   the evidence you have, before generating anything
4. `compliance-aiops report approvals` → the high-risk write operations with
   their named approver and rationale — this is the population CC8.1 is asking
   about
5. `compliance-aiops bundle generate soc2 --since 2026-07-01 --until 2026-10-01 --sign`

Session Persistence

Medium
Category
Rogue Agent
Confidence
87% confidence
Finding

The skill explicitly instructs users to install a cron job, creating ongoing scheduled execution outside the immediate session. While the described purpose is legitimate periodic bundle generation, any mechanism that establishes unattended persistence increases attack surface and can be abused if the command, environment, or referenced binaries are later altered.

Content

Scanner excerpt · SKILL.md (reported line 189)May include surrounding context.

md
2. `compliance-aiops bundle schedule soc2 --cron "0 2 * * 1" --period 7d --sign`
   (MCP: `bundle_schedule_hint`) → returns a `cronLine` plus the exact
   non-interactive command. **It writes nothing.**
3. Paste the `cronLine` into `crontab -e`, e.g.
   `0 2 * * 1 compliance-aiops bundle generate soc2 --period 7d --sign`
4. Export `COMPLIANCE_AIOPS_MASTER_PASSWORD` in the cron environment so the
   signing key unlocks non-interactively — never inline the real password in the

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
92% confidence
Finding

The guardrail explicitly states the tool does not enforce approval gating for producing or signing evidence bundles, relying instead on OS permissions and the surrounding agent prompt. In a compliance-evidence context, lack of in-tool authorization creates a real risk that an agent or user can generate or seal artifacts without an explicit approval step, which weakens separation of duties and can enable unauthorized evidence handling.

Content

Scanner excerpt · references/agent-guardrails.md (reported line 18)May include surrounding context.

md
## Authorization is not this tool's job — decide it where it belongs

Whether a bundle should be produced or signed is your decision, or the account's.
The tool does not gate it — there is no read-only switch and no approval prompt
to configure. The two right places to control it:

- **The account it runs as.** The tool only ever writes under

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · references/agent-guardrails.md (reported line 95)May include surrounding context.

Recommended setup for a local model

Keep the agent query-only until you trust the setup — the tool already opens every source trail read-only, and the only thing it can write is a bundle under ~/.compliance-aiops/:

bash

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

Line L67 states that OSCAL export is out of scope and only a roadmap item, but earlier lines L41 and L49 explicitly document oscal_assessment_results and export_bundle with fmt="oscal". This is a direct contradiction in the file's own documentation about what the skill does.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill metadata promises a fully offline, deterministic, read-only evidence converter with no platform credentials, but the CLI reference adds secret-management capabilities including storage, migration, and password rotation. Even if limited to signing keys, this materially expands the trust boundary and attack surface because the tool now handles sensitive key material and performs local state-changing operations contrary to the stated read-only model.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The manifest describes this skill as mapping activity to HIPAA §164.312, PCI-DSS v4.0, SOC 2 TSC, or GDPR controls. The CLI documentation additionally advertises iso27001 and djcp_l3 as supported frameworks, which is a material scope expansion beyond the declared purpose rather than an implementation detail.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The note claims 'Bundles are the only files written,' but earlier commands document writing encrypted secrets to ~/.compliance-aiops/secrets.enc, removing entries, migrating a legacy plaintext key, and rotating the encryption password. This is an active contradiction within the documentation about whether the skill writes files beyond bundles.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
80% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · references/setup-guide.md (reported line 61)May include surrounding context.

md
- The signing key is **never** written to disk in plaintext. It lives only in
  `~/.compliance-aiops/secrets.enc`, encrypted with Fernet, the key derived from
  your master password via scrypt. Only a per-store random salt and the
  ciphertext are on disk (chmod 600); the master password itself is never stored.
- A legacy plaintext key is honoured as a fallback with a deprecation warning —
  migrate with `compliance-aiops secret migrate`.
- The key is held only in memory during a session and is never logged or echoed.

Static analysis

No suspicious patterns detected.