
Substituto seguro e puro em JS para bigint-buffer. Corrige CVE-2025-3194 (CVSS 7.5). Zero dependências, sem bindings nativos.
Substituto seguro e puro em JavaScript para bigint-buffer. Corrige CVE-2025-3194 (CVSS 7.5, estouro de buffer / DoS).
Zero dependências. Sem bindings nativos. Funciona em Node.js e navegadores.
O pacote original bigint-buffer possui uma vulnerabilidade de estouro de buffer de alta severidade (CVE-2025-3194, CVSS 7.5) que trava seu processo quando toBigIntLE(null) ou outra entrada inválida é passada. O mantenedor não publica uma atualização desde outubro de 2019. O pacote @solana/buffer-layout-utils que depende dele foi arquivado em janeiro de 2025. Nenhuma correção upstream está vindo.
Essa vulnerabilidade afeta todo o ecossistema Solana através da cadeia de dependências transitivas:
bigint-buffer → @solana/buffer-layout-utils → @solana/web3.js v1.x → @solana/wallet-adapter-*
bigint-buffer-safe é uma substituição pura em JavaScript com validação de entrada adequada. Compatível com a API de [email protected].
npm install bigint-buffer-safe
Adicione ao seu package.json para substituir bigint-buffer em toda a sua árvore de dependências:
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 diretamente (se não publicado no npm):
{
"overrides": {
"bigint-buffer": "github:LoserLab/bigint-buffer-safe"
}
}
Em seguida, reinstale:
rm -rf node_modules package-lock.json && npm install
Verifique se a vulnerabilidade foi resolvida:
npm audit
Idêntica à [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>
Validação de entrada. Entrada inválida lança um TypeError em vez de travar seu processo:
// Original bigint-buffer: TRAVA (CVE-2025-3194)
toBigIntLE(null);
// bigint-buffer-safe: lança TypeError
toBigIntLE(null); // TypeError: toBigIntLE: expected a Buffer, got null
Sem bindings nativos. O original envia bindings N-API C++ que falham silenciosamente em navegadores e bundlers (o infame aviso "bigint: Failed to load bindings"). Este pacote é JavaScript puro.
Puro JS, sem bindings nativos. Testado em Apple Silicon (série M), Node.js, 1 milhão de iterações cada.
| Operação | Tamanho | Ops/seg |
|---|---|---|
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 |
Para os inteiros u64 e u128 usados em programas Solana (lamports, quantidades de tokens, timestamps), o desempenho é mais que suficiente. As bindings N-API do original eram mais rápidas para buffers muito grandes, mas esses tamanhos não são usados no Solana.
Execute benchmarks você mesmo:
npx tsx bench/index.ts
Qualquer projeto que use @solana/web3.js v1.x (versões 1.43.1 a 1.98.x). Execute npm ls bigint-buffer para verificar se está em sua árvore de dependências.
Não. @solana/kit tem zero dependências de terceiros e não usa bigint-buffer. Se você já migrou para o Kit, não é afetado.
Esse aviso vem das bindings nativas N-API do bigint-buffer que falham ao carregar em ambientes empacotados. Substituir por bigint-buffer-safe o elimina, já que este pacote é JavaScript puro.
Esta é uma ponte para projetos ainda no @solana/web3.js v1.x. A solução permanente é migrar para @solana/kit, que tem zero dependências externas.
bigint-buffer-fixed é outro fork da comunidade. bigint-buffer-safe remove completamente as bindings nativas N-API (eliminando o aviso "Failed to load bindings"), inclui uma suíte de testes completa com 64 testes e fornece definições de tipos TypeScript.
Este pacote é uma ponte para projetos no @solana/web3.js v1.x. A solução permanente é migrar para @solana/kit (web3.js v2), que tem zero dependências externas e não usa bigint-buffer de forma alguma. A Solana Foundation também lançou o ConnectorKit (@solana/connector) como a substituição moderna para o ecossistema de adaptadores de carteira com suporte duplo v1/v2.
Quatro ferramentas que trabalham juntas para levar seu projeto do web3.js v1 ao Kit v2:
| Ferramenta | O que faz |
|---|---|
| solana-deps | Rastreie por que pacotes legados estão em sua árvore |
| solana-audit | Capture CVEs e APIs obsoletas que npm audit não detecta |
| solana-codemod | Migre código automaticamente do web3.js v1 para o Kit v2 |
| bigint-buffer-safe (esta ferramenta) | Correção CVE de substituição direta para bigint-buffer |
Fluxo de trabalho recomendado: solana-deps (encontre o que é legado) -> solana-audit (verifique vulnerabilidades) -> solana-codemod (corrija o código) -> solana-audit (verifique o resultado).
Criado por Heathen
Construído em Mirra
Licença MIT
Copyright (c) 2026 Heathen