CVE-2026-48524
PyJWT: PyJWKClient unbounded JWKS endpoint requests via attacker-controlled kid values (DoS)
Что произошло
PyJWT is a JSON Web Token implementation in Python. Prior to 2.13.0, PyJWKClient.get_signing_key() forces a fresh HTTP request to the JWKS endpoint for every JWT with an unknown kid value, with no rate limiting. Since kid comes from the unverified token header, an attacker can trigger unlimited outbound requests. The vulnerability surfaces only when a JWKS fetch fails; an attacker can attempt to provoke that with sustained unknown-kid traffic, but the outcome depends on upstream JWKS-endpoint behavior (rate limiting, transient errors) which is beyond the attacker's control. This vulnerability is fixed in 2.13.0.
Что это значит
В источнике описана ошибка безопасности в перечисленных продуктах. Фактический риск зависит от установленной версии, конфигурации и доступности компонента; проверьте условия в первичном бюллетене.
Что делать
1. Проверьте, затронуты ли вы
Соберите инвентаризацию и сравните с таблицей затронутых версий. Эти команды только показывают установленные компоненты и сами по себе не доказывают наличие CVE.
dpkg-query -W -f='${Package} ${Version}\n'rpm -qa --qf '%{NAME}\t%{VERSION}-%{RELEASE}\n'Get-HotFix | Select-Object HotFixID, InstalledOn
2. Установите исправление
Сверьте точный продукт и версию с бюллетенем вендора. Установите указанное в нём исправление после резервного копирования и проверки совместимости. Подтверждённая целевая версия в источниках отсутствует.
3. Временные меры
До проверки бюллетеня ограничьте доступ к затронутому компоненту доверенными узлами. Оцените сегментацию и отключение ненужных интерфейсов с владельцем сервиса; универсального правила WAF для этой CVE не подтверждено.
4. Проверьте следы эксплуатации
Проверьте аномальные входы, новые учётные записи, ошибки и необычные дочерние процессы в затронутом сервисе. Публичные проверенные правила обнаружения не включены в запись; отсутствие сигналов не доказывает отсутствие компрометации.
5. После исправления
- Проверьте фактическую версию и результат установки по бюллетеню.
- При необходимости перезапустите сервисы в согласованное окно.
- Повторите проверку сканером и функциональные проверки.
- Зафиксируйте результат, дату, владельца и оставшийся риск.
Продукты и затронутые версии
jpadilla / pyjwt
{
"status": "affected",
"version": "< 2.13.0"
}pyjwt_project / pyjwt
{
"status": "affected",
"version": "*",
"versionEndExcluding": "2.13.0"
}cpe:2.3:a:pyjwt_project:pyjwt:*:*:*:*:*:*:*:*
pyjwt PyPI
{
"status": "affected",
"version": "*",
"versionEndExcluding": "2.13.0"
}pyjwt PyPI
{
"status": "affected",
"version": "*",
"versionEndExcluding": "2.13.0",
"versionStartIncluding": "2.0.0"
}CVSS: оценки и векторы
CVSS 3.1 · cve3.7
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
CVSS 3.1 · security-advisories@github.com3.7
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L
Источники и ссылки
Происхождение полей
{
"cwes": [
"cve",
"nvd"
],
"epss": {
"source": "epss",
"received_at": "2026-11-02T21:12:56.008527+00:00"
},
"title": {
"source": "cve",
"received_at": "2026-10-28T20:39:02.522369+00:00"
},
"scores": [
"cve",
"nvd"
],
"status": {
"source": "cve",
"received_at": "2026-10-28T20:39:02.522369+00:00"
},
"affected": [
"cve",
"nvd",
"osv"
],
"published": {
"source": "cve",
"received_at": "2026-10-28T20:39:02.522369+00:00"
},
"solutions": [],
"percentile": {
"source": "epss",
"received_at": "2026-11-02T21:12:56.008527+00:00"
},
"references": [
"cve",
"nvd",
"osv"
],
"description": {
"source": "cve",
"received_at": "2026-10-28T20:39:02.522369+00:00"
},
"workarounds": [],
"configurations": [
"nvd"
]
}Хронология записи
- Данные обновлены03.11.2026, 00:12
- Данные обновлены02.11.2026, 15:10
- Данные обновлены02.11.2026, 13:40
- Данные обновлены02.11.2026, 00:11
- Данные обновлены31.10.2026, 11:58
- Данные обновлены28.10.2026, 23:39
- Данные обновлены28.10.2026, 18:06
- Опубликована28.10.2026, 15:15
Личная заметка и статус
Другие CVE того же продукта
| УЯЗВИМОСТЬ / ПРОДУКТ | ПРИОРИТЕТ | CVSS | EPSS | СИГНАЛЫ | ОПУБЛИКОВАНА | Карточка |
|---|---|---|---|---|---|---|
| CVE-2026-48526 PyJWT: Public-key JWK accepted as HMAC secret enables forged HS256 tokens when mixed families are allowed jpadilla / pyjwt · Red Hat / Red Hat Ansible Automation Platform 2.5 for RHEL 8 | Критический | 7.4 | 0,43 % | PoC | 28.05.2026 | |
| CVE-2026-48522 PyJWKClient: missing scheme allowlist enables SSRF + token forgery via file://, ftp://, data: schemes jpadilla / pyjwt · pyjwt_project / pyjwt | Высокий | 4.2 | 0,22 % | PoC | 28.05.2026 | |
| CVE-2026-102275 PyJWT accepts inconsistent OKP x/d JWKs, causing public/private key identity confusion jpadilla / pyjwt · pyjwt | Высокий | 6.5 | 0,17 % | PoCПатч | 28.09.2026 | |
| CVE-2026-103001 PyJWT.decode() reintroduces options-dict mutation, enabling silent claim-verification bypass on dict reuse jpadilla / pyjwt · pyjwt | Высокий | 6.5 | 0,26 % | PoC | 01.10.2026 | |
| CVE-2026-101917 PyJWT: PyJWKClient still amplifies unauthenticated JWKS fetches on unknown kid values (incomplete fix of CVE-2026-48524) jpadilla / pyjwt · pyjwt | Высокий | 5.3 | 0,43 % | PoC | 28.09.2026 |