CVE-2024-39700

9.9 CRITICAL

📋 TL;DR

This CVE describes a remote code execution vulnerability in JupyterLab extension template's GitHub Actions workflow. Attackers can execute arbitrary code on GitHub runners when repositories use the vulnerable template with test options. Extension authors hosting code on GitHub are primarily affected.

💻 Affected Systems

Products:
  • JupyterLab extension template
Versions: Template versions with test option enabled, particularly prior to fix
Operating Systems: Any (GitHub Actions runners)
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects repositories created with the template's test option that include update-integration-tests.yml workflow.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of GitHub runner environment leading to repository takeover, credential theft, and lateral movement to connected systems.

🟠

Likely Case

Unauthorized code execution in GitHub Actions workflows, potentially leading to repository manipulation or data exfiltration.

🟢

If Mitigated

No impact if template is upgraded or vulnerable workflow is disabled.

🌐 Internet-Facing: HIGH - GitHub repositories are internet-accessible and workflows can be triggered via pull requests.
🏢 Internal Only: LOW - Primarily affects public GitHub repositories; private repositories have reduced attack surface.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires creating a malicious pull request against vulnerable repositories.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Template version with commit 035e78c1c65bcedee97c95bb683abe59c96bc4e6

Vendor Advisory: https://github.com/jupyterlab/extension-template/security/advisories/GHSA-45gq-v5wm-82wg

Restart Required: No

Instructions:

1. Upgrade template to latest version. 2. Overwrite update-integration-tests.yml file. 3. Re-apply custom changes if needed. 4. Rebase open pull requests from untrusted users.

🔧 Temporary Workarounds

Disable GitHub Actions

all

Temporarily disable GitHub Actions while upgrading template

Remove vulnerable workflow

all

Delete or disable update-integration-tests.yml workflow file

rm .github/workflows/update-integration-tests.yml

🧯 If You Can't Patch

  • Disable GitHub Actions entirely
  • Require manual approval for all workflow runs
  • Restrict repository access to trusted users only

🔍 How to Verify

Check if Vulnerable:

Check if .github/workflows/update-integration-tests.yml exists in repository created from JupyterLab extension template

Check Version:

Check template version in copier.yml or repository creation metadata

Verify Fix Applied:

Verify update-integration-tests.yml has been updated to latest version or removed

📡 Detection & Monitoring

Log Indicators:

  • Unexpected GitHub Actions workflow executions
  • Suspicious commands in workflow logs
  • Unauthorized repository modifications

Network Indicators:

  • Unusual outbound connections from GitHub runners
  • Unexpected API calls to repository

SIEM Query:

source="github-actions" AND (workflow="update-integration-tests" OR command="curl|wget|bash" FROM untrusted)

🔗 References

📤 Share & Export