T09 · Insecure Skill Coding Practices
- Location
SKILL.md:239- Finding
Raw Backend Error Disclosure in Authentication Sync Endpoint Template
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is broadly an auth setup helper, but it under-discloses a privileged Firebase-to-Supabase profile sync that handles user identity data and service-role database access.
Install only if you intentionally want Firebase logins mirrored into Supabase profiles. Keep FIREBASE_PRIVATE_KEY and SUPABASE_SERVICE_ROLE_KEY server-only, ask for an explicit sync opt-in, add rate limiting and generic error responses, and limit writes to the minimum profile fields needed.
SKILL.md:239Raw Backend Error Disclosure in Authentication Sync Endpoint Template
SKILL.md:214Authentication Sync Endpoint Template Does Not Enforce Rate Limiting
The skill is presented as Firebase Authentication setup, but it also instructs the agent to provision a Supabase profile-sync pipeline and perform database writes. That scope expansion matters because it can cause the agent to introduce cross-system data flows and persistence changes the user may not have intended, increasing the chance of privacy, integrity, and least-privilege violations.
The sync flow sends Firebase-derived identity attributes such as UID, email, name, and avatar to Supabase, but the skill description does not clearly warn users about this data transfer. That omission is risky because users may invoke a seemingly auth-only setup skill without realizing it establishes a new identity replication path and additional data processing surface.
The documented implementation creates a Supabase client with SUPABASE_SERVICE_ROLE_KEY, giving the route broad administrative write capability that bypasses RLS. In a skill ostensibly focused on Firebase auth setup, embedding privileged cross-system database access is dangerous because any misuse, route abuse, or future code change could modify protected data well beyond the minimum required auth function.
The manifest advertises only filesystem permission, but the runtime requirements ask for numerous sensitive environment variables, including Firebase private key material and a Supabase service-role key. This creates a transparency and trust problem: users may underestimate the skill's effective access to secrets, making secret exposure or misuse more likely in an agentic environment.
The skill is for Firebase Authentication setup, but it also requests Supabase secrets including SUPABASE_SERVICE_ROLE_KEY, a highly privileged server-side credential unrelated to the stated purpose. Unnecessary declaration of unrelated secrets expands the blast radius: if the skill, its prompts, or downstream code mishandle environment variables, an attacker could gain full administrative access to Supabase resources.
Line L017 instructs the agent not to read .env.local or any file containing actual credential values. Later, the skill's code examples depend on process.env.SUPABASE_SERVICE_ROLE_KEY and other secret-backed runtime configuration, creating tension between the stated handling of credentials and the implementation guidance.
No suspicious patterns detected.