Skip to content
OpenAdvisories
High · 7.5 RUSTSEC-2026-0230

Empty NIP-50 search filters can panic

Published Aug 1, 2026 · Updated Aug 2, 2026 · Assigned by RUSTSEC

Description

The NIP-50 event-matching path searched event content with
`slice::windows(search.len())`. An empty search string therefore called
`slice::windows(0)`, which always panics instead of returning a match result.

A remote client able to submit filters to an application using this matcher could
trigger the panic with an empty NIP-50 search value. This includes clients querying an
SDK local relay. Depending on the application's panic configuration and task
isolation, the crafted filter could terminate request processing, a runtime worker, or
the entire process, causing denial of service. No confidentiality or integrity impact
is known.

Empty searches are now handled before the substring search, so the matcher returns a
defined result without constructing a zero-sized window or panicking.

Affected packages

EcosystemPackageAffectedFixedRecord
crates.io nostr >= 0.0.0-0, < 0.44.7 0.44.7 RUSTSEC-2026-0230

References