T08 · Insecure Dependencies
- Location
SKILL.md:20- Finding
Unpinned npm Package Download and Execution via npx
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:20,34-35,47-48,62,74-75,87-88;examples/search-guides.md:6,29,36,43
Vulnerability Type: Unpinned third-party dependency execution
Risk Level: HighVulnerable Code
SKILL.md:20:bash npx lovtrip@latest --helpSKILL.md:34-35:bash npx lovtrip search "京都3天" npx lovtrip search "Bali beach" --jsonSKILL.md:47-48:bash npx lovtrip guides npx lovtrip guides --destination "Tokyo"SKILL.md:62:bash npx lovtrip guide kyoto-3-day-food-tourSKILL.md:74-75:bash npx lovtrip destinations npx lovtrip destinations --trendingSKILL.md:87-88:bash npx lovtrip itineraries npx lovtrip itineraries --destination "Bali" --days 5examples/search-guides.md:6,29,36,43:bash npx lovtrip search "京都" npx lovtrip destinations --trending npx lovtrip guide kyoto-3-day-classic npx lovtrip search "Bali" --json | python3 -c " import json, sys data = json.load(sys.stdin) for item in data.get('results', []): print(f\"- {item['title']}: {item.get('url', 'N/A')}\") "Technical Analysis
The documented commands instruct users or agents to run the
lovtripnpm package throughnpx. The explicit@latestselector and commands that omit a version allow npm to retrieve and execute whatever package release is current when the command runs. Consequently, the effective executable code can change after this Skill has been reviewed.npxmay download the package and its dependency tree, then execute package CLI code and applicable installation lifecycle behavior. This creates a supply-chain trust boundary that is not constrained by an exact reviewed version or integrity value. A compromised publisher account, malicious release, dependency compromise, or npm distribution-chain incident could therefore turn an apparently legitimate travel query into arbitrary loc ...[truncated 1784 chars]- Remediation
View remediation
Remediation Suggestions
- Prefer the documented direct HTTPS API for all travel-content queries because it fulfills the declared functionality without locally executing an npm package.
- If the CLI is required, pin it to an exact version rather than using
@latestor an omitted version:bash npx --yes lovtrip@X.Y.Z --help - Review the pinned release, its dependency tree, package metadata, lifecycle scripts, and published artifacts before approving it.
- Use a lockfile and verified integrity metadata when installing the CLI as part of a controlled project environment.
- Disable package lifecycle scripts where operationally possible, and verify that the CLI remains functional under that restriction.
- Run the CLI in a sandbox with read-only project access, no unnecessary credentials, minimal environment variables, and network access restricted to required LovTrip endpoints.
- Replace silent
curl -sexamples with failure-aware requests such ascurl --fail --silent --show-error, and URL-encode user-controlled query values for reliability and input safety. - Document the npm registry and package publisher that users are expected to trust, along with a controlled process for reviewing and upgrading the pinned version.
