CVE-2026-94620: CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in foundation50 classroom50
Classroom 50 is a free and open-source tool for managing and grading programming assignments via GitHub. Prior to version 1.11.0, `gh teacher download` clones each student's assignment repository and then writes autograde artifacts (`result.json` and `results.json`) into the just-cloned working tree. The write followed symlinks, so a student who committed `result.json` or `results.json` as a **symlink** (materialized verbatim by `git clone`) could redirect the teacher's write to an arbitrary path — e.g. `~/.zshrc`, `~/.ssh/authorized_keys`, a cron file, or an in-clone `.git/hooks/*` file that git subsequently executes. The written bytes are attacker-controlled (the student's uploaded release asset for `result.json`; student-chosen submit-tag names for `results.json`). This is an arbitrary file write leading to code execution as the teacher, whose `gh` token carries `admin:org`, `repo`, and `workflow` across the entire classroom organization. Version 1.11.0 contains a patch. Some workarounds are available. Avoid running `gh teacher download` against untrusted student repositories, or run it inside a disposable sandbox / container with no access to sensitive host files or credentials. Inspect cloned trees for symlinked, hardlinked, or special (`result.json`/`results.json`) entries before allowing the artifact-refresh step to run.
AI Analysis
Technical Summary
The vulnerability in classroom50 (CVE-2026-94620) is an improper limitation of pathname to a restricted directory (CWE-22) that allows arbitrary file write via symlink following. The `gh teacher download` command clones student assignment repositories and writes autograde artifacts (`result.json` and `results.json`) into the cloned working tree. If these files are symlinks, the tool writes to the symlink target paths, which can be arbitrary files such as shell configuration files, SSH authorized keys, cron files, or Git hooks. The attacker controls the content written, enabling code execution as the teacher. The teacher's `gh` token has broad privileges including `admin:org`, `repo`, and `workflow`. The issue is patched in version 1.11.0. Mitigations include sandboxing and manual inspection of cloned repositories.
Potential Impact
Successful exploitation allows an attacker (a student) to write arbitrary files on the teacher's system with the privileges of the teacher user. This can lead to code execution, unauthorized modification of sensitive files, and compromise of the teacher's GitHub organization credentials and workflows. The vulnerability is critical with a CVSS 4.0 score of 9.4, reflecting network attack vector, low attack complexity, no privileges required, user interaction needed, and high impact on confidentiality, integrity, availability, and security requirements.
Mitigation Recommendations
Version 1.11.0 of classroom50 contains an official patch that fixes this vulnerability. Users should upgrade to version 1.11.0 or later. Until patched, avoid running `gh teacher download` on untrusted student repositories. If necessary, run the command inside a disposable sandbox or container that restricts access to sensitive host files and credentials. Additionally, inspect cloned repositories for symlinked, hardlinked, or special files named `result.json` or `results.json` before proceeding with artifact writes.
CVE-2026-94620: CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') in foundation50 classroom50
Description
Classroom 50 is a free and open-source tool for managing and grading programming assignments via GitHub. Prior to version 1.11.0, `gh teacher download` clones each student's assignment repository and then writes autograde artifacts (`result.json` and `results.json`) into the just-cloned working tree. The write followed symlinks, so a student who committed `result.json` or `results.json` as a **symlink** (materialized verbatim by `git clone`) could redirect the teacher's write to an arbitrary path — e.g. `~/.zshrc`, `~/.ssh/authorized_keys`, a cron file, or an in-clone `.git/hooks/*` file that git subsequently executes. The written bytes are attacker-controlled (the student's uploaded release asset for `result.json`; student-chosen submit-tag names for `results.json`). This is an arbitrary file write leading to code execution as the teacher, whose `gh` token carries `admin:org`, `repo`, and `workflow` across the entire classroom organization. Version 1.11.0 contains a patch. Some workarounds are available. Avoid running `gh teacher download` against untrusted student repositories, or run it inside a disposable sandbox / container with no access to sensitive host files or credentials. Inspect cloned trees for symlinked, hardlinked, or special (`result.json`/`results.json`) entries before allowing the artifact-refresh step to run.
CVSS v4.0
Score 9.4critical
Affected software
foundation50
classroom50
pkg:github/foundation50/classroom50Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability in classroom50 (CVE-2026-94620) is an improper limitation of pathname to a restricted directory (CWE-22) that allows arbitrary file write via symlink following. The `gh teacher download` command clones student assignment repositories and writes autograde artifacts (`result.json` and `results.json`) into the cloned working tree. If these files are symlinks, the tool writes to the symlink target paths, which can be arbitrary files such as shell configuration files, SSH authorized keys, cron files, or Git hooks. The attacker controls the content written, enabling code execution as the teacher. The teacher's `gh` token has broad privileges including `admin:org`, `repo`, and `workflow`. The issue is patched in version 1.11.0. Mitigations include sandboxing and manual inspection of cloned repositories.
Potential Impact
Successful exploitation allows an attacker (a student) to write arbitrary files on the teacher's system with the privileges of the teacher user. This can lead to code execution, unauthorized modification of sensitive files, and compromise of the teacher's GitHub organization credentials and workflows. The vulnerability is critical with a CVSS 4.0 score of 9.4, reflecting network attack vector, low attack complexity, no privileges required, user interaction needed, and high impact on confidentiality, integrity, availability, and security requirements.
Mitigation Recommendations
Version 1.11.0 of classroom50 contains an official patch that fixes this vulnerability. Users should upgrade to version 1.11.0 or later. Until patched, avoid running `gh teacher download` on untrusted student repositories. If necessary, run the command inside a disposable sandbox or container that restricts access to sensitive host files and credentials. Additionally, inspect cloned repositories for symlinked, hardlinked, or special files named `result.json` or `results.json` before proceeding with artifact writes.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- GitHub_M
- Date Reserved
- 2026-09-21T21:32:23.742Z
- Cvss Version
- 4.0
- State
- PUBLISHED
Threat ID: 6abe83eca43b0b3b89c47def
Added to database: 10/01/2026, 16:01:48 UTC
Last enriched: 10/01/2026, 16:16:03 UTC
Last updated: 10/01/2026, 17:06:37 UTC
Views: 56
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.