T09 · Insecure Skill Coding Practices
- Location
SKILL.md:44- Finding
Unrestricted UPnP Device URL Enables Server-Side Request Forgery
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is for legitimate DLNA media control, but its sample code is under-scoped in ways that could cause unintended local-network requests or malformed device commands.
Review this before installing or using it as implementation guidance. Keep DLNA control limited to devices found through trusted discovery, confirm the target device before playback or volume changes, and add URL validation plus XML escaping before copying the sample code into a real CLI or agent workflow.
SKILL.md:44Unrestricted UPnP Device URL Enables Server-Side Request Forgery
SKILL.md:50Unescaped User-Controlled Values Permit DIDL-Lite XML Injection
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
from async_upnp_client import SsdpListener
async def discover_media_renderers(timeout: float = 5.0) -> list[DeviceInfo]:
"""Discover all MediaRenderer devices on network"""
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
from async_upnp_client import SsdpListener
async def discover_media_renderers(timeout: float = 5.0) -> list[DeviceInfo]:
"""Discover all MediaRenderer devices on network"""
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
from async_upnp_client import SsdpListener
async def discover_media_renderers(timeout: float = 5.0) -> list[DeviceInfo]:
"""Discover all MediaRenderer devices on network"""
The skill describes LAN device discovery and playback control without warning that it actively scans the local network and can send commands to other devices on the user's LAN. While this is expected functionality for a DLNA control skill, the missing disclosure can lead to surprising network activity and unintended control of shared devices, which is a security/privacy usability issue.