Back to skill

Security audit

ip-lookup

Security checks for vulnerabilities and agentic risk

Overview

This skill performs a straightforward IP geolocation lookup using disclosed third-party services, with the main privacy consideration that queried IPs are sent over the network.

Install only if you are comfortable with queried IP addresses, including your own public IP when no argument is supplied, being sent to api.ip.sb and possibly ipwho.is. The skill does not show hidden persistence or local data access, but clearer privacy notice would be useful.

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

Lp3

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding
The skill declares shell-capable behavior via the documented use of `ip-lookup.sh`, `curl`, and `python3`, but does not declare corresponding permissions or execution expectations. This creates a transparency and governance gap: users or hosting platforms may underestimate what the skill can execute, which increases the risk of unreviewed command execution and outbound network access.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The default behavior queries the user's public IP via third-party services (`ip.sb`, with `ipwho.is` as fallback), but the description does not clearly warn that this transmits the user's IP and metadata to external providers. Public IP addresses are personal or organizational network identifiers in many contexts, so silent transmission can create privacy, logging, and compliance risks.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The script sends either the user's supplied IP address or, when no argument is provided, the user's own public IP to third-party geolocation services without an explicit privacy warning or consent step. This leaks potentially sensitive network-identifying information to external providers and is especially relevant because the skill is specifically designed to query IP metadata via remote APIs.

External Transmission

Medium
Category
Data Exfiltration
Content
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
Confidence
94% confidence
Finding
The script transmits data to an external service at api.ip.sb to discover the user's public IP. Even though this is expected for the feature, it discloses the user's network identity to a third party and should be treated as an external data-sharing behavior requiring notice and consent.

External Transmission

Medium
Category
Data Exfiltration
Content
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"
Confidence
96% confidence
Finding
The script sends the queried IP address to external geolocation services (api.ip.sb, with fallback to ipwho.is). While necessary for this functionality, this is still a privacy-relevant transmission of user-supplied or locally derived data to third parties, and users are not explicitly warned about the disclosure.

Static analysis

No suspicious patterns detected.