---
id: RUSTSEC-2026-0228
title: NIP-04 parsing amplifies malformed ciphertext memory use
summary: NIP-04 parsing amplifies malformed ciphertext memory use
severity: medium
cvss: 4.3
cvssVector: 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:L'
vendor: nostr
product: nostr
ecosystem: rust
affected:
  - 'nostr >= 0.0.0-0, < 0.44.7'
patched:
  - nostr 0.44.7
published: '2026-08-01'
updated: '2026-08-02'
source: OSV
sourceUrl: 'https://osv.dev/vulnerability/RUSTSEC-2026-0228'
references:
  - url: 'https://crates.io/crates/nostr'
  - url: 'https://rustsec.org/advisories/RUSTSEC-2026-0228.html'
  - url: >-
      https://github.com/nostrdevkit/nostr/commit/25e4e9ce66a533d9d7f5071f6c1dae992476cf83
tags:
  - osv
  - rust
ingestedAt: '2026-08-02T19:11:12.872Z'
---

## Overview

The NIP-04 decryption parser split attacker-controlled content on every `?iv=`
separator and collected all resulting segments before checking that the message had
the expected two parts. It also Base64-decoded the complete IV text before checking
that it represented the required 16-byte AES-CBC IV.

A malicious sender could include a large number of separators or an oversized IV in
an encrypted direct message. Applications that attempted to decrypt the message
performed avoidable allocations proportional to the malformed input, with additional
allocation amplification from the segment vector and Base64 output. This can consume
memory and CPU in clients processing messages received through a relay. It does not
weaken NIP-04 encryption or reveal plaintext or key material.

The parser now uses a single bounded split, rejects additional separators, and
validates the 24-byte encoded IV length before Base64 decoding. Malformed inputs are
returned as errors without allocating for every separator or decoding an arbitrarily
large IV.

## Affected packages

- `nostr >= 0.0.0-0, < 0.44.7`

## Remediation

Upgrade to a patched release:

- `nostr 0.44.7`
