Pilot S3 Bridge

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

Overview

The skill is purpose-aligned for cloud storage bridging, but its example sets up a public, long-running bridge that can use cloud credentials to read, write, list, and send storage data without clear sender checks or scope limits.

Only install or use this skill if you understand Pilot Protocol and can restrict the bridge to trusted senders. Use a dedicated least-privilege cloud credential, limit it to specific buckets and actions, avoid public mode unless necessary, and stop the daemon when the transfer task is complete.

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.

#
ASI02: Tool Misuse and Exploitation
High
What this means

A bridge configured this way could modify or disclose cloud storage objects if it processes an unsafe or unauthorized request.

Why it was flagged

The workflow executes cloud storage read, write, and list operations using bucket/key values taken from received messages, but the artifact does not show validation, approval, allowlisting, or action limits.

Skill content
case "$ACTION" in
    upload)
      ...
      aws s3 cp /tmp/upload_file "s3://$BUCKET/$KEY"
...
    download)
      aws s3 cp "s3://$BUCKET/$KEY" /tmp/download_file
      pilotctl --json send-file "$SENDER" /tmp/download_file
...
    list)
      OBJECTS=$(aws s3 ls "s3://$BUCKET/$(echo "$REQUEST" | jq -r '.prefix')" --recursive)
Recommendation

Require explicit user approval for high-impact actions, validate bucket/key/prefix values, restrict allowed actions and storage locations, and prefer narrowly scoped wrapper commands over raw shell-driven cloud operations.

#
ASI03: Identity and Privilege Abuse
High
What this means

The bridge may act with all permissions granted to the configured cloud credentials, potentially exceeding the user's intended storage access.

Why it was flagged

The skill relies on delegated cloud credentials, but it does not define least-privilege permissions, specific buckets, credential handling boundaries, or which operations those credentials should allow.

Skill content
export AWS_ACCESS_KEY_ID="your_key"
export AWS_SECRET_ACCESS_KEY="your_secret"
...
Requires pilot-protocol skill, running daemon, S3 bridge agent with cloud credentials (AWS CLI, gsutil, or az CLI).
Recommendation

Use dedicated least-privilege credentials limited to specific buckets/prefixes and actions, document the required credential scope, and avoid using broad personal or administrative cloud keys.

#
ASI07: Insecure Inter-Agent Communication
High
What this means

Cloud files or listings could be exposed through the bridge if messages are accepted from an unexpected or unauthorized sender.

Why it was flagged

The example starts a public Pilot agent and processes received messages, but does not show authentication, sender verification, message signing, or an allowlist before using cloud credentials.

Skill content
pilotctl --json daemon start --hostname s3-agent --public
pilotctl --json listen 1008
...
REQUEST=$(pilotctl --json recv 1008 --timeout 120s)
SENDER=$(echo "$REQUEST" | jq -r '.sender')
Recommendation

Run the bridge privately by default, verify sender identity, restrict accepted peers, and require authenticated or signed requests before performing cloud storage operations.

#
ASI10: Rogue Agents
Medium
What this means

The bridge could keep operating after the intended task and continue accepting storage-related requests while cloud credentials remain available.

Why it was flagged

The documented workflow creates a public, long-running worker loop but does not include a stop condition, lifecycle control, logging guidance, or cleanup instructions.

Skill content
pilotctl --json daemon start --hostname s3-agent --public
...
while true; do
  REQUEST=$(pilotctl --json recv 1008 --timeout 120s)
Recommendation

Add explicit start/stop instructions, timeouts, logging, user-visible status, and cleanup steps; avoid public long-running mode unless the user intentionally enables it.