
Reemplazo directo seguro, puro en JS, para bigint-buffer. Corrige CVE-2025-3194 (CVSS 7.5). Cero dependencias, sin enlaces nativos.
Sustituto directo seguro y en JavaScript puro para bigint-buffer. Corrige CVE-2025-3194 (CVSS 7.5, desbordamiento de búfer / DoS).
Cero dependencias. Sin enlaces nativos. Funciona en Node.js y navegadores.
El paquete original bigint-buffer tiene una vulnerabilidad de desbordamiento de búfer de alta gravedad (CVE-2025-3194, CVSS 7.5) que bloquea el proceso cuando se pasa toBigIntLE(null) u otra entrada inválida. El mantenedor no ha publicado una actualización desde octubre de 2019. El paquete @solana/buffer-layout-utils que depende de él fue archivado en enero de 2025. No llegará una corrección oficial.
Esta vulnerabilidad afecta a todo el ecosistema Solana a través de la cadena de dependencias transitivas:
bigint-buffer → @solana/buffer-layout-utils → @solana/web3.js v1.x → @solana/wallet-adapter-*
bigint-buffer-safe es un reemplazo en JavaScript puro con validación de entrada adecuada. Compatible con la API de [email protected].
npm install bigint-buffer-safe
Añade a tu package.json para reemplazar bigint-buffer en todo tu árbol de dependencias:
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"
}
}
}
Usando GitHub directamente (si no se publica en npm):
{
"overrides": {
"bigint-buffer": "github:LoserLab/bigint-buffer-safe"
}
}
Luego reinstala:
rm -rf node_modules package-lock.json && npm install
Verifica que la vulnerabilidad esté resuelta:
npm audit
Idéntica 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>
Validación de entrada. La entrada inválida lanza un TypeError en lugar de bloquear el proceso:
// bigint-buffer original: SE BLOQUEA (CVE-2025-3194)
toBigIntLE(null);
// bigint-buffer-safe: lanza TypeError
toBigIntLE(null); // TypeError: toBigIntLE: expected a Buffer, got null
Sin enlaces nativos. El original incluye enlaces N-API en C++ que fallan silenciosamente en navegadores y empaquetadores (la infame advertencia "bigint: Failed to load bindings"). Este paquete es JavaScript puro.
JS puro, sin enlaces nativos. Probado en Apple Silicon (serie M), Node.js, 1 millón de iteraciones cada uno.
Para los enteros u64 y u128 utilizados en programas Solana (lamports, cantidades de tokens, marcas de tiempo), el rendimiento es más que suficiente. Los enlaces N-API del original eran más rápidos para búferes muy grandes, pero esos tamaños no se usan en Solana.
Ejecuta los benchmarks tú mismo:
npx tsx bench/index.ts
Cualquier proyecto que use @solana/web3.js v1.x (versiones 1.43.1 a 1.98.x). Ejecuta npm ls bigint-buffer para comprobar si está en tu árbol de dependencias.
No. @solana/kit tiene cero dependencias de terceros y no usa bigint-buffer. Si ya migraste a Kit, no estás afectado.
Esa advertencia proviene de que los enlaces nativos N-API de bigint-buffer fallan al cargarse en entornos empaquetados. Reemplazarlo con bigint-buffer-safe la elimina porque este paquete es JavaScript puro.
Este es un puente para proyectos que aún están en @solana/web3.js v1.x. La solución permanente es migrar a @solana/kit, que tiene cero dependencias externas.
bigint-buffer-fixed es otro fork de la comunidad. bigint-buffer-safe elimina por completo los enlaces nativos N-API (eliminando la advertencia "Failed to load bindings"), incluye un conjunto completo de pruebas con 64 tests y proporciona definiciones de tipos TypeScript.
Este paquete es un puente para proyectos en @solana/web3.js v1.x. La solución permanente es migrar a @solana/kit (web3.js v2), que tiene cero dependencias externas y no usa bigint-buffer en absoluto. La Fundación Solana también lanzó ConnectorKit (@solana/connector) como el reemplazo moderno del ecosistema de adaptadores de wallet con soporte dual v1/v2.
Cuatro herramientas que trabajan juntas para llevar tu proyecto de web3.js v1 a Kit v2:
Flujo de trabajo recomendado: solana-deps (encuentra qué es heredado) -> solana-audit (comprueba vulnerabilidades) -> solana-codemod (arregla el código) -> solana-audit (verifica el resultado).
Creado por Heathen
Construido en Mirra
Licencia MIT
Copyright (c) 2026 Heathen
| Operación | Tamaño | Ops/s |
|---|
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 |
| Herramienta | Qué hace |
|---|
| solana-deps | Rastrea por qué hay paquetes heredados en tu árbol |
| solana-audit | Detecta CVEs y APIs obsoletas que npm audit no ve |
| solana-codemod | Migra automáticamente el código de web3.js v1 a Kit v2 |
| bigint-buffer-safe (esta herramienta) | Corrección directa de CVE para bigint-buffer |