T09 · Insecure Skill Coding Practices
- Location
SKILL.md:38- Finding
Plaintext Storage of Long-Lived Social Media Credentials
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent social-media posting guide, but it asks users to store long-lived account credentials in local plaintext files and gives live public-posting examples without enough safety guidance.
Review carefully before installing or following this skill. Use a test account first, avoid public posting until you verify the target account and visibility, and do not store long-lived tokens in the project directory unless you add strict file permissions, git exclusions, and a rotation or revocation plan.
SKILL.md:38Plaintext Storage of Long-Lived Social Media Credentials
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- An Instagram account with **Creator** or **Business** status.
- A Facebook Page connected to your Instagram account.
- A Facebook App with the necessary permissions: `instagram_basic`, `instagram_content_publish`, `pages_show_list`, `pages_read_engagement`.
- A long-lived **User Access Token** from your Facebook App.
2. **Credential Files**:
Create the following files inside the `{baseDir}/credentials/` directory:
The documentation instructs users to paste a long-lived Instagram access token into a plain local file in {baseDir}/credentials/. Storing high-value long-lived tokens in plaintext materially increases the chance of credential theft from filesystem access, accidental commits, backups, or other local compromise, which could enable unauthorized posting and account misuse.
2. **Credential Files**:
Create the following files inside the `{baseDir}/credentials/` directory:
- `instagram_user_access_token`: Paste your long-lived User Access Token into this file.
- `instagram_account_id`: Paste your Instagram Account ID into this file.
### 1.2 YouTube Setup
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
bash {baseDir}/run.sh auth --platform youtube
```
Follow the on-screen instructions to log in with your Google account and grant permission. This will create a `youtube_credentials.json` file in the `{baseDir}/credentials/` directory.
---
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
The YouTube access token expires periodically. The script attempts to refresh it automatically, but you can also trigger a manual refresh if needed.
bash {baseDir}/run.sh auth --platform youtube --refresh
Referenced artifact was not completely inspected
This `SKILL.md` is the user-facing documentation. The actual logic would be implemented in a `run.sh` script that parses the arguments and calls the appropriate
The documentation promotes automatic posting to Instagram and YouTube but does not prominently warn that commands can publish to live accounts and make content publicly visible. This increases the risk of accidental posting, reputational harm, or unintended disclosure, especially because the examples include real publishing actions and a public privacy setting for YouTube.
The setup instructions tell users to store long-lived access tokens and OAuth credential files under a local credentials directory without any security guidance. This is dangerous because such files can be exposed through weak file permissions, backups, logs, source control, or multi-user systems, leading to takeover of connected social-media accounts.
No suspicious patterns detected.