Back to skill

Security audit

Airbnb Search

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent Airbnb search skill with expected outbound Airbnb requests, with supply-chain and privacy-disclosure caveats but no hidden persistence, credential access, or destructive behavior found.

Before installing, understand that your Airbnb searches and filters will be sent to Airbnb, and prefer installing a specific reviewed version or using a locked environment. Run it with normal user privileges and minimal filesystem/credential exposure; no elevated permissions appear necessary.

Vulnerability Patterns
  • 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
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:17
Finding

Unpinned Runtime Dependency Installation Creates Supply-Chain Risk

Content
View full analysis
=2.25.0", ] ``` ### Technical Analysis The documented execution commands instruct `uv` to resolve and install `requests` without an exact version or a cryptographically verified lock file. The project constraint in `pyproject.toml` similarly allows any release at or above version 2.25.0. Consequently, the code reviewed during the audit is not sufficient to determine the exact dependency code that will execute in a future installation. If a newly resolved direct or transitive dependency is compromised, malicious import-time code could execute before the Skill performs its intended Airbnb search. This is a supply-chain weakness rather than evidence that the current `requests` package is malicious. ### Attack Path 1. An attacker compromises a future release of a dependency accepted by the unconstrained version range, or compromises one of its transitive dependencies. 2. A user or agent invokes the documented `uv run --with requests` command in an environment where dependency resolution is required. 3. `uv` downloads the currently selected package versions from the configured package registry. 4. The standalone script imports `airbnb_search.cli`, which imports `airbnb_search.search`. 5. `airbnb_search.search` imports `requests`, causing any malicious package initialization co ...[truncated 662 chars]
Remediation
View remediation
=2.25.0` for reproducible Skill execution. 4. Configure installation to require locked versions and fail if the lock file would be modified. 5. Where supported, verify downloaded artifacts using trusted hashes. 6. Run the Skill in a sandbox with minimal filesystem access, no unnecessary credentials, and restricted outbound network access. 7. Establish a dependency update process that includes vulnerability scanning and explicit review before lock-file changes are accepted. ]]>

T09 · Insecure Skill Coding Practices

Note
Location
airbnb_search/search.py:70
Finding

Airbnb API Request Can Block Indefinitely Because No Timeout Is Configured

Content
View full analysis
Remediation
View remediation
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 (9)

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding

The uvx airbnb-search quick-run command executes the latest resolved package rather than a reviewed, fixed version. That exposes users to time-of-use supply-chain compromise if the package is later hijacked or a malicious release is published, especially since quick-run commands reduce scrutiny before execution.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
88% confidence
Finding

The README instructs users to run npx skills add olafs-world/airbnb-search without pinning a specific version or commit. This creates a supply-chain risk because users may install whatever package/version is current at execution time, including a compromised or malicious update, and README-driven install commands are commonly copied verbatim.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill documentation indicates network access is required to query Airbnb, but the manifest does not declare any tool scope such as permissions or allowed-tools. This creates a transparency and policy-enforcement gap: an agent platform may allow execution without clearly signaling to users or reviewers that the skill can make outbound requests, which can enable unintended data egress or execution beyond expected boundaries.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
86% confidence
Finding

The function builds a URL containing the user's query, dates, price filters, and other search parameters, then sends it to airbnb.com via an HTTP request. In this file there is no confirmation prompt, visible log/print notice, or warning in comments/docstrings that user-provided search data will be transmitted to a third-party service.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The request URL includes locale=en, which forces English for all searches regardless of user preference or region. This is a natural-language policy concern because the file does not offer locale selection or explain why English is required.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
87% confidence
Finding

The README emphasizes convenience and direct API access but does not clearly warn that user-entered searches, dates, and related trip preferences are sent to Airbnb over the network. In a travel-search skill this is expected behavior, which lowers severity, but the omission can still mislead privacy-conscious users about what data leaves the local environment.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
91% confidence
Finding

The project declares requests>=2.25.0 without an upper bound or exact pin, so consumers may resolve to a vulnerable release depending on install time and environment. This is a real supply-chain risk because known advisories exist for some requests versions, and the manifest does not provide enough information to verify that affected versions are excluded.

Content

No source excerpt is available for this finding.

Unverifiable Dependency: pytest has 2 known advisory(ies) (CVE-2025-71176 (pytest has vulnerable tmpdir handling); CVE-2025-71176 (pytest has vulnerable tmpdir handling)), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
82% confidence
Finding

This is a code file, so SQP-2 applies to safety-relevant operations such as network calls. The test class notes that it makes real API calls, but the file does not provide any user-facing disclosure about transmitting query data like locations and dates to Airbnb when search_airbnb is invoked in these tests.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.