Back to skill

Security audit

free-oracle-arm-skill

Security checks for vulnerabilities and agentic risk

Overview

The skill is not clearly malicious, but it asks an agent to handle cloud credentials, SSH access, long-running cloud automation, and persistent anti-idle behavior with weak safety guidance.

Review carefully before installing. Use a dedicated low-privilege OCI user or compartment, avoid sharing private keys or credential-adjacent values in chat, keep SSH host-key verification enabled, pin installer and CLI versions where possible, store notification keys outside scripts with restrictive permissions, and only enable background polling or anti-idle cron jobs if you understand how to stop and remove them.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (4)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:63
Finding

SSH Host-Key Verification Is Disabled

Content
View full analysis
-o StrictHostKeyChecking=no -o ConnectTimeout=10 @ "echo connected && hostname" ``` ### Technical Analysis The documented SSH command disables host-key verification with `StrictHostKeyChecking=no`. SSH host keys authenticate the remote server and protect the client against machine impersonation. Disabling this check causes the client to accept an unverified key without requiring the user to compare it against a trusted fingerprint. The supplied private key is used locally and is not transmitted to the server. Nevertheless, an attacker who can redirect or intercept the network connection can make the agent connect to an attacker-controlled SSH endpoint. Any subsequent commands intended for the legitimate host could then run on the attacker's machine. ### Attack Path 1. The user or agent runs the documented SSH command. 2. An attacker capable of DNS, routing, gateway, or network interception redirects the connection. 3. The attacker presents an arbitrary SSH host key. 4. Because strict checking is disabled, the client accepts the untrusted host without warning or confirmation. 5. The SSH authentication attempt and remote command are directed to the attacker-controlled endpoint. 6. If the same insecure option is reused for later administrative operations, commands or data intended for the Oracle instance may be exposed to the attacker. ### Impact Assessment Successful exploitation permits remote-host impersonation and may expose commands, command output, host metadata, and data later transferred through the SSH session. It does not directly disclose the SSH private key, but it defeats the server-authentication boundary provided by SSH. The affected privileges are those of the SSH account selected by the user, commonly `ubuntu` or `root`. T ...[truncated 105 chars]
Remediation
View remediation
> "$HOME/.ssh/oracle_known_hosts" # Verify the recorded fingerprint through a trusted channel before connecting. ssh -i \ -o UserKnownHostsFile="$HOME/.ssh/oracle_known_hosts" \ -o StrictHostKeyChecking=yes \ -o ConnectTimeout=10 \ @ "echo connected && hostname" ``` - Do not permit privileged commands or sensitive transfers until the host fingerprint has been verified. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:85
Finding

Unpinned Third-Party Packages and Installers Can Execute Mutable Supply-Chain Code

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/grab_arm.sh:49
Finding

ServerChan Notification Credential Is Stored in Plaintext and Embedded in the Request URL

Content
View full analysis
/dev/null 2>&1 fi } ``` ### Technical Analysis The instructions tell the user to write the ServerChan SendKey directly into the shell script. The repository does not prescribe restrictive permissions for the resulting script. Consequently, the credential may be exposed to other local users, backups, source-control commits, support bundles, or any process that can read the file. The credential is also placed in the URL path. URLs are more likely than request bodies to appear in process inspection, diagnostic tooling, proxy records, or HTTP-related logs. HTTPS protects the URL in transit from passive network observers, but it does not prevent local process inspection or logging at endpoints and intermediaries that terminate TLS. ### Attack Path 1. The user places the SendKey directly in `grab_arm.sh` as instructed. 2. The script remains readable through permissive default file permissions, a backup, an accidental repository commit, or another local process. 3. Alternatively, an attacker or monitoring tool observes the `curl` command arguments or a log containing the request URL. 4. The attacker extracts the SendKey from the script or URL. 5. The attacker sends requests to the ServerChan endpoint using the stolen credential. ...[truncated 591 chars]
Remediation
View remediation
"$HOME/.config/grab-arm/serverchan.key" chmod 600 "$HOME/.config/grab-arm/serverchan.key" ``` - Set the script itself to mode `700` or `750` where appropriate. - Ensure the key file, script configuration, and logs are excluded from source control and support archives. - Prefer a provider authentication mechanism that places credentials in a protected header or request body if ServerChan supports one. If the API requires a URL credential, document the process-list and logging exposure explicitly. - Rotate the SendKey immediately if it has been committed, logged, shared, or stored in a publicly readable file. - Avoid printing the full request URL or enabling shell tracing while the notification function runs. ]]>

T06 · System Persistence

Warning
Location
SKILL.md:298
Finding

Persistent Synthetic CPU Load Is Installed Through a Cron Job

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
Findings (34)

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

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

md
pip3 install oci-cli

# 如果 pip3 未安装
sudo apt-get update && sudo apt-get install -y python3-pip
pip3 install oci-cli

# 添加 PATH

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 92)May include surrounding context.

(不是那台 E2 小机,是 Ampere A1 的机器)

如果已有 ARM 实例 → 检查是否超过配额,超过则提醒用户不能再开。

Step 1: 安装 OCI CLI + 配置 API

1.1 在目标机器上安装 OCI CLI

bash
# Ubuntu/Debian
pip3 install oci-cli

# 如果 pip3 未安装
sudo apt-get update && sudo apt-get install -y python3-pip
pip3 install oci-cli

# 添加 PATH
echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.bashrc
source ~/.bashrc

1.2 生成 API 密钥对

bash
mkdir -p ~/.oci
openssl genrsa -out ~/.oci/oci_api_key.pem 2048
openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem
chmod 600 ~/.oci/oci_api_key.pem

让用户把生成的公钥内容(cat ~/.oci/oci_api_key_public.pem)复制出来。

1.3 引导用户配置网页端

让用户在甲骨文网页上操作:

  1. 点右上角头像 → User Settings(用户设置)
  2. 左侧菜单 → API Keys → Add API Key
  3. 选 "Paste Pub

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

bash
# 在本地执行(将本地公钥传到目标机器)
scp ~/.ssh/id_rsa.pub ubuntu@目标IP:~/.ssh/arm_pub.key

或者让用户直接创建:

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The README describes an automated workflow involving OCI CLI setup, API key configuration, continuous polling, and automatic instance creation, but it does not clearly warn users about the sensitivity of cloud credentials, cost/account implications, or the operational effects of persistent automation. In this skill context, the danger is elevated because the audience is explicitly inexperienced users who may follow instructions without understanding credential exposure, privilege scope, or long-running resource behavior.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

The README instructs users to execute npx skills ... without pinning a specific package version or verifying provenance. This creates a supply-chain risk: a later compromised or malicious package version could be fetched and executed on the user's system at install time.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
92% confidence
Finding

This installation command again relies on npx skills without a pinned version, meaning users may execute whatever package version is current at the time. If the upstream package or dependency chain is compromised, arbitrary code could run during installation or skill management.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
90% confidence
Finding

The npx openskills install ... command also executes an unpinned package from the registry, exposing users to package substitution or compromised future releases. Because this skill targets less-technical users and promotes one-command setup, the chance of blind execution is higher, increasing practical risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README describes OCI CLI setup, API key configuration, and deployment of an automation script to a Linux server, but does not warn users about secure handling of Oracle API keys. In this context, inexperienced users may copy long-lived credentials onto a remote host, store them with weak permissions, or expose them in shell history/logs, increasing the risk of account compromise.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
84% confidence
Finding

The README promotes continuous polling, automatic instance creation, notifications, and anti-reclaim activity without clearly warning that the skill will perform ongoing automated actions on user infrastructure. In context, this can lead users—especially beginners—to run persistent automation they do not fully understand, potentially causing unexpected resource consumption, policy violations, or unattended cloud changes.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
87% confidence
Finding

The README instructs users to run npx skills without pinning a version, which causes execution of whatever package version is current at install time. If the package, one of its dependencies, or the resolved registry artifact is malicious or compromised, users may execute unreviewed code on their machine during installation.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
87% confidence
Finding

This command again relies on npx skills without version pinning, so the installed executable is not reproducible and may change over time. In a security-sensitive workflow that later handles cloud credentials, executing an unpinned remote package increases supply-chain risk and could expose the host or user secrets.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

npx openskills install is also an unpinned remote execution path. Because users are encouraged to install and run automation that interacts with Oracle Cloud credentials and infrastructure, compromise of the installer chain could lead to credential theft or unauthorized actions.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill contains numerous shell commands, remote-access steps, and system-modifying actions but declares no explicit tool scope or allowed-tools boundary. That omission increases the chance an agent could overreach and execute sensitive operations without clear consent or sandboxing constraints.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly instructs the agent to collect SSH connection details and other access information through natural-language conversation. Centralizing sensitive infrastructure access data in chat increases the risk of accidental disclosure, logging exposure, and unauthorized remote administration.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill tells the user to disclose their SSH private key path and then uses that key for agent-initiated SSH access, while also disabling host key checking. Even if the private key itself is not pasted, directing an agent to use sensitive authentication material for remote access materially increases the risk of unauthorized access and MITM exposure.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

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

md
pip3 install oci-cli

# 如果 pip3 未安装
sudo apt-get update && sudo apt-get install -y python3-pip
pip3 install oci-cli

# 添加 PATH

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

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

md
pip3 install oci-cli

# 如果 pip3 未安装
sudo apt-get update && sudo apt-get install -y python3-pip
pip3 install oci-cli

# 添加 PATH

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 99)May include surrounding context.

1.2 生成 API 密钥对

bash
mkdir -p ~/.oci
openssl genrsa -out ~/.oci/oci_api_key.pem 2048
openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem
chmod 600 ~/.oci/oci_api_key.pem

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 99)May include surrounding context.

1.2 生成 API 密钥对

bash
mkdir -p ~/.oci
openssl genrsa -out ~/.oci/oci_api_key.pem 2048
openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem
chmod 600 ~/.oci/oci_api_key.pem

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 · SKILL.md (reported line 102)May include surrounding context.

mkdir -p ~/.oci openssl genrsa -out ~/.oci/oci_api_key.pem 2048 openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem chmod 600 ~/.oci/oci_api_key.pem

text

让用户把生成的公钥内容(`cat ~/.oci/oci_api_key_public.pem`)复制出来。

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 · SKILL.md (reported line 136)May include surrounding context.

mkdir -p ~/.oci openssl genrsa -out ~/.oci/oci_api_key.pem 2048 openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem chmod 600 ~/.oci/oci_api_key.pem

text

让用户把生成的公钥内容(`cat ~/.oci/oci_api_key_public.pem`)复制出来。

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill collects cloud account identifiers and API-key metadata in conversation and has the user place them into a live CLI configuration without caution about their sensitivity. While these values are not secret in the same way as private keys, they materially facilitate account targeting and authenticated cloud operations when combined with the generated key material.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill asks the user to provide cloud authentication-related values, including fingerprint and OCIDs, through chat. In context, those values are used to configure cloud API access and therefore materially assist account operations, making their conversational collection unnecessarily risky.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

3.3 测试通知

bash
curl -X POST "https://sctapi.ftqq.com/${SCT_KEY}.send" -d "title=测试" -d "desp=通知配置成功"

微信如果能收到消息,说明通知配置成功。

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

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

Content

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

bash
# 安装 screen(如果没有)
sudo apt-get install -y screen

# 创建 screen 会话
screen -dmS grab_arm bash ~/grab_arm.sh