CVE-2026-41588 Overview
CVE-2026-41588 is a timing attack vulnerability in RELATE, a web-based courseware package maintained by inducer. The flaw resides in the check_sign_in_key() function within course/auth.py. Comparison of sign-in keys executes in non-constant time, allowing attackers to infer valid key material by measuring response timing differences across repeated requests. The issue affects all versions prior to commit 2f68e16 and is tracked under GitHub Security Advisory GHSA-78j7-9xr9-2728. The weakness is classified under [CWE-208] (Observable Timing Discrepancy) and [CWE-203] (Observable Discrepancy).
Critical Impact
Successful exploitation enables unauthorized authentication to RELATE courseware accounts, exposing confidentiality, integrity, and availability of course data.
Affected Products
- Inducer RELATE versions prior to commit 2f68e16
- course/auth.py module — check_sign_in_key() function
- All RELATE deployments using sign-in key authentication
Discovery Timeline
- 2026-05-08 - CVE-2026-41588 published to NVD
- 2026-05-12 - Last updated in NVD database
Technical Details for CVE-2026-41588
Vulnerability Analysis
The vulnerability stems from a non-constant-time comparison routine inside check_sign_in_key() in course/auth.py. When RELATE validates a user-supplied sign-in key, the comparison short-circuits on the first mismatched byte. Attackers measuring response latency across many authentication attempts can statistically distinguish correct prefix bytes from incorrect ones. Repeating this process across each byte position allows recovery of the full sign-in key without ever needing a valid credential.
The sign-in key mechanism in RELATE is used for passwordless authentication flows, so leakage of this value yields direct account takeover. Because the attack is network-based and requires no privileges or user interaction, any unauthenticated remote actor with reachability to the RELATE web application can attempt key recovery. Practical exploitation requires a stable network path and many requests to overcome jitter, which is reflected in the high attack complexity.
Root Cause
The root cause is the use of a standard equality comparison operator on secret material instead of a constant-time function such as Python's hmac.compare_digest(). Standard string and byte comparisons in Python terminate as soon as a differing element is found, producing measurable timing variation that correlates with the number of matching leading bytes.
Attack Vector
An unauthenticated remote attacker submits crafted sign-in key candidates to the RELATE authentication endpoint and records server response timings. By iteratively varying each byte and selecting the candidate that yields the longest response time, the attacker reconstructs the valid key. The vulnerability is patched in commit 2f68e16 by replacing the vulnerable comparison with a constant-time check.
// No verified exploitation code is published.
// Reference the GitHub Security Advisory GHSA-78j7-9xr9-2728
// for additional technical context.
Detection Methods for CVE-2026-41588
Indicators of Compromise
- High volumes of failed sign-in attempts from a single source IP or distributed set of IPs targeting RELATE authentication endpoints.
- Authentication requests with sign-in keys that incrementally vary by a single byte across consecutive requests.
- Successful sign-in events following long sequences of failed attempts against the same user identifier.
Detection Strategies
- Instrument the RELATE authentication path to log request timing, source IP, and outcome for every sign-in key validation.
- Alert on statistical anomalies in request rate or latency distributions tied to check_sign_in_key() invocations.
- Correlate web server access logs with application authentication logs to identify brute-force or timing-probe patterns.
Monitoring Recommendations
- Deploy rate limiting and lockout thresholds on the sign-in endpoint and monitor for sustained violations.
- Track unusual geographic or ASN distribution of authentication traffic against RELATE deployments.
- Review GitHub Security Advisory GHSA-78j7-9xr9-2728 for updated indicators.
How to Mitigate CVE-2026-41588
Immediate Actions Required
- Upgrade RELATE to a build that includes commit 2f68e16 or later from the inducer/relate repository.
- Invalidate and reissue active sign-in keys for all users after patching to remove any keys that may have been recovered.
- Audit authentication logs for repeated sign-in key probing prior to the upgrade.
Patch Information
The vulnerability is fixed in upstream commit 2f68e16cd3b96d25c188c1aa3f7e13cdb15cdaeb, which replaces the timing-variable comparison in check_sign_in_key() with a constant-time equality check. See the GitHub commit details and the GHSA-78j7-9xr9-2728 advisory for complete remediation guidance.
Workarounds
- Enforce strict rate limiting and request throttling on the RELATE sign-in endpoint to raise the cost of timing measurements.
- Place the RELATE application behind a reverse proxy that adds randomized response delays for authentication failures.
- Restrict access to the RELATE instance to trusted networks or VPNs until the patch is applied.
# Update RELATE to a patched revision
git fetch origin
git checkout 2f68e16cd3b96d25c188c1aa3f7e13cdb15cdaeb
# Restart the RELATE service after deployment
systemctl restart relate
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

