
Sostituto drop-in sicuro, in puro JS, per bigint-buffer. Corregge la CVE-2025-3194 (CVSS 7.5). Zero dipendenze, nessun binding nativo.
Sostituto drop-in sicuro, in puro JS, per bigint-buffer. Risolve CVE-2025-3194 (CVSS 7.5, buffer overflow / DoS).
Zero dipendenze. Nessun binding nativo. Funziona in Node.js e nei browser.
Il pacchetto originale bigint-buffer presenta una vulnerabilità di buffer overflow ad alta gravità (CVE-2025-3194, CVSS 7.5) che manda in crash il processo quando viene passato toBigIntLE(null) o altro input non valido. Il maintainer non pubblica un aggiornamento dall'ottobre 2019. Il pacchetto @solana/buffer-layout-utils che dipende da esso è stato archiviato a gennaio 2025. Non arriverà alcuna correzione upstream.
Questa vulnerabilità colpisce l'intero ecosistema Solana attraverso la catena di dipendenze transitive:
bigint-buffer → @solana/buffer-layout-utils → @solana/web3.js v1.x → @solana/wallet-adapter-*
bigint-buffer-safe è un sostituto in puro JavaScript con una corretta validazione dell'input. API-compatibile con [email protected].
npm install bigint-buffer-safe
Aggiungi al tuo package.json per sostituire bigint-buffer in tutto il tuo albero delle dipendenze:
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"
}
}
}
Usare GitHub direttamente (se non pubblicato su npm):
{
"overrides": {
"bigint-buffer": "github:LoserLab/bigint-buffer-safe"
}
}
Quindi reinstalla:
rm -rf node_modules package-lock.json && npm install
Verifica che la vulnerabilità sia risolta:
npm audit
Identica a [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>
Validazione dell'input. Un input non valido lancia un TypeError invece di mandare in crash il processo:
// Original bigint-buffer: CRASHES (CVE-2025-3194)
toBigIntLE(null);
// bigint-buffer-safe: throws TypeError
toBigIntLE(null); // TypeError: toBigIntLE: expected a Buffer, got null
Nessun binding nativo. L'originale include binding C++ N-API che falliscono silenziosamente nei browser e nei bundler (il famigerato avviso "bigint: Failed to load bindings"). Questo pacchetto è puro JavaScript.
Puro JS, nessun binding nativo. Testato su Apple Silicon (serie M), Node.js, 1 milione di iterazioni ciascuno.
Per gli interi u64 e u128 usati nei programmi Solana (lamports, importi di token, timestamp), le prestazioni sono più che sufficienti. I binding N-API dell'originale erano più veloci per buffer molto grandi, ma quelle dimensioni non vengono usate in Solana.
Esegui tu stesso i benchmark:
npx tsx bench/index.ts
Qualsiasi progetto che usa @solana/web3.js v1.x (versioni dalla 1.43.1 alla 1.98.x). Esegui npm ls bigint-buffer per verificare se è nel tuo albero delle dipendenze.
No. @solana/kit ha zero dipendenze di terze parti e non usa bigint-buffer. Se sei già migrato a Kit, non sei interessato.
Quell'avviso deriva dal mancato caricamento dei binding nativi N-API di bigint-buffer in ambienti bundled. Sostituirlo con bigint-buffer-safe lo elimina, dato che questo pacchetto è puro JavaScript.
Questo è un ponte per i progetti ancora su @solana/web3.js v1.x. La soluzione permanente è migrare a @solana/kit, che ha zero dipendenze esterne.
bigint-buffer-fixed è un altro fork della community. bigint-buffer-safe rimuove completamente i binding nativi N-API (eliminando l'avviso "Failed to load bindings"), include una suite di test completa con 64 test e fornisce le definizioni dei tipi TypeScript.
Questo pacchetto è un ponte per i progetti su @solana/web3.js v1.x. La soluzione permanente è migrare a @solana/kit (web3.js v2), che ha zero dipendenze esterne e non usa affatto bigint-buffer. La Solana Foundation ha inoltre rilasciato ConnectorKit (@solana/connector) come sostituto moderno per l'ecosistema dei wallet adapter con supporto duale v1/v2.
Quattro strumenti che lavorano insieme per portare il tuo progetto da web3.js v1 a Kit v2:
Flusso di lavoro consigliato: solana-deps (trova ciò che è legacy) -> solana-audit (controlla le vulnerabilità) -> solana-codemod (corregge il codice) -> solana-audit (verifica il risultato).
Creato da Heathen
Realizzato in Mirra
Licenza MIT
Copyright (c) 2026 Heathen
| Operazione | Dimensione | 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 |
| Strumento | Cosa fa |
|---|
| solana-deps | Traccia il motivo per cui i pacchetti legacy sono nel tuo albero |
| solana-audit | Individua CVE e API deprecate che npm audit non vede |
| solana-codemod | Migra automaticamente il codice da web3.js v1 a Kit v2 |
| bigint-buffer-safe (questo strumento) | Fix drop-in per la CVE di bigint-buffer |