Fortress Agent Suite

Security checks across static analysis, malware telemetry, and agentic risk

Overview

This is a disclosed high-privilege maintenance suite, but it can keep root-level background jobs running, change OpenClaw/workspace state, and install other skills without per-action review.

Install only on a dedicated environment you fully control. Before enabling it, review or disable self_improver.py, remove any self-recreating cron behavior you do not want, back up your OpenClaw config, verify that secrets are not copied into backups, and run the scripts with the least privilege possible.

Static analysis

No static analysis findings were reported for this release.

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Risk analysis

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

#
ASI10: Rogue Agents
High
What this means

Parts of the suite may continue running in the background and changing system state after initial setup unless the user fully removes the cron/watchdog behavior.

Why it was flagged

A watchdog script can re-add maintenance cron jobs if they are missing, which creates persistent autonomous behavior under the root OpenClaw environment.

Skill content
if r not in cron: os.system(f"crontab -l | ... echo '*/30 * * * * /root/.openclaw/.venv/bin/python /root/.openclaw/scripts/self-healing/{r}' ... | crontab -")
Recommendation

Require explicit opt-in for each cron job, provide a clear uninstall/disable path, and avoid self-recreating scheduled tasks without user confirmation.

#
ASI02: Tool Misuse and Exploitation
High
What this means

Unwanted, broken, or sensitive workspace changes could be committed automatically and then treated as the preserved state.

Why it was flagged

The watchdog auto-adds and commits all workspace changes with no file exclusions or per-change approval.

Skill content
os.system(f"git -C {WORKSPACE} add . && git -C {WORKSPACE} commit -m 'Auto-backup: ...'")
Recommendation

Limit Git operations to specific safe paths, add exclusions for secrets, and require review before committing or restoring production workspace changes.

#
ASI04: Agentic Supply Chain Vulnerabilities
High
What this means

A production agent could gain new third-party skills or behavior changes without the user reviewing the installed package contents.

Why it was flagged

The self-improver can fetch candidate skills from a remote registry, check only readme/description text, and install them automatically; the default candidate is persona-oriented rather than maintenance-oriented.

Skill content
DEFAULT_CANDIDATES = [{"slug": "soul-framework", "reason": "strengthen persona and identity coherence"}] ... safe, note = scan_content(skill.get('readme', skill.get('description', ''))) ... success, _ = install_skill(slug)
Recommendation

Disable automatic skill installation by default, require human review of full package contents and provenance, and keep candidate lists explicit and signed or otherwise trusted.

#
ASI05: Unexpected Code Execution
Medium
What this means

If the candidates file is modified or poisoned, running this script with the suite's intended privileges could execute unintended shell commands.

Why it was flagged

The skill slug is loaded from a candidates file and interpolated into a shell command without validation or argument escaping.

Skill content
slug = entry.get('slug') ... result = os.popen(f"openclaw skills install {slug} 2>&1").read()
Recommendation

Validate slugs against a strict allowlist pattern and use subprocess with an argument list instead of shell interpolation.

#
ASI03: Identity and Privilege Abuse
Medium
What this means

Provider credentials and root OpenClaw configuration may be changed or duplicated in ways the registry metadata does not make clear.

Why it was flagged

The model manager reads a local OpenRouter token and writes it into the root OpenClaw config, but the registry metadata declares no credentials or required config paths.

Skill content
token_file = SECRET_DIR / 'openrouter.token' ... key = token_file.read_text().strip() ... "apiKey": api_key ... CONFIG.write_text(...)
Recommendation

Declare credential/config requirements, document exactly where secrets are read and stored, and avoid copying provider API keys into broad backup or workspace locations.

#
ASI06: Memory and Context Poisoning
Low
What this means

Future agent behavior could be influenced by persistent notes written by this automation.

Why it was flagged

The self-improver writes installation events and candidate-provided reasons into a persistent MEMORY.md file that may be reused by future agent sessions.

Skill content
MEMORY_FILE = WORKSPACE / 'MEMORY.md' ... append_memory(f"Installed skill {slug} because {reason} (stars={stars})")
Recommendation

Keep self-improver logs separate from agent memory, sanitize any candidate-provided text, and mark such entries as non-authoritative audit records.