Safeguard
Vulnerability Analysis•

CVE-2023-25574: Critical JWT Signature Bypass in JupyterHub LTI

CVE-2023-25574 is a critical JWT signature bypass in jupyterhub-ltiauthenticator 1.3.0, which skipped signature checks. Upgrade to 1.4.0 or newer.

Safeguard Security Team
3 min read

CVE-2023-25574 is a critical flaw (CVSS 10.0) in jupyterhub-ltiauthenticator 1.3.0. Its LTI13Authenticator did not validate JWT signatures, so a forged request could be accepted. The GitHub advisory lists patched versions as 1.4.0 and later, which removes that class. There is no workaround.

What's affected

The GitHub advisory GHSA-mcgx-2gcr-p3hp lists the pip package jupyterhub-ltiauthenticator, affected version 1.3.0 only, patched in 1.4.0 and above. Only installations that configured JupyterHub to use the LTI13Authenticator class are affected.

The CVE record says version 1.4.0 removes LTI13Authenticator to address the issue, and that no known workarounds exist. The project changelog lists 1.4.0 with a date of 1 March 2023. If you need LTI 1.3 sign in, check the project's newer release notes for how it is supported now.

How to check if you're exposed

List the installed version in the Python environment that runs JupyterHub:

pip show jupyterhub-ltiauthenticator
pip list | grep -i ltiauthenticator

Then look in your jupyterhub_config.py for the authenticator class in use. If it names LTI13Authenticator, and the version is 1.3.0, you are in the affected case. If you use the older LTI11 authenticator, this advisory does not describe your setup.

For container deployments, run the same pip command inside the hub image. A dependency inventory helps here because the package is often pulled in by a base image rather than by your own requirements file. The free dependency scan at gold.safeguard.sh/scan reads a lockfile or manifest in your browser and lists known issues.

What to do now

  1. Find every JupyterHub deployment that uses jupyterhub-ltiauthenticator, including course and training instances.
  2. Upgrade to 1.4.0 or newer. Read the release notes if you depend on LTI 1.3 behaviour, since 1.4.0 removes the affected class.
  3. Rebuild and redeploy hub images so the new version is actually running.
  4. Review user lists and logs for accounts you do not recognise, because a forged launch can create or access user identities.
  5. Rotate any tokens or secrets stored on notebook servers that you cannot account for.

Why it matters

The weakness is improper verification of a cryptographic signature (CWE-347). LTI 1.3 launches carry a JSON Web Token that proves the learning platform sent the request. If the server never checks the signature, anyone can write their own token, and the server will believe it. The advisory says this is believed to let a forged request be authorised for existing and new user identities.

The CVSS score is the maximum of 10.0 because the attack needs no login, no user action and low complexity, and because a compromised hub gives access to notebook servers that run user code. Notebook environments often hold data, credentials and cloud access. The CVE is not on the CISA Known Exploited Vulnerabilities list.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Am I affected if I never used LTI sign in?

No. The advisory says only installations configured to use LTI13Authenticator are affected.

Is there a workaround?

No known workaround exists. Upgrade to 1.4.0 or later.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.