CVE-2026-70646
aiosend: Deserialization of request body before signature verification (Pre-auth DoS) in webhook handler
aiosend is a synchronous and asynchronous Crypto Pay API client. Pror to version 3.0.7, WebhookHandler.feed_update() deserializes the entire request body before verifying the HMAC signature. This allows an unauthenticated attacker to force expensive parsing of arbitrary JSON payloads that will ultimately be rejected, leading to unnecessary CPU and memory consumption. Version 3.0.7 fixes the issue. Some workarounds are available. Restrict request body size at the reverse proxy or web framework, rate-limit webhook endpoints, and/or reject oversized requests before JSON parsing.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
aiosend: Deserialization of request body before signature verification (Pre-auth DoS) in webhook handler
aiosend is a synchronous and asynchronous Crypto Pay API client. Pror to version 3.0.7, WebhookHandler.feed_update() deserializes the entire request body before verifying the HMAC signature. This allows an unauthenticated attacker to force expensive parsing of arbitrary JSON payloads that will ultimately be rejected, leading to unnecessary CPU and memory consumption. Version 3.0.7 fixes the issue. Some workarounds are available. Restrict request body size at the reverse proxy or web framework, rate-limit webhook endpoints, and/or reject oversized requests before JSON parsing.
- Record
CVE-2026-70646- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
EUVDEUVD-2026-53920
7.5
aiosend is a synchronous and asynchronous Crypto Pay API client. Pror to version 3.0.7, WebhookHandler.feed_update() deserializes the entire request body before verifying the HMAC signature. This allows an unauthenticated attacker to force expensive parsing of arbitrary JSON payloads that will ultimately be rejected, leading to unnecessary CPU and memory consumption. Version 3.0.7 fixes the issue. Some workarounds are available. Restrict request body size at the reverse proxy or web framework, rate-limit webhook endpoints, and/or reject oversized requests before JSON parsing.
- Record
EUVD-2026-53920- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-7m8f-hgjq-8gc9
7.5
aiosend: Deserialization of request body before signature verification (Pre-auth DoS) in webhook handler
Summary
WebhookHandler.feed_update() deserializes the entire request body before verifying the HMAC signature. This allows an unauthenticated attacker to force expensive parsing of arbitrary JSON payloads that will ultimately be rejected, leading to unnecessary CPU and memory consumption.
Severity
High (CVSS 7.5)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Affected Package
- Ecosystem: PyPI
- Package:
aiosend
Affected Versions
< 3.0.6
Patched Versions
>= 3.0.6
Details
In aiosend/webhook/base.py, WebhookHandler.feed_update() performs full Pydantic deserialization before validating the webhook signature:
update = Update.model_validate(body, context={"client": self})
if not self._check_signature(body, headers):
return False
Because authentication occurs only after parsing, anyone can send arbitrarily large JSON payloads with an invalid signature. Although the request is rejected, the server still performs all parsing work.
Additionally, CryptoPayObject is configured with:
ConfigDict(extra="allow")
allowing arbitrary extra fields to be retained in memory, increasing resource consumption.
Impact
An unauthenticated attacker can repeatedly send large invalid webhook requests, forcing the server to consume CPU time and memory before rejecting them.
This results in a pre-authentication denial-of-service condition affecting all webhook integrations.
Affected Components
aiosend/webhook/base.pyaiosend/types/base.pyAiohttpManagerFastAPIManagerFlaskManager
Workarounds
Until upgrading:
- Restrict request body size at the reverse proxy or web framework.
- Rate-limit webhook endpoints.
- Reject oversized requests before JSON parsing.
Solution
Upgrade to aiosend 3.0.6 or later.
CWE
- CWE-400: Uncontrolled Resource Consumption
- Record
GHSA-7m8f-hgjq-8gc9- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
NVD
7.5
aiosend is a synchronous and asynchronous Crypto Pay API client. Pror to version 3.0.7, WebhookHandler.feed_update() deserializes the entire request body before verifying the HMAC signature. This allows an unauthenticated attacker to force expensive parsing of arbitrary JSON payloads that will ultimately be rejected, leading to unnecessary CPU and memory consumption. Version 3.0.7 fixes the issue. Some workarounds are available. Restrict request body size at the reverse proxy or web framework, rate-limit webhook endpoints, and/or reject oversized requests before JSON parsing.
- Record
CVE-2026-70646- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSV
7.5
aiosend: Deserialization of request body before signature verification (Pre-auth DoS) in webhook handler
aiosend is a synchronous and asynchronous Crypto Pay API client. Pror to version 3.0.7, WebhookHandler.feed_update() deserializes the entire request body before verifying the HMAC signature. This allows an unauthenticated attacker to force expensive parsing of arbitrary JSON payloads that will ultimately be rejected, leading to unnecessary CPU and memory consumption. Version 3.0.7 fixes the issue. Some workarounds are available. Restrict request body size at the reverse proxy or web framework, rate-limit webhook endpoints, and/or reject oversized requests before JSON parsing.
- Record
CVE-2026-70646- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVGHSA-7m8f-hgjq-8gc9
7.5
aiosend: Deserialization of request body before signature verification (Pre-auth DoS) in webhook handler
Summary
WebhookHandler.feed_update() deserializes the entire request body before verifying the HMAC signature. This allows an unauthenticated attacker to force expensive parsing of arbitrary JSON payloads that will ultimately be rejected, leading to unnecessary CPU and memory consumption.
Severity
High (CVSS 7.5)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Affected Package
- Ecosystem: PyPI
- Package:
aiosend
Affected Versions
< 3.0.6
Patched Versions
>= 3.0.6
Details
In aiosend/webhook/base.py, WebhookHandler.feed_update() performs full Pydantic deserialization before validating the webhook signature:
update = Update.model_validate(body, context={"client": self})
if not self._check_signature(body, headers):
return False
Because authentication occurs only after parsing, anyone can send arbitrarily large JSON payloads with an invalid signature. Although the request is rejected, the server still performs all parsing work.
Additionally, CryptoPayObject is configured with:
ConfigDict(extra="allow")
allowing arbitrary extra fields to be retained in memory, increasing resource consumption.
Impact
An unauthenticated attacker can repeatedly send large invalid webhook requests, forcing the server to consume CPU time and memory before rejecting them.
This results in a pre-authentication denial-of-service condition affecting all webhook integrations.
Affected Components
aiosend/webhook/base.pyaiosend/types/base.pyAiohttpManagerFastAPIManagerFlaskManager
Workarounds
Until upgrading:
- Restrict request body size at the reverse proxy or web framework.
- Rate-limit webhook endpoints.
- Reject oversized requests before JSON parsing.
Solution
Upgrade to aiosend 3.0.6 or later.
CWE
- CWE-400: Uncontrolled Resource Consumption
- Record
GHSA-7m8f-hgjq-8gc9- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400
- Updated
- 2026-11-02
OSVPYSEC-2026-3626
7.5
aiosend: Deserialization of request body before signature verification (Pre-auth DoS) in webhook handler
Summary
WebhookHandler.feed_update() deserializes the entire request body before verifying the HMAC signature. This allows an unauthenticated attacker to force expensive parsing of arbitrary JSON payloads that will ultimately be rejected, leading to unnecessary CPU and memory consumption.
Severity
High (CVSS 7.5)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Affected Package
- Ecosystem: PyPI
- Package:
aiosend
Affected Versions
< 3.0.6
Patched Versions
>= 3.0.6
Details
In aiosend/webhook/base.py, WebhookHandler.feed_update() performs full Pydantic deserialization before validating the webhook signature:
update = Update.model_validate(body, context={"client": self})
if not self._check_signature(body, headers):
return False
Because authentication occurs only after parsing, anyone can send arbitrarily large JSON payloads with an invalid signature. Although the request is rejected, the server still performs all parsing work.
Additionally, CryptoPayObject is configured with:
ConfigDict(extra="allow")
allowing arbitrary extra fields to be retained in memory, increasing resource consumption.
Impact
An unauthenticated attacker can repeatedly send large invalid webhook requests, forcing the server to consume CPU time and memory before rejecting them.
This results in a pre-authentication denial-of-service condition affecting all webhook integrations.
Affected Components
aiosend/webhook/base.pyaiosend/types/base.pyAiohttpManagerFastAPIManagerFlaskManager
Workarounds
Until upgrading:
- Restrict request body size at the reverse proxy or web framework.
- Rate-limit webhook endpoints.
- Reject oversized requests before JSON parsing.
Solution
Upgrade to aiosend 3.0.6 or later.
CWE
- CWE-400: Uncontrolled Resource Consumption
- Record
PYSEC-2026-3626- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Affected products
Affected packages
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-70646 is a high vulnerability (CVSS 7.5) in Vovchic17 Aiosend, published May 22, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.64%, the 50th percentile. Fixed in aiosend 3.0.7.
References
github.com/vovchic17/aiosend/security/advisories/GHSA-7m8f-hgjq-8gc9
github.com/vovchic17/aiosend/commit/db20f0a742209dfac181863d398ec5112687efa4
github.com/vovchic17/aiosend/releases/tag/v3.0.7
github.com/advisories/GHSA-7m8f-hgjq-8gc9
github.com/CVEProject/cvelistV5/tree/main/cves/2026/70xxx/CVE-2026-70646.json
nvd.nist.gov/vuln/detail/CVE-2026-70646
github.com/vovchic17/aiosend
pypi.org/project/aiosend