
بديل آمن، نقي-JS، جاهز للاستبدال لـ bigint-buffer. يصلح ثغرة CVE-2025-3194 (CVSS 7.5). بدون تبعيات، لا ارتباطات أصلية.
آمن، بديل نقي بلغة JavaScript (pure-JS) يُستخدم كاستبدال فوري لـ bigint-buffer. يصلح CVE-2025-3194 (CVSS 7.5, تجاوز سعة المخزن المؤقت / رفض الخدمة).
لا تبعيات. لا ارتباطات أصلية. يعمل في Node.js والمتصفحات.
حزمة bigint-buffer الأصلية تحتوي على ثغرة تجاوز سعة المخزن المؤقت عالية الخطورة (CVE-2025-3194، CVSS 7.5) التي تؤدي إلى تعطل عمليتك عند تمرير toBigIntLE(null) أو أي مدخل غير صالح آخر. لم ينشر الصيانة تحديثًا منذ أكتوبر 2019. حزمة @solana/buffer-layout-utils التي تعتمد عليها تم أرشفتها في يناير 2025. لن يأتي أي إصلاح من المنبع.
تؤثر هذه الثغرة على نظام Solana البيئي بأكمله من خلال سلسلة التبعيات غير المباشرة:
bigint-buffer → @solana/buffer-layout-utils → @solana/web3.js v1.x → @solana/wallet-adapter-*
bigint-buffer-safe هو بديل نقي بلغة JavaScript مع التحقق السليم من المدخلات. متوافق واجهة برمجة التطبيقات مع [email protected].
npm install bigint-buffer-safe
أضف إلى ملف package.json لاستبدال bigint-buffer عبر شجرة التبعيات بأكملها:
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 بدلاً من تعطيل عمليتك:
// bigint-buffer الأصلي: يتعطل (CVE-2025-3194)
toBigIntLE(null);
// bigint-buffer-safe: يرمي TypeError
toBigIntLE(null); // TypeError: toBigIntLE: expected a Buffer, got null
لا ارتباطات أصلية. الأصل يحتوي على ارتباطات N-API بلغة C++ التي تفشل بصمت في المتصفحات وأدوات التجميع (التحذير الشهير "bigint: Failed to load bindings"). هذه الحزمة هي JavaScript نقية.
JavaScript نقية، لا ارتباطات أصلية. تم الاختبار على Apple Silicon (سلسلة M)، Node.js، مليون تكرار لكل منها.
بالنسبة للأعداد الصحيحة u64 و u128 المستخدمة في برامج Solana (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، فأنت غير متأثر.
هذا التحذير يأتي من فشل ارتباطات N-API الأصلية لـ bigint-buffer في التحميل في البيئات المجمعة. استبدالها بـ 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 أيضًا 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 بايت) | 9,079,934 |
toBigIntLE | u64 (8 بايت) | 6,128,182 |
toBigIntBE | u128 (16 بايت) | 7,018,804 |
toBigIntLE | u128 (16 بايت) | 5,069,809 |
toBufferBE | u64 (8 بايت) | 5,569,161 |
toBufferLE | u64 (8 بايت) | 5,183,747 |
toBufferBE | u128 (16 بايت) | 7,063,305 |
toBufferLE | u128 (16 بايت) | 6,533,752 |
| الأداة | الوظيفة |
|---|
| solana-deps | تتبع سبب وجود الحزم القديمة في شجرتك |
| solana-audit | اكتشف الثغرات وواجهات برمجة التطبيقات المهملة التي يفوتها npm audit |
| solana-codemod | هجرة تلقائية للكود من web3.js v1 إلى Kit v2 |
| bigint-buffer-safe (هذه الأداة) | إصلاح فوري لـ CVE في bigint-buffer |