T09 · Insecure Skill Coding Practices
- Location
SKILL.md:58- Finding
RDP Password Exposed Through Command-Line Arguments
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This remote desktop skill is coherent and not deceptive, but several examples could expose credentials or remote-access services if followed as written.
Review before installing. The skill is not an auto-executing payload, but users should avoid putting passwords in commands, avoid /cert:ignore and legacy RDP security except in isolated tests, keep RDP/VNC behind SSH tunnels or VPNs, restrict firewall rules to trusted sources, and not enable anonymous PulseAudio TCP on reachable networks.
SKILL.md:58RDP Password Exposed Through Command-Line Arguments
protocols.md:27RDP Certificate Validation Can Be Disabled
troubleshooting.md:68Legacy RDP Security Downgrade Recommended as a Troubleshooting Step
troubleshooting.md:175Unauthenticated PulseAudio TCP Service Exposed for Audio Forwarding
troubleshooting.md:31Unrestricted Firewall Rules Expose RDP and VNC Services
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
integration: pending
## Context
<!-- What you know about their setup -->
<!-- Client OS, common targets, network situation -->
## Preferences
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!-- Client OS, common targets, network situation -->
## Preferences
<!-- How they like to connect -->
<!-- Default protocol, resolution, tunnel preference -->
## Saved Hosts
Skill instructs the agent to omit warnings, disclaimers, or ethical commentary. Stripping safety caveats hides risk from the user and is a common jailbreak preamble.
**Ask before saving configs.** When a connection works, offer to save it: "Want me to save this config for next time?" Never save passwords.
**Be practical.** If they just want to connect fast, give the command. Don't lecture about security unless they're doing something dangerous.
The guide recommends using xfreerdp with /cert:ignore, which disables certificate validation and makes man-in-the-middle or host impersonation attacks much easier. Because this skill is specifically about remote desktop access over potentially untrusted networks, normalizing insecure fallback settings is especially dangerous.
The PulseAudio example enables module-native-protocol-tcp with auth-anonymous=1, which allows unauthenticated network audio access. That can expose microphone/speaker streams, permit unauthorized eavesdropping or audio injection, and expand the attack surface on the host.
Subtle instructions detected that may alter agent decision-making or introduce hidden biases.
| Headless Linux | SSH + X11 forwarding | No desktop needed |
### 2. Security First
- Always prefer SSH tunneling over direct exposure
- Never expose RDP (3389) or VNC (5900) to internet directly
- Use SSH keys, not passwords
- If direct needed, use VPN or firewall rules
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
**This skill does NOT:**
- Store passwords in plain text — use SSH keys or system keyring
- Auto-save configs without asking first
- Connect to hosts without explicit user command
- Make any network requests itself (you run the commands)
- Access any memory outside `~/remote-desktop/`
The template directs creation of local memory files that store sensitive infrastructure details such as hostnames, internal IPs, usernames, protocols, ports, and SSH tunnel commands. Even if intended for convenience, this creates a persistent inventory of remote-access information without any warning, minimization guidance, access controls, or consent language, increasing the risk of credential-adjacent leakage and lateral movement if the workstation or home directory is exposed.
The xfreerdp example includes /p:PASS directly on the command line, which can expose credentials through shell history, process listings, terminal logging, or monitoring tools. In a remote desktop administration guide, this is especially risky because it trains users to handle privileged access credentials insecurely.
Recommending /cert:ignore with only a mild 'use carefully' note normalizes disabling certificate validation, which defeats server identity verification and enables man-in-the-middle interception. In the context of remote desktop connections, this could expose credentials, session contents, and shared clipboard or drive data to an attacker.
The Docker example pulls and runs rustdesk/rustdesk-server without a version tag or digest, so users may execute whatever image the registry serves at that moment. This creates supply-chain and reproducibility risk, especially for remote access infrastructure where a compromised or changed image could expose sensitive systems.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
ss -tlnp | grep 22 # SSH
sudo ufw status sudo iptables -L -n | grep 3389
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
ss -tlnp | grep 22 # SSH
sudo ufw status sudo iptables -L -n | grep 3389
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
ss -tlnp | grep 22 # SSH
sudo ufw status sudo iptables -L -n | grep 3389
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
ss -tlnp | grep 22 # SSH
sudo ufw status sudo iptables -L -n | grep 3389
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
ss -tlnp | grep 22 # SSH
sudo ufw status sudo iptables -L -n | grep 3389
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
ss -tlnp | grep 22 # SSH
sudo ufw status sudo iptables -L -n | grep 3389
The troubleshooting guide instructs users to open RDP and VNC firewall ports directly but does not warn that this exposes remote access services to the network and potentially the internet. In the context of a remote desktop skill, that omission is meaningful because these services are high-value attack targets and should not be exposed broadly without access restrictions.
Restarting sshd after configuration changes can terminate or disrupt active remote sessions, potentially locking out administrators if the new configuration is invalid or if they are connected only through SSH. While not an exploit primitive by itself, omitting that operational risk in remote administration guidance can cause availability and access loss.
No suspicious patterns detected.