Back to skill

Security audit

Invoke ARTCLAW platform's AI content creation capabilities via REST API. Supports AI image generation, video generation, workflow execution, multimodal analysis, and more.

Security checks for vulnerabilities and agentic risk

Overview

This ARTCLAW client is mostly purpose-aligned, but it needs Review because it can replace its own installed files, delegate shell commands built from user inputs, and handle credentials/media with weak scoping.

Install only if you trust the publisher and are comfortable giving the skill ARTCLAW API access plus optional chat-delivery authority. Avoid using self-update unless the update source is independently verified, prefer environment-provided API keys over saved config when possible, and do not pass untrusted prompts, URLs, or file paths into spawn/delivery mode.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (5)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/artclaw.py:53
Finding

Unsigned Mutable Self-Update Replaces Executable Skill Files

Content
View full analysis
dict: """Extract a GitHub main.zip archive over repo_root.""" import io import zipfile import shutil import tempfile with zipfile.ZipFile(io.BytesIO(archive_zip_bytes)) as zf: names = zf.namelist() prefix = names[0] if names[0].endswith("/") else names[0].split("/")[0] + "/" incoming: Dict[str, bytes] = {} with zipfile.ZipFile(io.BytesIO(archive_zip_bytes)) as zf: for info in zf.infolist(): if info.is_dir(): continue rel = info.filename if not rel.startswith(prefix): continue rel_path = rel[len(prefix):] if not rel_path: continue incoming[rel_path] = zf.read(info.filename) added, modified, unchanged = [], [], [] for rel_path, new_bytes in sorted(incoming.items()): dest = repo_root / rel_path if not dest.exists(): added.append(rel_path) else: try: old_bytes = dest.read_bytes() except IOError: old_bytes = b"" if old_bytes != new_bytes: modified.append(rel_path) else: unchanged.append(rel_path) if dry_run: return ...[truncated 3749 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/artclaw.py:786
Finding

Shell Command Injection in Delegated Spawn Tasks

Content
View full analysis
dict: if script_path is None: script_path = str(Path(__file__).resolve()) cmd_parts = ["python3", script_path, subcommand] for key, value in args_dict.items(): if value is None or value is False: continue flag = f"--{key.replace('_', '-')}" if isinstance(value, bool) and value: cmd_parts.append(flag) elif isinstance(value, list): cmd_parts.append(flag) cmd_parts.extend(str(v) for v in value) else: cmd_parts.extend([ flag, json.dumps(str(value), ensure_ascii=False) if isinstance(value, str) and " " in value else str(value), ]) cmd_str = " ".join(cmd_parts) task_text = ( "You are an ArtClaw creative worker. Execute the following command " "and deliver the result to the user.\n\n" f"Command:\n```\n{cmd_str}\n```\n\n" "This command calls the ArtClaw API and waits for completion. " "Wait for the command to complete — do NOT background it.\n\n" "When the command finishes:\n" "- If the JSON output contains \"status\": \"success\":\n" " Extract the result URL from the JSON output.\n" ) return { "sessions_spawn_args": { "task": task_text, "label": f"artclaw: {label_text}", "runTimeoutSeconds": SPAWN_TIMEOUT_SECONDS, }, "command": cmd_str, } ``` ### Technical Analysis The function converts arguments into one shell command ...[truncated 1586 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/artclaw.py:206
Finding

Arbitrary API Base URL Can Redirect Credentials and Private Content

Content
View full analysis
dict: """ Priority: env var ARTCLAW_API_KEY > config.json > defaults. """ api_key = os.environ.get("ARTCLAW_API_KEY", "") base_url = os.environ.get("ARTCLAW_BASE_URL", "") file_cfg = {} if not api_key: file_cfg = _load_raw_config() api_key = file_cfg.get("apiKey", "") if not base_url: base_url = file_cfg.get("baseUrl", "") if file_cfg else "" return { "apiKey": api_key, "baseUrl": base_url or DEFAULT_BASE_URL, } ``` ```python def _request_with_retry( method: str, url: str, *, api_key: str = "", json_body: Optional[dict] = None, params: Optional[dict] = None, max_retries: int = MAX_RETRIES, connect_timeout: int = CONNECT_TIMEOUT, read_timeout: int = READ_TIMEOUT, idempotency_key: Optional[str] = None, dry_run: bool = False, ) -> dict: headers: Dict[str, str] = {"Accept": "application/json"} if api_key: headers["X-API-KEY"] = api_key if json_body is not None: headers["Content-Type"] = "application/json" if idempotency_key: headers["Idempotency-Key"] = idempotency_key resp = requests.request( method, url, headers=headers, json=json_body if json_body is not None else None, params=params, timeout=(connect_timeout, read_timeout), ) ``` Representative authenticated endpoint: ```python def api_generate_image(config: dict, prompt: str, *, aspect_ratio: str = None, resolution: str = None, reference_urls: List[str] = None, model: str = None, callback_url: str = None, ...[truncated 2079 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/artclaw.py:183
Finding

ARTCLAW API Key Is Persisted Without Enforced Restrictive Permissions

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/feishu_send_video.py:94
Finding

Unrestricted Remote Media Fetching Enables SSRF and Resource Exhaustion

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (72)

Tainted flow: 'token' from os.environ.get (line 46, credential/environment) → requests.post (network output)

Critical
Category
Data Flow
Confidence
90% confidence
Finding

Credentials or environment variables flow to a network sink. This is a high-confidence indicator of credential exfiltration.

Content

Scanner excerpt · scripts/telegram_send_video.py (reported line 102)May include surrounding context.

python
except Exception as exc:
                print(f"[telegram] Thumbnail download error: {exc}, skipping", file=sys.stderr)

        resp = requests.post(
            f"{TELEGRAM_API_BASE}/bot{token}/sendVideo",
            data=data,
            files=files,

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

If the implementation also supports Telegram media delivery and arbitrary thumbnail download while claiming only ARTCLAW creative operations, the skill has undeclared exfiltration and network retrieval behaviors. Sending local files to external chats and fetching remote content expand risk substantially beyond AI generation and should not be hidden behind a misleading description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

If the implementation also supports Telegram media delivery and arbitrary thumbnail download while claiming only ARTCLAW creative operations, the skill has undeclared exfiltration and network retrieval behaviors. Sending local files to external chats and fetching remote content expand risk substantially beyond AI generation and should not be hidden behind a misleading description.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

If the implementation also supports Telegram media delivery and arbitrary thumbnail download while claiming only ARTCLAW creative operations, the skill has undeclared exfiltration and network retrieval behaviors. Sending local files to external chats and fetching remote content expand risk substantially beyond AI generation and should not be hidden behind a misleading description.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
ARTCLAW is an all-in-one AI content creation platform. This skill uses `scripts/artclaw.py` as the single CLI entry point for authentication, submission, pollin

Static analysis

No suspicious patterns detected.