Scanned on 2/7/2026
Google Places API integration with proper error handling but has path injection vulnerability and lacks input validation on critical parameters.
This OpenClaw skill integrates with Google Places API and demonstrates several good security practices including proper error handling, timeouts, and structured data validation. However, it has a significant path injection vulnerability in the get_place_details function where the place_id parameter is directly interpolated into the URL without validation. An attacker could potentially inject path traversal sequences or manipulate the API endpoint. Additionally, the GOOGLE_PLACES_BASE_URL can be overridden via environment variable, which could redirect API calls (and the API key) to malicious endpoints. The code shows no signs of intentional malicious behavior, but these vulnerabilities could be exploited if an attacker can control the environment variables or input parameters. The incomplete resolve_locations function prevents full assessment. Overall, this represents moderate risk that should be addressed before production use, particularly the input validation issues.
Path injection vulnerability in get_place_details function - place_id parameter is directly interpolated into URL without validation or sanitization
Evidence:
url = f"{GOOGLE_PLACES_BASE_URL}/places/{place_id}"GOOGLE_PLACES_BASE_URL can be overridden via environment variable, allowing redirection of API calls to arbitrary endpoints
Evidence:
GOOGLE_PLACES_BASE_URL = os.getenv("GOOGLE_PLACES_BASE_URL", "https://places.googleapis.com/v1")API key is sent in headers to potentially untrusted endpoints if GOOGLE_PLACES_BASE_URL is modified
Evidence:
"X-Goog-Api-Key": api_key sent to GOOGLE_PLACES_BASE_URL which can be overriddenNo rate limiting or request throttling implemented, could lead to API quota exhaustion or abuse
Evidence:
Direct API calls without rate limiting in search_places, get_place_details, resolve_locationsIncomplete code - resolve_locations function is truncated and may contain additional vulnerabilities
Evidence:
def resolve_locations(request: LocationResolveRequest) -> LocationResolveResponse:
url = f"{GOOGLE_PLACES_BASE_URL}/places:searchTexError messages may leak sensitive information about internal API structure
Evidence:
logger.error logs include full response text which may contain sensitive data