PYSEC-2026-3052
Vulnerability from pysec - Published: 2026-07-13 14:36 - Updated: 2026-07-13 16:06
VLAI
Details
An issue in OpenFUN Richie (LMS) in src/richie/apps/courses/api.py. The application used the non-constant time == operator for HMAC signature verification in the sync_course_run_from_request function. This allows remote attackers to forge valid signatures and bypass authentication by measuring response time discrepancies.
Severity
4.8 (Medium)
Impacted products
| Name | purl | richie | pkg:pypi/richie |
|---|
Aliases
{
"affected": [
{
"package": {
"ecosystem": "PyPI",
"name": "richie",
"purl": "pkg:pypi/richie"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.3.0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"0.1.0",
"1.0.0",
"1.0.0b0",
"1.0.0b1",
"1.0.0b2",
"1.0.0b3",
"1.0.0b4",
"1.0.0b5",
"1.0.0b6",
"1.0.0b7",
"1.0.0b8",
"1.0.0b9",
"1.0.1",
"1.1.0",
"1.10.0",
"1.11.0",
"1.12.0",
"1.12.1",
"1.13.0",
"1.14.0",
"1.14.1",
"1.15.0",
"1.16.0",
"1.16.1",
"1.16.2",
"1.17.0",
"1.2.0",
"1.3.0",
"1.4.0",
"1.4.1",
"1.5.0",
"1.5.1",
"1.5.2",
"1.6.0",
"1.6.1",
"1.7.0",
"1.7.1",
"1.7.2",
"1.7.3",
"1.8.0",
"1.8.1",
"1.8.2",
"1.8.3",
"1.9.0",
"1.9.1",
"1.9.2",
"2.0.0",
"2.0.0b0",
"2.0.0b1",
"2.0.0b11",
"2.0.0b12",
"2.0.0b13",
"2.0.0b14",
"2.0.0b15",
"2.0.0b16",
"2.0.0b17",
"2.0.0b18",
"2.0.0b19",
"2.0.0b2",
"2.0.0b20",
"2.0.0b21",
"2.0.0b22",
"2.0.0b3",
"2.0.0b4",
"2.0.0b5",
"2.0.0b6",
"2.0.0b7",
"2.0.0b8",
"2.0.0b9",
"2.0.1",
"2.1.0",
"2.10.0",
"2.11.0",
"2.12.0",
"2.13.0",
"2.14.0",
"2.14.1",
"2.15.0",
"2.15.1",
"2.16.0",
"2.17.0",
"2.18.0",
"2.19.0",
"2.2.0",
"2.20.0",
"2.20.1",
"2.21.0",
"2.21.1",
"2.22.0",
"2.23.0",
"2.24.0",
"2.24.1",
"2.25.0",
"2.25.1",
"2.26.0",
"2.27.0",
"2.28.0",
"2.28.1",
"2.29.0",
"2.29.1",
"2.29.2",
"2.3.0",
"2.3.1",
"2.3.2",
"2.3.3",
"2.30.0",
"2.31.0",
"2.32.0",
"2.33.0",
"2.34.0",
"2.4.0",
"2.5.0",
"2.6.0",
"2.7.0",
"2.7.1",
"2.8.0",
"2.8.1",
"2.8.2",
"2.9.0",
"2.9.1",
"3.0.0",
"3.0.0b0",
"3.1.0",
"3.1.1",
"3.1.2",
"3.2.0",
"3.2.1"
]
}
],
"aliases": [
"CVE-2026-26717",
"GHSA-xjhr-fm27-4hmx"
],
"details": "An issue in OpenFUN Richie (LMS) in src/richie/apps/courses/api.py. The application used the non-constant time == operator for HMAC signature verification in the sync_course_run_from_request function. This allows remote attackers to forge valid signatures and bypass authentication by measuring response time discrepancies.",
"id": "PYSEC-2026-3052",
"modified": "2026-07-13T16:06:10.309189Z",
"published": "2026-07-13T14:36:38.520323Z",
"references": [
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-26717"
},
{
"type": "WEB",
"url": "https://github.com/openfun/richie/commit/a1b5bbda3403d7debb466c303a32852925fcba5f"
},
{
"type": "WEB",
"url": "https://github.com/Rickidevs/CVE-2026-26717"
},
{
"type": "PACKAGE",
"url": "https://github.com/openfun/richie"
},
{
"type": "WEB",
"url": "https://medium.com/@ordogh/cve-2026-26717-hmac-timing-attack-in-openfun-richie-lms-f04377efe83d?postPublishedType=repub"
},
{
"type": "PACKAGE",
"url": "https://pypi.org/project/richie"
},
{
"type": "ADVISORY",
"url": "https://github.com/advisories/GHSA-xjhr-fm27-4hmx"
}
],
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:N",
"type": "CVSS_V3"
}
],
"summary": "OpenFUN Richie Observable Timing Discrepancy in its sync_course_run_from_request function"
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…