PT-2026-45674 · Pypi · Aiosend

Publicado

2026-05-22

·

Atualizado

2026-05-22

CVSS v3.1

7.5

Alta

VetorAV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Vulnerability Description

In aiosend/webhook/base.py, the WebhookHandler.feed update() method performs full deserialization of the incoming JSON via Pydantic before verifying the HMAC signature. Anyone can send a request with an arbitrary body — the server will parse it, spend CPU and memory, and only then reject it.

Vulnerable Code

python
# aiosend/webhook/base.py — feed update()
update = Update.model validate(body, context={"client": self}) # parsing — always
if not self. check signature(body, headers):          # auth — too late
  return False
Additional aggravating factor: CryptoPayObject is declared with ConfigDict(extra="allow") — all arbitrary fields from the body are stored in memory without any limits.

Minimal PoC

Requests with deliberately invalid signatures (zero credentials):
extra fieldsbody sizeparse timestatus
0336 B26 µs403 REJECTED
1,00082 KB257 µs403 REJECTED
5,000410 KB1,183 µs403 REJECTED
10,000820 KB2,552 µs403 REJECTED
10,000 (×512B)5.3 MB7,490 µs403 REJECTED
All requests were rejected — but the server already performed parsing for each one. 10 parallel threads with 5 MB bodies = >75 ms of CPU spent on requests that will never be authorized.

Affected Components

  • aiosend/webhook/base.pyWebhookHandler.feed update()
  • aiosend/types/base.pyCryptoPayObject (extra="allow")
  • All adapters: AiohttpManager, FastAPIManager, FlaskManager

Exploitation Conditions

  • Attacker: anyone with network access to the webhook endpoint
  • Authentication: not required
  • Body size limit: absent at the library level (Flask and FastAPI have no default limit)

The advisory was translated using Copilot.

Correção

Resource Exhaustion

Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾

Enumeração de Fraquezas

Identificadores relacionados

GHSA-7M8F-HGJQ-8GC9

Produtos afetados

Aiosend