{"id":"CVE-2026-119283","kind":"vulnerability","aliases":["CVE-2026-119283"],"related":[],"title":"joserfc: unlimited JWE recipients let one request exhaust CPU","description":"joserfc is a Python library that provides an implementation of several JSON Object Signing and Encryption (JOSE) standards. Prior to 1.7.5, joserfc.jwe.decrypt_json() accepts a JWE General JSON Serialization recipients array without a count limit and calls decrypt_cek() for every entry. An unauthenticated attacker who can submit a JWE to an endpoint using an RSA key-management algorithm can choose the number of private-key decryption operations performed by one request. The verify_all_recipients option does not reduce this work because the affected loop processes every recipient before consulting that setting, allowing repeated requests to exhaust service CPU without affecting confidentiality or integrity. This issue is fixed in version 1.7.5.","summary":"joserfc is a Python library for JOSE standards such as JWE and JWS. Before version 1.7.5, decrypt_json() runs a private-key decryption for every entry in a JWE recipients array with no limit, so one request can force many expensive RSA operations.","severity":"high","cvss":7.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["api-servers","jose","joserfc","jwt","package","python"],"not_affected_if":["no-jwe-decryption","non-rsa-key-management","not-exposed-to-untrusted-input"],"how_to_check":"- Check the installed version with `pip show joserfc`\n- Find services that call `joserfc.jwe.decrypt_json` on untrusted input that use RSA key-management algorithms","fix":"- `joserfc` `1.7.5`","status":"open","published_at":"2026-10-29T22:17:01+00:00","first_seen_at":"2026-10-29T22:27:06+00:00","triaged_at":"2026-10-29T22:28:46+00:00","updated_at":"2026-10-29T22:28:46+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-29T22:28:46Z","model":"claude-haiku-5-5","output":{"fix":"- `joserfc` `1.7.5`","reach":"internet","title":"joserfc: unlimited JWE recipients let one request exhaust CPU","impact":"low","summary":"joserfc is a Python library for JOSE standards such as JWE and JWS. Before version 1.7.5, decrypt_json() runs a private-key decryption for every entry in a JWE recipients array with no limit, so one request can force many expensive RSA operations.","audience":"developers","category":"package","nicknames":[],"who_cares":["python","joserfc","jwt","jose","api-servers"],"confidence":0.8,"fix_status":"available","needs_auth":"no","worst_case":"Repeated requests exhaust service CPU, causing denial of service","analyst_note":"","how_to_check":"- Check the installed version with `pip show joserfc`\n- Find services that call `joserfc.jwe.decrypt_json` on untrusted input that use RSA key-management algorithms","plain_action":"","needs_analyst":false,"not_affected_if":["no-jwe-decryption","non-rsa-key-management","not-exposed-to-untrusted-input"],"who_is_affected":"Services that accept JWE General JSON Serialization input from untrusted clients and decrypt it with an RSA key-management algorithm using joserfc before 1.7.5. Applications that only verify JWS, use other key-management algorithms, or never decrypt attacker-supplied JWE can skip it. The sources describe a CPU exhaustion effect only, with no confidentiality or integrity impact.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000711,"input_tokens":4272,"output_tokens":567,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-119283':12A,15A '-2026':11A,14A '1.7.5':39B,88C,181C 'accept':91C 'affect':154C,171C 'algorithm':127C 'allow':163C 'api':17B 'api-serv':16B 'array':55B,98C 'attack':112C 'call':104C 'cek':106C 'choos':129C 'confidenti':172C 'consult':160C 'count':101C 'cpu':9A,169C 'cve':10A,13A 'decrypt':40B,47B,105C,136C 'encrypt':83C 'endpoint':120C 'entri':50B,109C 'everi':49B,108C,157C 'exhaust':8A,167C 'expens':65B 'fix':178C 'forc':63B 'general':94C 'implement':76C 'integr':174C 'issu':176C 'jose':19B,30B,84C 'joserfc':1A,20B,24B,68C 'joserfc.jwe.decrypt':89C 'json':41B,79C,90C,95C 'jwe':3A,34B,53B,93C,117C 'jws':36B 'jwt':21B 'key':46B,125C,135C 'key-manag':124C 'let':5A 'librari':28B,72C 'limit':58B,102C 'loop':155C 'manag':126C 'mani':64B 'number':131C 'object':80C 'one':6A,60B,140C 'oper':67B,137C 'option':146C 'packag':22B 'perform':138C 'prior':86C 'privat':45B,134C 'private-key':44B,133C 'process':156C 'provid':74C 'python':23B,27B,71C 'recipi':4A,54B,97C,145C,158C 'reduc':149C 'repeat':164C 'request':7A,61B,141C,165C 'rsa':66B,123C 'run':42B 'serial':96C 'server':18B 'servic':168C 'set':162C 'sever':78C 'sign':81C 'standard':31B,85C 'submit':115C 'unauthent':111C 'unlimit':2A 'use':121C 'verifi':143C 'version':38B,180C 'without':99C,170C 'work':151C","nicknames":[],"mitigations":[],"who_affected":"Services that accept JWE General JSON Serialization input from untrusted clients and decrypt it with an RSA key-management algorithm using joserfc before 1.7.5. Applications that only verify JWS, use other key-management algorithms, or never decrypt attacker-supplied JWE can skip it. The sources describe a CPU exhaustion effect only, with no confidentiality or integrity impact.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"first_public_at":"2026-10-29T22:17:01+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119283","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119283","severity":null,"published_at":"2026-10-29T22:17:01+00:00","modified_at":"2026-10-29T22:17:01+00:00","first_seen_at":"2026-10-29T22:27:06+00:00","fetched_at":"2026-10-29T22:27:06+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}