T05 · Unauthorized Access and Privilege Escalation
- Location
assets/github-actions.yml:13- Finding
Overprivileged Classic GitHub Personal Access Token
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill largely does what it claims, but it asks for an overly broad GitHub token and includes public-facing code with security weaknesses that should be reviewed before use.
Review before installing. Use a fine-grained PAT or GitHub App limited to the single public site repo, avoid publishing raw sensitive commit messages, fix the dashboard rendering to use textContent or strict sanitization, and add rate limits/moderation plus clear privacy disclosure for idea submissions and voting.
assets/github-actions.yml:13Overprivileged Classic GitHub Personal Access Token
assets/build.html:884Stored DOM Cross-Site Scripting Through Untrusted status.json Fields
scripts/ideas-api.js:65Unauthenticated Ideas API Permits Spam, Vote Manipulation, and Storage Exhaustion
Referenced artifact was not completely inspected
In `assets/build.html`, search for these TODOs:
Referenced artifact was not completely inspected
In `assets/build.html`, search for these TODOs:
Referenced artifact was not completely inspected
In `assets/build.html`, search for these TODOs:
Referenced artifact was not completely inspected
In `assets/build.html`, search for these TODOs:
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- TODO: Replace YOUR_PROJECT_NAME throughout this file -->
<title>The Build — YOUR_PROJECT_NAME</title>
<meta name="description" content="Watch YOUR_PROJECT_NAME being built in real time. Live progress, shipped features, community ideas.">
<link rel="preconnect" href="https://fonts.googleapis.com">
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.
<!-- ══════════════════════════════════════════════════════════ -->
<!-- SECTION 2: SHIPPED LOG + UP NEXT QUEUE -->
<!-- ══════════════════════════════════════════════════════════ -->
<section class="section">
<div class="two-col">
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# 5. (Optional) Deploys the public site to Fly.io
#
# Required secrets (Settings → Secrets and variables → Actions):
# GH_PAT — GitHub Personal Access Token with "repo" scope
# (needs write access to the public site repo)
# FLY_API_TOKEN — (optional) Fly.io API token, only if deploying via Fly
#
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
# 5. (Optional) Deploys the public site to Fly.io
#
# Required secrets (Settings → Secrets and variables → Actions):
# GH_PAT — GitHub Personal Access Token with "repo" scope
# (needs write access to the public site repo)
# FLY_API_TOKEN — (optional) Fly.io API token, only if deploying via Fly
#
The guide instructs users to create a classic personal access token with repo scope, which is a powerful credential covering private repository operations. In the context of a workflow that checks out a private repo and pushes to another repo, compromise of that secret could allow code tampering, repository access, or lateral movement across repositories accessible by the token.
| Secret | Value |
|--------|-------|
| `GH_PAT` | A Personal Access Token (classic) with **`repo`** scope. Create at: github.com/settings/tokens |
| `FLY_API_TOKEN` | (optional) Fly.io API token — only if you deploy via Fly |
**Create a PAT:**
The step-by-step instruction to generate a classic PAT with repo scope normalizes creation of an overprivileged credential without warning about blast radius. Because this guide is for automating cross-repository updates from a private repository, the token becomes especially sensitive: misuse could expose private code history or permit unauthorized writes to repositories the token can access.
| `FLY_API_TOKEN` | (optional) Fly.io API token — only if you deploy via Fly |
**Create a PAT:**
1. github.com → Settings → Developer settings → Personal access tokens → Tokens (classic)
2. Generate new token → select `repo` scope → copy the value
3. Add as `GH_PAT` secret in your private repo
The skill explicitly promotes publishing metadata derived from a private repository to a public dashboard, but it does not warn users that commit messages, timing, cadence, and activity patterns can disclose sensitive operational or business information. Even without source exposure, commit metadata can reveal internal project names, features in progress, incident response activity, or release timing to competitors and attackers.
The skill tells users to create a Personal Access Token with broad repo scope, but gives no warning about the sensitivity of that credential or the risks if it is exfiltrated from GitHub Actions or misconfigured. A compromised PAT with repo scope can enable unauthorized reads/writes across repositories accessible to the token, leading to code tampering, data exposure, or supply-chain compromise.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
async function fetchCoin() {
if (!COIN_CA || COIN_CA === 'YOUR_COIN_CA') return;
try {
const r = await fetch(`https://api.dexscreener.com/latest/dex/tokens/${COIN_CA}`);
const d = await r.json();
const p = d.pairs?.[0];
if (!p) return;
The page sends user-provided idea text and optional handle to a configurable external API endpoint without any in-UI notice, consent flow, or explanation of where the data goes. While this is not code execution, it is a real privacy and data-transmission issue because users may submit identifying or sensitive content under the assumption it stays local to the site.
The guide explicitly instructs users to create a classic GitHub PAT with broad repo scope and store it as a repository secret, but it does not emphasize least privilege, token rotation, or safer alternatives like the built-in GITHUB_TOKEN or a fine-grained PAT limited to a single repository. If that token is exposed through workflow misuse, logging, or a compromised action, it could grant broad access to private repositories and enable unauthorized code changes or data exposure.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
Then deploy: `fly deploy --remote-only --depot=false`
To also auto-deploy via GitHub Actions, uncomment the Fly deploy step in the workflow and add `FLY_API_TOKEN` to secrets.
### Option B: Netlify
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
Then deploy: `fly deploy --remote-only --depot=false`
To also auto-deploy via GitHub Actions, uncomment the Fly deploy step in the workflow and add `FLY_API_TOKEN` to secrets.
### Option B: Netlify
The code explicitly formats dates with the 'en-US' locale, which imposes a specific language/locale choice on all users. The policy requires either user opt-in/choice or a clearly documented justification for locale constraints.
Clicking the vote button causes a POST request to an external API, transmitting user interaction data without informing the user. The transmitted data is limited, but it still reveals behavior and can contribute to tracking or profiling when combined with server logs or IP data.
This code performs a DOM write by assigning a constructed HTML string to nav.innerHTML. Under the code-file warning rule, file writes or similar state-changing operations should have some visible disclosure, comment, or documented warning; while the file is commented generally, it does not explicitly warn that it injects markup into the page at runtime.
Detected: suspicious.dangerous_exec