Skip to content

Use-After-Free in SQLite Aggregate Function Callbacks

Low
flavorjones published GHSA-j7fr-3v8c-3qc3 Jun 7, 2026

Package

bundler sqlite3 (RubyGems)

Affected versions

>= 2.1.0, <= 2.9.4

Patched versions

2.9.5

Description

Summary

Using Database#create_aggregate, #create_aggregate_handler, or Database#define_aggregator to define an aggregate function, and then using an open statement calling that function after the database has been explicitly closed will result in an invalid memory read and a segmentation fault.

Mitigation

Upgrade to sqlite3 gem v2.9.5 or later.

As a workaround, avoid using an aggregate function after closing the database.

Severity

The sqlite3-ruby maintainers assess this as Low severity. It is reliably triggered after GC when code is structured in a particular way. There is no known general exploit that could be used as a denial of service attack.

Severity

Low

CVE ID

CVE-2026-54620

Weaknesses

Use After Free

The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory belongs to the code that operates on the new pointer. Learn more on MITRE.

Credits