T03 · Remote Payload Retrieval and Execution
- Location
SKILL.md:20- Finding
Unverified Mutable Remote Script Retrieval Creates a Post-Review Code Execution Channel
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches its YouTube subtitle-analysis purpose, but its recommended install downloads executable code from a mutable GitHub branch without integrity verification.
Review before installing. Prefer using the packaged script as reviewed, or install only from a pinned commit or release with a checksum. Be aware the tool can read subtitle files or a chosen folder, fetch subtitles for user-supplied YouTube URLs, and write analysis files locally.
SKILL.md:20Unverified Mutable Remote Script Retrieval Creates a Post-Review Code Execution Channel
The declared behavior says the skill summarizes and analyzes content, but the associated behavior reportedly only generates a template, includes raw text/statistics, and performs network retrieval via yt-dlp without declaring that capability. This is dangerous because users and orchestrators may trust the skill with broader data access or networking than expected, creating both integrity issues and an opportunity for unreviewed external fetches.
The skill instructs the agent/user to download files, create directories, and run a Python script, but it declares no explicit tool scope or permissions. That mismatch weakens security boundaries because a host may permit file and shell actions without clear user-visible authorization, increasing the chance of unintended filesystem changes or command execution.
The manifest description and README content are written entirely in Vietnamese, and the examples/instructions assume Vietnamese usage without any opt-in or alternative language option. This can violate language/locale policy when a skill implicitly restricts interaction to a specific language without documenting that constraint as intentional or region-specific.
The skill instructs persistent installation into ~/.agents/skills and stores executable/script content there for future sessions. Persistence increases risk because a fetched or later-modified script can continue to be available across sessions, making accidental trust or long-lived compromise more likely, especially when installation pulls remote content directly from the network.
# macOS / Linux
mkdir -p ~/.agents/skills/youtube-content-analyzer/scripts
curl -o ~/.agents/skills/youtube-content-analyzer/SKILL.md \
https://raw.githubusercontent.com/mcbaivn/openclaw-skills-mcbai/main/skills/youtube/youtube-content-analyzer/SKILL.md
curl -o ~/.agents/skills/youtube-content-analyzer/scripts/analyze_content.py \
Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.
# macOS / Linux
mkdir -p ~/.agents/skills/youtube-content-analyzer/scripts
curl -o ~/.agents/skills/youtube-content-analyzer/SKILL.md \
https://raw.githubusercontent.com/mcbaivn/openclaw-skills-mcbai/main/skills/youtube/youtube-content-analyzer/SKILL.md
curl -o ~/.agents/skills/youtube-content-analyzer/scripts/analyze_content.py \
https://raw.githubusercontent.com/mcbaivn/openclaw-skills-mcbai/main/skills/youtube/youtube-content-analyzer/scripts/analyze_content.py
The document's instructions are written entirely in Vietnamese and direct the agent to produce specific sections in that language, such as 'Tóm tắt', 'Chủ đề chính', and 'Đánh giá mật độ thông tin'. This imposes a language choice on the user without offering an alternative or explaining a region-specific requirement, which is a natural-language locale policy concern.
The script defaults subtitle handling to "vi,en" in both the function signature and CLI argument, which imposes a specific language/locale preference. This is a natural-language policy issue because the user is not explicitly offered a neutral default or asked to opt into that locale choice.
subprocess module calls execute external commands. Without careful input validation, this enables command injection.
"-o", os.path.join(tmpdir, "%(title)s.%(lang)s.%(ext)s"),
url
]
subprocess.run(cmd, check=False)
srt_files = list(Path(tmpdir).glob("*.srt"))
if not srt_files:
No suspicious patterns detected.