
Sicherer, reiner JS-Drop-in-Ersatz für bigint-buffer. Behebt CVE-2025-3194 (CVSS 7.5). Keine Abhängigkeiten, keine nativen Bindungen.
Sicherer, reiner JS-Drop-in-Ersatz für bigint-buffer. Behebt CVE-2025-3194 (CVSS 7.5, Pufferüberlauf / DoS).
Keine Abhängigkeiten. Keine nativen Bindungen. Funktioniert in Node.js und Browsern.
Das ursprüngliche bigint-buffer-Paket enthält eine Pufferüberlauf-Schwachstelle mit hohem Schweregrad (CVE-2025-3194, CVSS 7.5), die deinen Prozess zum Absturz bringt, wenn toBigIntLE(null) oder andere ungültige Eingaben übergeben werden. Der Maintainer hat seit Oktober 2019 kein Update mehr veröffentlicht. Das @solana/buffer-layout-utils-Paket, das davon abhängt, wurde im Januar 2025 archiviert. Ein Upstream-Fix ist nicht zu erwarten.
Diese Schwachstelle betrifft das gesamte Solana-Ökosystem über die transitive Abhängigkeitskette:
bigint-buffer → @solana/buffer-layout-utils → @solana/web3.js v1.x → @solana/wallet-adapter-*
bigint-buffer-safe ist ein reiner JavaScript-Ersatz mit ordnungsgemäßer Eingabevalidierung. API-kompatibel mit [email protected].
Füge Folgendes zu deiner package.json hinzu, um bigint-buffer in deinem gesamten Abhängigkeitsbaum zu ersetzen:
npm (v8.3+):
{
"overrides": {
"bigint-buffer": "npm:bigint-buffer-safe@^1.0.0"
}
}
yarn:
{
"resolutions": {
"bigint-buffer": "npm:bigint-buffer-safe@^1.0.0"
}
}
pnpm:
{
"pnpm": {
"overrides": {
"bigint-buffer": "npm:bigint-buffer-safe@^1.0.0"
}
}
}
GitHub direkt verwenden (falls nicht auf npm veröffentlicht):
{
"overrides": {
"bigint-buffer": "github:LoserLab/bigint-buffer-safe"
}
}
Danach neu installieren:
rm -rf node_modules package-lock.json && npm install
Überprüfe, dass die Schwachstelle behoben ist:
npm audit
Identisch zu [email protected]:
import { toBigIntBE, toBigIntLE, toBufferBE, toBufferLE } from "bigint-buffer-safe";
// Buffer → BigInt
toBigIntBE(Buffer.from([0x01, 0x00])); // 256n
toBigIntLE(Buffer.from([0x00, 0x01])); // 256n
// BigInt → Buffer
toBufferBE(256n, 2); // <Buffer 01 00>
toBufferLE(256n, 2); // <Buffer 00 01>
Eingabevalidierung. Ungültige Eingaben werfen einen TypeError, statt deinen Prozess zum Absturz zu bringen:
// Original bigint-buffer: CRASHES (CVE-2025-3194)
toBigIntLE(null);
// bigint-buffer-safe: throws TypeError
toBigIntLE(null); // TypeError: toBigIntLE: expected a Buffer, got null
Keine nativen Bindungen. Das Original enthält N-API-C++-Bindungen, die in Browsern und Bundlern stillschweigend fehlschlagen (die berüchtigte Warnung "bigint: Failed to load bindings"). Dieses Paket ist reines JavaScript.
Reines JS, keine nativen Bindungen. Getestet auf Apple Silicon (M-Serie), Node.js, jeweils 1 Million Iterationen.
Für die u64- und u128-Ganzzahlen, die in Solana-Programmen verwendet werden (Lamports, Token-Beträge, Zeitstempel), ist die Leistung mehr als ausreichend. Die N-API-Bindungen des Originals waren bei sehr großen Puffern schneller, aber solche Größen werden in Solana nicht verwendet.
Führe die Benchmarks selbst aus:
npx tsx bench/index.ts
Jedes Projekt, das @solana/web3.js v1.x verwendet (Versionen 1.43.1 bis 1.98.x). Führe npm ls bigint-buffer aus, um zu prüfen, ob es in deinem Abhängigkeitsbaum enthalten ist.
Nein. @solana/kit hat keine Drittanbieter-Abhängigkeiten und verwendet kein bigint-buffer. Wenn du bereits zu Kit migriert bist, bist du nicht betroffen.
Diese Warnung stammt von den nativen N-API-Bindungen von bigint-buffer, die in gebündelten Umgebungen nicht geladen werden können. Ein Ersatz durch bigint-buffer-safe beseitigt sie, da dieses Paket reines JavaScript ist.
Dies ist eine Brückenlösung für Projekte, die noch @solana/web3.js v1.x verwenden. Die dauerhafte Lösung ist die Migration zu @solana/kit, das keine externen Abhängigkeiten hat.
bigint-buffer-fixed ist ein weiterer Community-Fork. bigint-buffer-safe entfernt native N-API-Bindungen vollständig (und beseitigt damit die Warnung "Failed to load bindings"), enthält eine vollständige Testsuite mit 64 Tests und bietet TypeScript-Typdefinitionen.
Dieses Paket ist eine Brückenlösung für Projekte mit @solana/web3.js v1.x. Die dauerhafte Lösung ist die Migration zu @solana/kit (web3.js v2), das keine externen Abhängigkeiten hat und bigint-buffer überhaupt nicht verwendet. Die Solana Foundation hat außerdem ConnectorKit (@solana/connector) als modernen Ersatz für das Wallet-Adapter-Ökosystem mit dualer v1/v2-Unterstützung veröffentlicht.
Vier Tools, die zusammenarbeiten, um dein Projekt von web3.js v1 zu Kit v2 zu bringen:
Empfohlener Workflow: solana-deps (finden, was Legacy ist) -> solana-audit (auf Schwachstellen prüfen) -> solana-codemod (Code korrigieren) -> solana-audit (Ergebnis überprüfen).
Erstellt von Heathen
Erstellt in Mirra
MIT-Lizenz
Copyright (c) 2026 Heathen
| Operation | Größe | Ops/sec |
|---|
toBigIntBE | u64 (8 Bytes) | 9,079,934 |
toBigIntLE | u64 (8 Bytes) | 6,128,182 |
toBigIntBE | u128 (16 Bytes) | 7,018,804 |
toBigIntLE | u128 (16 Bytes) | 5,069,809 |
toBufferBE | u64 (8 Bytes) | 5,569,161 |
toBufferLE | u64 (8 Bytes) | 5,183,747 |
toBufferBE | u128 (16 Bytes) | 7,063,305 |
toBufferLE | u128 (16 Bytes) | 6,533,752 |
| Tool | Funktion |
|---|
| solana-deps | Verfolgen, warum Legacy-Pakete in deinem Abhängigkeitsbaum sind |
| solana-audit | CVEs und veraltete APIs finden, die npm audit übersieht |
| solana-codemod | Code automatisch von web3.js v1 zu Kit v2 migrieren |
| bigint-buffer-safe (dieses Tool) | Drop-in-CVE-Fix für bigint-buffer |