T08 · Insecure Dependencies
- Location
scripts/gossamer.py:24- Finding
Unpinned npx Package Creates a Supply-Chain Execution Risk
- Content
View full analysis
str: skills = _read_installed_skills(repo) skill_args = " ".join(skills) if skills else "" return f"npx skills add {_SKILLS_REPO} --skill {skill_args} -y" ``` `scripts/gossamer.py:134-139`: ```python dismiss_install_prompt() print( f"[ACTION_REQUIRED] qwencloud-update-check skill is not installed. " f"Install: {INSTALL_CMD}", file=sys.stderr, ) ``` ### Technical Analysis The generated installation command invokes the unversioned npm package `skills` through `npx`. No exact package version or integrity value is specified, so the code selected by the package registry can change after this Skill has been reviewed. The `-y` option also suppresses the normal npm installation confirmation. The script prints this command rather than executing it directly. However, it emits the command through a structured `[ACTION_REQUIRED]` message explicitly intended for agents or users to parse and act upon. Consequently, following the recommendation may retrieve and execute mutable third-party package code. This behavior exceeds the minimum privileges required to perform a version check. Checking the remote `version.json` requires only a constrained HTTPS GET request; it does not require executing an unpinned npm package or installing remote Skill content. The separately flagged request in `scripts/check_update.py:58-70` does not itself expose sensitive information: it performs a GET to a fixed GitHub host using a fi ...[truncated 1648 chars]- Remediation
View remediation
