Back to skill

Security audit

ip-lookup

Security checks for vulnerabilities and agentic risk

Overview

This is a small IP geolocation helper whose network lookups are disclosed and aligned with its stated purpose, with privacy considerations for public-IP queries.

Install only if you are comfortable sending queried IP addresses, and your machine's public IP when no argument is supplied, to third-party geolocation services. Use an explicit IP argument if you want to avoid the automatic public-IP discovery request.

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
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · scripts/ip-lookup.sh (reported line 21)May include surrounding context.

sh
if [ -z "$IP" ]; then
  # 获取本机公网 IP
  IP=$(curl -fsSL --max-time 15 "https://api.ip.sb/geoip" 2>/dev/null | python3 -c "import json,sys; print(json.load(sys.stdin).get('ip',''))" 2>/dev/null) || true
  [ -z "$IP" ] && { echo "获取本机 IP 失败,请检查网络,或直接指定: ip-lookup 8.8.8.8" >&2; exit 1; }
  LABEL="本机公网 IP"
else

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
89% confidence
Finding

The skill advertises shell-based behavior and installation of command-line tools but does not declare any explicit tool scope or allowed tools. That makes the skill's execution capabilities less transparent to the user or runtime policy layer, increasing the risk of unintended command execution or overly broad tool access.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill supports querying the current machine's public IP via third-party geolocation services, but the description does not clearly warn users that this sends network-derived data to external providers. This can expose user or organization IP information and related metadata to outside services without informed consent, which is especially sensitive in enterprise or privacy-conscious environments.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
94% confidence
Finding

This request transmits data to an external service to discover the caller's public IP, which is sensitive network metadata. In this skill's context, external transmission is expected functionality, but it still poses a real privacy concern because it happens automatically when no IP argument is supplied.

Content

Scanner excerpt · scripts/ip-lookup.sh (reported line 21)May include surrounding context.

sh
if [ -z "$IP" ]; then
  # 获取本机公网 IP
  IP=$(curl -fsSL --max-time 15 "https://api.ip.sb/geoip" 2>/dev/null | python3 -c "import json,sys; print(json.load(sys.stdin).get('ip',''))" 2>/dev/null) || true
  [ -z "$IP" ] && { echo "获取本机 IP 失败,请检查网络,或直接指定: ip-lookup 8.8.8.8" >&2; exit 1; }
  LABEL="本机公网 IP"
else

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The script sends either the user's local public IP or a user-supplied IP address to third-party services (api.ip.sb and ipwho.is) without an explicit runtime warning or consent prompt. This creates a privacy risk because IPs can be personal or sensitive metadata, and the skill context specifically performs network lookups against external providers.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

The script transmits the queried IP to external lookup providers, exposing potentially sensitive user-supplied data to third parties. This is not hidden exfiltration beyond the tool's purpose, but the absence of an explicit privacy notice and provider disclosure makes it a valid privacy/security concern.

Content

Scanner excerpt · scripts/ip-lookup.sh (reported line 28)May include surrounding context.

sh
LABEL="IP $IP"
fi

DATA=$(curl -fsSL --max-time 15 "https://api.ip.sb/geoip/$IP" 2>/dev/null) || DATA=$(curl -fsSL --max-time 15 "https://ipwho.is/$IP" 2>/dev/null) || { echo "查询失败,请检查网络" >&2; exit 1; }

if [ "$JSON" = 1 ]; then
  echo "$DATA"

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

Natural-language strings such as the description, usage notes, and error messages are all presented in Chinese with no alternative language or user-selectable locale. This creates a language policy issue if skills are expected not to force a specific language without explicit opt-in or documented regional scope.

Content

No source excerpt is available for this finding.