Trust Assessment
synology-surveillance received a trust score of 10/100, placing it in the Untrusted category. This skill has significant security findings that require attention before use in production.
SkillShield's automated analysis identified 7 findings: 5 critical, 1 high, 1 medium, and 0 low severity. Key findings include Network egress to untrusted endpoints, Command Injection via Unsanitized URL Parameters, Arbitrary File Write via Unsanitized Filename Construction.
The analysis covered 4 layers: Manifest Analysis, Static Code Analysis, Dependency Graph, LLM Behavioral Safety. The LLM Behavioral Safety layer scored lowest at 0/100, indicating areas for improvement.
Last analyzed on February 13, 2026 (commit 13146e6a). SkillShield performs automated 4-layer security analysis on AI skills and MCP servers.
Layer Breakdown
Behavioral Risk Signals
Security Findings7
| Severity | Finding | Layer | Location | |
|---|---|---|---|---|
| CRITICAL | Network egress to untrusted endpoints HTTP request to raw IP address Review all outbound network calls. Remove connections to webhook collectors, paste sites, and raw IP addresses. Legitimate API calls should use well-known service domains. | Manifest | skills/photonixlaser-ux/synology-surveillance-skill/SKILL.md:95 | |
| CRITICAL | Network egress to untrusted endpoints HTTP request to raw IP address Review all outbound network calls. Remove connections to webhook collectors, paste sites, and raw IP addresses. Legitimate API calls should use well-known service domains. | Manifest | skills/photonixlaser-ux/synology-surveillance-skill/SKILL.md:98 | |
| CRITICAL | Command Injection via Unsanitized URL Parameters The script directly interpolates user-supplied arguments (e.g., camera IDs, limits, directions, positions) into URL query parameters within `curl` commands without proper sanitization or URL-encoding. This occurs in the `api_request` function (used by `syno_record`, `syno_events`, `syno_ptz`, `syno_preset`) and directly in the `syno_snapshot` function's `curl` call. An attacker can inject arbitrary shell commands by crafting malicious input containing shell metacharacters (e.g., ';', '|', '&', '$()', '`'). All user-supplied arguments used in URL query parameters must be properly URL-encoded before being passed to `curl`. For shell commands, ensure variables are quoted and not interpreted as commands. Consider using `printf %q` for shell arguments or a dedicated URL-encoding function. | LLM | scripts/syno-surveillance.sh:50 | |
| CRITICAL | Arbitrary File Write via Unsanitized Filename Construction The `syno_snapshot` function constructs the output filename using the user-supplied `camera_id` without sanitization. If `camera_id` contains path traversal sequences (e.g., `../`) or other special characters, an attacker could write the snapshot file to an arbitrary location on the filesystem, potentially overwriting critical files or exfiltrating data by writing to a web-accessible directory. Sanitize the `camera_id` input to remove or escape any shell metacharacters and path traversal sequences. Alternatively, generate a unique, random filename in a strictly controlled temporary directory and then move/copy the file to the desired location after validation. | LLM | scripts/syno-surveillance.sh:86 | |
| CRITICAL | Command Injection via Unsanitized Input in Echo Command The `syno_stream` function directly interpolates the user-supplied `camera_id` into an `echo` command. If `camera_id` contains shell metacharacters (e.g., `$()`, `` ` ``), it could lead to command injection by executing arbitrary commands on the system. Properly quote or sanitize the `camera_id` variable when used in `echo` or other shell commands to prevent interpretation of metacharacters. For URLs, URL-encode the parameter. | LLM | scripts/syno-surveillance.sh:134 | |
| HIGH | Credential Exposure via URL Query String The `syno_login` function passes the `SYNOLOGY_USER` and `SYNOLOGY_PASS` credentials directly in the URL query string. This method is insecure as credentials can be exposed in server logs, proxy logs, browser history, or process lists, making them vulnerable to interception or discovery. If the Synology API supports it, use HTTP POST requests to send credentials in the request body, or pass them via HTTP headers. Avoid transmitting sensitive information in URL query strings. Consider using API tokens or session cookies after initial authentication instead of re-sending username/password. | LLM | scripts/syno-surveillance.sh:61 | |
| MEDIUM | Recommendation to Disable Two-Factor Authentication (2FA) The skill documentation explicitly recommends disabling Two-Factor Authentication (2FA) for the API user. Disabling 2FA significantly weakens the security posture of the Synology account, making it more susceptible to unauthorized access if credentials are compromised. Strongly advise against disabling 2FA. If the Synology API does not support 2FA for programmatic access, recommend creating a dedicated API user with minimal necessary permissions and monitoring its activity. Explore alternative authentication methods that are compatible with 2FA or provide equivalent security. | LLM | SKILL.md:10 |
Scan History
Embed Code
[](https://skillshield.io/report/63f4bc25743b90fe)
Powered by SkillShield