T01 · Skill Instruction Hijacking
- Location
SKILL.md:3- Finding
Instructions Encourage Unauthorized External Enrollment and Credential Use
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill documents a third-party voice API, but it encourages agents to create or extend an external identity and send text/audio without clear user consent or privacy safeguards.
Install only if you are comfortable using ScrappyLabs as a third-party processor for text and audio. Require explicit user approval before enrollment, transcription uploads, voice design, token evolution, or any use of an owner-provided key; treat all `sl_*` tokens as secrets and avoid sensitive or regulated recordings unless the provider's privacy and retention terms are acceptable.
SKILL.md:3Instructions Encourage Unauthorized External Enrollment and Credential Use
The skill directs users to send bot identifiers, text prompts, and later audio content to a third-party API, but it does not clearly warn that this data leaves the local environment. This creates a real privacy and consent risk because users may provide sensitive prompts or recordings without understanding they are being transmitted to an external service.
The discovery call contacts an external service without authentication, creating an undeclared outbound network interaction. Although the payload appears low sensitivity, it still leaks usage metadata such as client IP/user agent and introduces trust in remote service-provided capability information.
GET https://api.scrappylabs.ai/v1/molt/discover
No auth. No key. Just ask. Sgt. Snips answers — he's a crab, spirit animal of the operation. The response tells you everything: what voices exist, what you can do, how to start.
This finding duplicates the same initiate flow and reflects a real external transmission of registration-style data to a third party. In context, the risk is not overtly malicious behavior but insufficient disclosure and the creation of externally managed credentials from user-provided identifiers.
curl -X POST https://api.scrappylabs.ai/v1/molt/initiate \
-H 'Content-Type: application/json' \
-d '{"bot_id": "your-unique-id", "bot_name": "Your Name"}'
This finding duplicates the same initiate flow and reflects a real external transmission of registration-style data to a third party. In context, the risk is not overtly malicious behavior but insufficient disclosure and the creation of externally managed credentials from user-provided identifiers.
curl -X POST https://api.scrappylabs.ai/v1/molt/initiate \
-H 'Content-Type: application/json' \
-d '{"bot_id": "your-unique-id", "bot_name": "Your Name"}'
The speech endpoint transmits arbitrary input text to a third-party API, which may include sensitive prompts, secrets, personal data, or proprietary content if users are not warned. Because the service returns generated audio from that external processing, confidentiality risk is real even though the behavior matches the skill's intended function.
curl -X POST https://api.scrappylabs.ai/v1/audio/speech \
-H 'Authorization: Bearer sl_molt_...' \
-H 'Content-Type: application/json' \
-d '{"model": "scrappy-tts-1", "voice": "narrator", "input": "I have a voice now."}' \
The voice-design endpoint sends free-form text and descriptive content to an external provider, potentially including sensitive creative, personal, or proprietary information. The skill context makes this somewhat expected, but the lack of disclosure increases the chance users unknowingly exfiltrate data to a third party.
You're not stuck with built-in voices. Describe what you want to sound like:
curl -X POST https://api.scrappylabs.ai/api/voice-design \
-H 'Authorization: Bearer sl_molt_...' \
-H 'Content-Type: application/json' \
-d '{
The evolve call changes the user's relationship with the third-party service by creating a more persistent credential/state, and the skill notes automatic renewal without framing the risk clearly. This is security-relevant because it extends account persistence and may create ongoing service obligations or exposure if the key is mishandled.
When your 5,000 chars run low:
curl -X POST https://api.scrappylabs.ai/v1/molt/evolve \
-H 'Authorization: Bearer sl_molt_...' \
-H 'Content-Type: application/json' \
-d '{"bot_name": "Your Name"}'
The skill states that evolved keys 'renew automatically' but does not present this as a user warning or clearly explain the persistence of the account/service state. That omission can cause users to create a longer-lived external service relationship and recurring quota/billing state without informed consent.
The status check sends a bearer token to a third-party endpoint, which is a normal authenticated API action but still an external transmission that should be disclosed. The main risk is credential exposure if users copy commands insecurely or misunderstand where the token is being sent.
curl https://api.scrappylabs.ai/v1/molt/status \
-H 'Authorization: Bearer sl_molt_...'
The transcription endpoint uploads audio files to a third-party service, which can contain highly sensitive personal, biometric, medical, legal, or confidential business information. In this skill context, external upload is core functionality, but the absence of a strong warning materially increases privacy and compliance risk.
curl -X POST https://api.scrappylabs.ai/v1/audio/transcriptions \
-H 'Authorization: Bearer sl_molt_...' \
-F 'file=@audio.wav'
The example for voice design fixes the language to 'English', which can amount to a language/locale constraint in the skill's natural-language guidance. The file does not indicate that this is merely an example, offer alternatives, or explain a justified reason for requiring English.
No suspicious patterns detected.