T09 · Insecure Skill Coding Practices
- Location
SKILL.md:18- Finding
Publicly Reachable Staged Voicemail Audio Lacks Documented Access Controls
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:18-21andSKILL.md:99-100
Vulnerability Type: Public exposure of sensitive staged audio
Risk Level: MediumVulnerable Code Snippet
markdown For local-file or AI-generated audio, also set: - `SLYBROADCAST_PUBLIC_AUDIO_BASE_URL` - `SLYBROADCAST_AUDIO_STAGING_DIR`Supporting behavior:
markdown - Local and AI-generated files are staged first and must be publicly reachable for Slybroadcast to fetch.Technical Analysis
The documented workflow requires local or AI-generated voicemail recordings to be placed in a publicly reachable staging location so that Slybroadcast can retrieve them. The skill documentation does not specify access controls, short-lived signed URLs, cryptographically unpredictable filenames, directory-listing restrictions, retention limits, or automatic deletion after retrieval.
Voicemail recordings may include personal, commercial, medical, appointment, or other confidential information. If staging URLs are predictable, disclosed through logs, retained in command histories, leaked by downstream services, or exposed through directory indexing, an unauthorized party could retrieve the audio.
The available project contains only documentation, so no implementation was available to determine whether safeguards exist outside the audited artifact. The finding therefore applies specifically to the insecure workflow and missing security requirements documented in this skill.
Attack Path
- A user supplies a local recording or requests AI generation of a voicemail containing sensitive information.
- The workflow writes the audio into
SLYBROADCAST_AUDIO_STAGING_DIR. - The file is exposed through
SLYBROADCAST_PUBLIC_AUDIO_BASE_URLso Slybroadcast can fetch it. - The staging URL or filename becomes available through predictable naming, directory listing, application logs, command history, shared telemetry, or downstream leakage.
- An unauthorized part ...[truncated 761 chars]
- Remediation
View remediation
Remediation Suggestions
- Use short-lived, single-purpose signed URLs rather than permanently public file URLs.
- Generate cryptographically random object names with sufficient entropy; never derive filenames from recipient numbers, campaign names, or message text.
- Disable directory listing and unauthenticated object enumeration on the staging service.
- Automatically delete staged audio immediately after confirmed retrieval or after a short expiration period.
- Apply a strict maximum retention period as a fallback for failed or abandoned campaigns.
- Prevent staging URLs and sensitive filenames from appearing in application logs, shell history, analytics, or error telemetry.
- Restrict accepted file types, validate media content, and serve files with explicit safe content types.
- Encrypt recordings at rest and use HTTPS for all retrieval operations.
- Document that public staging may expose sensitive material and obtain explicit user confirmation before publishing an audio file.
- Add implementation-level tests verifying URL expiration, non-enumerability, deletion, disabled directory indexing, and absence of sensitive URL logging.
