T09 · Insecure Skill Coding Practices
- Location
references/examples.md:615- Finding
Tableau credentials can be transmitted to a caller-controlled endpoint
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This analytics skill is coherent and not malicious, but its examples include unsafe credential, database, and outbound automation patterns that need review before use.
Review and harden the examples before using them in a real environment. Use managed secrets, pinned dependencies, HTTPS and host allowlists for Tableau, read-only least-privilege warehouse roles, validated table and column allowlists, and explicit approval before refreshes, production dbt runs, or email alerts.
references/examples.md:615Tableau credentials can be transmitted to a caller-controlled endpoint
references/examples.md:690Tableau password is hard-coded in an executable example
references/examples.md:866Snowflake password is hard-coded in the monitoring example
references/examples.md:798Unvalidated identifiers permit SQL injection in Snowflake monitoring queries
references/examples.md:730CI installs unpinned third-party Python dependencies
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
dbt docs generate --target ci
dbt docs serve --port 8080 &
sleep 10
curl http://localhost:8080
- name: Data quality checks
run: |
The markdown presents code that authenticates to an external service and performs refresh operations using credentials, but the surrounding documentation does not warn that the example performs outbound authenticated requests. This omission is dangerous because users may treat the file as harmless reference material while it demonstrates high-trust patterns that can move data or trigger actions outside the local analytics environment.
The example adds active control over an external BI platform via authenticated HTTP API calls, which materially expands the skill from analytics modeling into remote service operation. Even as sample code, it normalizes credential handling and outbound actions that could be copied into agent behavior without clear scoping or user consent, increasing the risk of unauthorized external actions.
This line performs an outbound authenticated HTTP POST carrying credentials to an external service. In context, that is expected for Tableau automation, but it still represents external transmission of sensitive data and is risky when included in a general analytics skill because it can be copied into environments without proper disclosure, secret handling, or approval controls.
}
}
response = requests.post(auth_url, json=payload)
response.raise_for_status()
auth_data = response.json()
The code invokes local subprocesses to execute dbt commands, introducing command-execution capability beyond passive analytics guidance. In an agent-skill context, examples that run tools locally can be operationalized into unintended host actions, especially if later adapted to accept variable command arguments or targets.
The example combines direct database access with SMTP alerting but does not disclose those capabilities in the markdown narrative. In a skill repository, undocumented access and communication behaviors reduce operator awareness and make it easier for copied code to be deployed with sensitive connectivity and exfiltration-adjacent functionality.
The monitoring example includes SMTP email sending, which adds an external communications channel unrelated to the stated core analytics-engineering scope. In agent settings, outbound messaging can leak operational metadata, trigger spam/alert abuse, or be repurposed for unauthorized notification workflows if not explicitly disclosed and controlled.