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.
Published: 2026-10-01
Score: 9.4 Critical
EPSS: < 1% Very Low
KEV: No
Impact: Arbitrary File Write with potential for remote code execution on the teacher’s machine
Action: Immediate Patch
AI Analysis

Impact

Classroom 50 writes autograde artifacts into the directory that it clones from each student’s repository. Because the write operation follows symbolic links, a student can embed a symlink in result.json or results.json that points to a sensitive file on the teacher’s machine. The tool then overwrites that file with attacker‑controlled data, enabling the attacker to inject arbitrary content such as a malicious SSH key, a cron job, or scripts that are later executed by Git. The teacher’s gh token has organization‑wide admin privileges, making the malicious file writes a path to remote code execution with high privilege.

Affected Systems

The vulnerability applies to the Foundation50 Classroom 50 tool prior to version 1.11.0. Any installation that runs the gh teacher download command against student repositories hosted on GitHub is affected. The tool is typically deployed on a teacher’s workstation or CI environment that has access to the organization‑wide gh token.

Risk and Exploitability

The CVSS base score of 9.4 denotes critical severity. The EPSS score is not provided, so current exploitation probability is unknown, but the vulnerability has been publicly disclosed and the KEV catalog does not list it, indicating it may not yet be actively exploited. The attack requires a student who can commit a repository with a symlinked result.json file; the teacher triggers gh teacher download. This is a local‑host attack from the teacher’s machine that could lead to complete compromise of the teacher’s system or organization. It is considered high risk for environments where student repositories are not fully trusted.

Generated by OpenCVE AI on October 1, 2026 at 18:22 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the official patch by upgrading to Classroom 50 version 1.11.0 or later.
  • Run gh teacher download within a sandboxed environment that has no write permissions to critical files or no network access to the organization.
  • Before triggering the artifact‑refresh step, programmatically scan the cloned repository for symlinked result.json or results.json files and reject the pull if any are found.

Generated by OpenCVE AI on October 1, 2026 at 18:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 02 Oct 2026 15:15:00 +0000

Type Values Removed Values Added
First Time appeared Foundation50
Foundation50 classroom50
Vendors & Products Foundation50
Foundation50 classroom50

Thu, 01 Oct 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Thu, 01 Oct 2026 16:00:00 +0000

Type Values Removed Values Added
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.
Title Classroom 50 vulnerable to arbitrary file overwrite on the teacher's machine via symlink in a student repo (gh teacher download)
Weaknesses CWE-22
CWE-59
References
Metrics cvssV4_0

{'score': 9.4, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H'}


Subscriptions

Foundation50 Classroom50
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-01T16:18:58.240Z

Reserved: 2026-09-21T21:32:23.742Z

Link: CVE-2026-94620

cve-icon Vulnrichment

Updated: 2026-10-01T16:18:48.137Z

cve-icon NVD

Status : Deferred

Published: 2026-10-01T16:18:08.550

Modified: 2026-10-02T18:47:49.947

Link: CVE-2026-94620

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-02T14:50:05Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

  • CWE-59

    Improper Link Resolution Before File Access ('Link Following')