
bigint-buffer के लिए सुरक्षित, शुद्ध-JS ड्रॉप-इन प्रतिस्थापन। CVE-2025-3194 (CVSS 7.5) को ठीक करता है। शून्य निर्भरताएँ, कोई नेटिव बाइंडिंग नहीं।
bigint-buffer के लिए सुरक्षित, शुद्ध JS ड्रॉप-इन प्रतिस्थापन। CVE-2025-3194 (CVSS 7.5, बफ़र ओवरफ्लो / DoS) को ठीक करता है।
शून्य निर्भरताएँ। कोई नेटिव बाइंडिंग नहीं। Node.js और ब्राउज़रों में काम करता है।
मूल bigint-buffer पैकेज में उच्च-गंभीरता वाली बफ़र ओवरफ्लो भेद्यता (CVE-2025-3194, CVSS 7.5) है, जो toBigIntLE(null) या अन्य अमान्य इनपुट पास करने पर आपकी प्रक्रिया को क्रैश कर देती है। अनुरक्षक ने अक्टूबर 2019 से कोई अपडेट प्रकाशित नहीं किया है। इस पर निर्भर @solana/buffer-layout-utils पैकेज को जनवरी 2025 में संग्रहीत (archive) कर दिया गया था। कोई अपस्ट्रीम फिक्स नहीं आ रहा है।
यह भेद्यता ट्रांज़िटिव निर्भरता श्रृंखला के माध्यम से पूरे Solana पारिस्थितिकी तंत्र को प्रभावित करती है:
bigint-buffer → @solana/buffer-layout-utils → @solana/web3.js v1.x → @solana/wallet-adapter-*
bigint-buffer-safe उचित इनपुट सत्यापन के साथ एक शुद्ध JavaScript प्रतिस्थापन है। [email protected] के साथ API-संगत।
npm install bigint-buffer-safe
अपनी संपूर्ण निर्भरता ट्री में bigint-buffer को बदलने के लिए अपने package.json में जोड़ें:
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 का उपयोग करना (यदि npm पर प्रकाशित नहीं है):
{
"overrides": {
"bigint-buffer": "github:LoserLab/bigint-buffer-safe"
}
}
फिर पुनः इंस्टॉल करें:
rm -rf node_modules package-lock.json && npm install
सत्यापित करें कि भेद्यता हल हो गई है:
npm audit
[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>
इनपुट सत्यापन। अमान्य इनपुट आपकी प्रक्रिया को क्रैश करने के बजाय TypeError फेंकता है:
// Original bigint-buffer: CRASHES (CVE-2025-3194)
toBigIntLE(null);
// bigint-buffer-safe: throws TypeError
toBigIntLE(null); // TypeError: toBigIntLE: expected a Buffer, got null
कोई नेटिव बाइंडिंग नहीं। मूल संस्करण N-API C++ बाइंडिंग के साथ आता है जो ब्राउज़रों और बंडलर्स में चुपचाप विफल हो जाती हैं (कुख्यात "bigint: Failed to load bindings" चेतावनी)। यह पैकेज शुद्ध JavaScript है।
शुद्ध JS, कोई नेटिव बाइंडिंग नहीं। Apple Silicon (M-series), Node.js पर परीक्षण किया गया, प्रत्येक 1M पुनरावृत्तियाँ।
Solana प्रोग्रामों में उपयोग किए जाने वाले u64 और u128 पूर्णांकों (lamports, टोकन राशि, टाइमस्टैम्प) के लिए प्रदर्शन पर्याप्त से अधिक है। मूल के N-API बाइंडिंग बहुत बड़े बफ़रों के लिए तेज़ थे, लेकिन Solana में उन आकारों का उपयोग नहीं किया जाता है।
बेंचमार्क स्वयं चलाएँ:
npx tsx bench/index.ts
कोई भी प्रोजेक्ट जो @solana/web3.js v1.x (संस्करण 1.43.1 से 1.98.x) का उपयोग करता है। यह जाँचने के लिए npm ls bigint-buffer चलाएँ कि क्या यह आपकी निर्भरता ट्री में है।
नहीं। @solana/kit की शून्य थर्ड-पार्टी निर्भरताएँ हैं और यह bigint-buffer का उपयोग नहीं करता है। यदि आप पहले ही Kit में माइग्रेट कर चुके हैं, तो आप प्रभावित नहीं हैं।
यह चेतावनी bigint-buffer की नेटिव N-API बाइंडिंग के बंडल किए गए वातावरणों में लोड होने में विफल रहने के कारण आती है। इसे bigint-buffer-safe से बदलने पर यह समाप्त हो जाती है क्योंकि यह पैकेज शुद्ध JavaScript है।
यह उन प्रोजेक्ट्स के लिए एक ब्रिज है जो अभी भी @solana/web3.js v1.x पर हैं। स्थायी समाधान @solana/kit में माइग्रेट करना है, जिसकी शून्य बाहरी निर्भरताएँ हैं।
bigint-buffer-fixed एक और सामुदायिक फोर्क है। bigint-buffer-safe नेटिव N-API बाइंडिंग को पूरी तरह से हटा देता है ("Failed to load bindings" चेतावनी को समाप्त करते हुए), 64 परीक्षणों के साथ एक पूर्ण परीक्षण सूट शामिल करता है, और TypeScript प्रकार परिभाषाएँ प्रदान करता है।
यह पैकेज @solana/web3.js v1.x पर चल रहे प्रोजेक्ट्स के लिए एक ब्रिज है। स्थायी समाधान @solana/kit (web3.js v2) में माइग्रेट करना है, जिसकी शून्य बाहरी निर्भरताएँ हैं और जो bigint-buffer का बिल्कुल उपयोग नहीं करता है। Solana Foundation ने वॉलेट एडेप्टर पारिस्थितिकी तंत्र के आधुनिक प्रतिस्थापन के रूप में ConnectorKit (@solana/connector) भी जारी किया है, जिसमें दोहरा v1/v2 समर्थन है।
चार उपकरण जो आपके प्रोजेक्ट को web3.js v1 से Kit v2 तक ले जाने के लिए मिलकर काम करते हैं:
अनुशंसित वर्कफ़्लो: solana-deps (पता लगाएँ कि क्या लीगेसी है) -> solana-audit (भेद्यताओं की जाँच करें) -> solana-codemod (कोड ठीक करें) -> solana-audit (परिणाम सत्यापित करें)।
Heathen द्वारा निर्मित
Mirra में निर्मित
MIT लाइसेंस
कॉपीराइट (c) 2026 Heathen
| ऑपरेशन | आकार | ऑप्स/सेकंड |
|---|
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 |
| टूल | यह क्या करता है |
|---|
| solana-deps | पता लगाएँ कि आपकी ट्री में लीगेसी पैकेज क्यों हैं |
| solana-audit | उन CVEs और अप्रचलित APIs को पकड़ें जिन्हें npm audit नहीं पकड़ पाता |
| solana-codemod | कोड को web3.js v1 से Kit v2 में स्वतः माइग्रेट करें |
| bigint-buffer-safe (यह टूल) | bigint-buffer के लिए ड्रॉप-इन CVE फिक्स |