
RAMnesia Attack: تحقيق علمي في تهديدات WireTap الموجهة إلى البنية التحتية لبيتكوين، وثغرات العتاد الأمنية (CVE-2025-6202، CVE-2023-39910)، والأساليب التحليلية التعمية لاستعادة مفاتيح ECDSA
يقدّم هذا البحث تحليلاً شاملاً لفئتين حرجتين من الهجمات على الذاكرة الفعلية لأنظمة الحواسيب الحديثة التي تستخدم ذاكرة DDR5: هجوم Phoenix Rowhammer (CVE-2025-6202) و هجوم RAMnesia (CVE-2023-39910) . يُظهر كلا الهجومين ثغرات أساسية في معالجة وتخزين المواد التشفيرية، مما يُنشئ نواقل اختراق غير مسبوقة لاستعادة المفاتيح الخاصة لمحافظ البيتكوين. يدمج البحث نتائج تحليل الهجمات على بيئات التنفيذ الموثوقة (TEEs)، بما في ذلك Intel SGX وAMD SEV-SNP وNVIDIA Confidential Computing، المُثبتة في هجمات WireTap وTEE.fail التي أُفصح عنها في أكتوبر 2025. يستند أمن النظام البيئي لعملة البيتكوين المشفرة إلى الافتراض الأساسي باستحالة استخراج المفاتيح الخاصة من الأنظمة التي تستخدم تشفير المنحنيات الإهليلجية (ECDSA) بمنحنى secp256k1. ومع ذلك، تُظهر أبحاث أمن العتاد الحديثة التي أجراها باحثون من ETH Zürich بالتعاون مع مهندسي Google، بالإضافة إلى مجموعات بحثية في معهد جورجيا للتكنولوجيا وجامعة بوردو، أن هذا الافتراض يمكن كسره ليس عبر هجمات تحليلية تستهدف الأسس الرياضية لـ ECDSA، بل عبر استغلال ثغرات فيزيائية وبرمجية في إدارة الذاكرة.
في أكتوبر 2025، واجه المجتمع العلمي الكشف عن سلسلة من الثغرات الحرجة التي تؤثر على تقنيات بيئات التنفيذ الموثوقة (TEE) من Intel وAMD وNVIDIA. تشكّل هجمات WireTap و TEE.fail تهديداً جوهرياً للأمن التشفيري للبنية التحتية للبلوكتشين التي تستخدم وحدات أمان العتاد المبنية على Intel SGX (Software Guard Extensions) والتقنيات ذات الصلة. توفّر هذه الاكتشافات سياقاً حاسماً لفهم الطبيعة النظامية للتهديدات التي تكون البنية التحتية الحديثة للعملات المشفرة عرضة لها.
التصنيف العلمي: هجوم الاعتراض السلبي على ناقل DRAM مع استغلال التشفير الحتمي هو هجوم قناة جانبية فيزيائي على بيئة تنفيذ موثوقة باستخدام أوراكل تشفير ذاكرة حتمي.
Phoenix Rowhammer هو تطور للهجمات الفيزيائية الكلاسيكية على الذاكرة، يستغل التداخل الكهرومغناطيسي بين خلايا DRAM للحث على bit-flips مُتحكم بها في مناطق الذاكرة الحرجة التي تحتوي قيم nonce الخاصة بـ ECDSA. Rowhammer هو عيب عتادي في رقائق DRAM الحديثة حيث يؤدي الوصول المتكرر إلى صفوف ذاكرة محددة (يُسمى “المطارقة”) إلى تداخل كهرومغناطيسي، مما يؤدي إلى انعكاسات بت في صفوف الذاكرة المتجاورة فيزيائياً. يعود هذا التأثير إلى التناقص المستمر في الحجم التكنولوجي لخلايا الذاكرة وزيادة كثافة الترانزستورات، مما يجعل رقائق DDR5 الحديثة أكثر عرضة للتداخل الكهربائي بين الخلايا المتجاورة.
هجمات RAMnesia ، بدورها، تركز على استغلال عيوب إدارة الذاكرة في المكتبات التشفيرية، حيث تبقى المفاتيح الخاصة وعبارات الاسترداد في مخازن RAM غير الممسوحة بعد اكتمال العمليات التشفيرية. الثغرة الحرجة CVE-2023-39910 ، المعروفة أيضاً باسم “Milk Sad”، في مكتبة libbitcoin Explorer أدت إلى اختراق آلاف محافظ البيتكوين وسرقة أكثر من $900,000 .
يستغل هجوم WireTap ثغرة معمارية أساسية في محرك تشفير الذاكرة الحتمي الخاص بـ Intel SGX، الذي يستخدم خوارزمية AES-XTS (معيار التشفير المتقدم — وضع كتاب الشفرات المعدل القائم على XEX مع سرقة النص المشفر). تعني الحتمية أن البيانات المتطابقة المكتوبة إلى نفس عنوان الذاكرة الفيزيائي تنتج دائماً نفس النص المشفر. تسمح هذه الخاصية للمهاجم ببناء أوراكل تشفيري لاستعادة المفاتيح السرية.
طوّر الباحثون معترض DIMM (وحدة الذاكرة المزدوجة) سلبياً يُثبَّت فيزيائياً بين المعالج ووحدة ذاكرة DDR4/DDR5. صُنع الجهاز من مكونات جاهزة متاحة تجارياً: لوحة رفع DIMM وملاقط ومكواة لحام. يتمثل الابتكار الرئيسي في إبطاء ناقل الذاكرة عالي السرعة عبر تعديل البيانات الوصفية لـ DIMM، مما يسمح باستخدام محللات منطقية قديمة ومنخفضة التكلفة لالتقاط حركة المرور. تبلغ تكلفة العتاد أقل من $50 ، مما يجعل الهجوم متاحاً لمجموعة واسعة من المهاجمين.
الاستنتاج الحرج: تشكل الثغرات العتادية تهديداً أكثر إلحاحاً للبيتكوين من الهجمات الكمومية النظرية. وفقاً للبحث، تبلغ احتمالية نجاح هجوم كمومي على ECDSA-256 خلال العقد المقبل حوالي 31%، بينما هجمات Phoenix Rowhammer وRAMnesia قابلة للتنفيذ بالفعل بأقل جهد ممكن. في حالات التسريب الجزئي لقيم nonce ، تُستخدم هجمات قائمة على الشبكات (lattice) وخوارزميات حل مشكلة الرقم المخفي (HNP) . يُظهر البحث أن استعادة المفاتيح بنجاح عبر هجمات الشبكات تتطلب ما بين 500 و2100 توقيع ، اعتماداً على عدد بتات nonce المخترقة. أظهرت دراسة CISPA (2018) أن إعادة استخدام nonce في ECDSA هي مشكلة متكررة في النظام البيئي لـ البيتكوين . تمكن المهاجمون من استخراج 412.80 BTC (≈3.3 مليون دولار في الذروة) عبر استغلال إعادة استخدام nonce. اخترق باحثو Kudelski Security، باستخدام هجوم النافذة المنزلقة بحجم نافذة N=5، 762 محفظة فريدة في يومين و19 ساعة على آلة افتراضية بمعالج 128 نواة بتكلفة تقارب 285 دولاراً.
نفّذ مصنعو ذاكرة DDR5 عدة طبقات من الحماية ضد هجمات Rowhammer: رمز تصحيح الأخطاء (ECC) وتحديث الصف المستهدف (TRR). ومع ذلك، اكتشف الباحثون ثغرة حرجة في تنفيذ TRR: تفشل آلية الحماية في مراقبة فترات تحديث محددة، مما يُنشئ مناطق عمياء قابلة للاستغلال. يستخدم Phoenix تقنية تُسمى المزامنة ذاتية التصحيح ، والتي تسمح للمهاجم باكتشاف دورات تحديث الذاكرة الفائتة والتعويض عنها تلقائياً عبر المزامنة مع tREFI (فترات التحديث).
تنبع الثغرة من استخدام مولّد الأرقام شبه العشوائية الضعيف Mersenne Twister mt19937 (PRNG)، الذي يحد من إنتروبياه الداخلية إلى 32 بت بغض النظر عن الإعدادات. يتيح ذلك للمهاجمين عن بُعد استعادة أي مفاتيح خاصة للمحافظ تم توليدها من مخرجات الإنتروبيا لأمر “bx seed”.
هجوم TEE.fail، الذي أُفصح عنه في أواخر أكتوبر 2025، هو تطور لمنهجية WireTap للأنظمة المزودة بذاكرة DDR5. وعلى عكس أسلافه التي تعمل على منصات DDR4 القديمة، فإن TEE.fail قادر على اختراق أحدث تقنيات الحوسبة السرية، بما في ذلك Intel TDX (Trusted Domain Extensions) على معالجات Intel Xeon Scalable من الجيلين الرابع والخامس ومعالجات Intel Xeon 6.
Secret Network ، منصة بلوكتشين من الطبقة الأولى (Layer 1) تستخدم Intel SGX لتمكين العقود الذكية السرية، وُجد أنها معرضة بشكل حرج لهجمات WireTap. أظهر الباحثون استخراج بذرة إجماع (مفتاح فك التشفير الرئيسي) للشبكة بأكملها. يسمح اختراق بذرة الإجماع بالكشف الاستعادي لجميع المعاملات الخاصة على Secret Network منذ إطلاق البلوكتشين.
Phala Network ، منصة حوسبة سحابية لا مركزية مبنية على SGX، أظهرت بنية أكثر مرونة بفضل نموذج حارس البوابة المصرح به. واستجابةً للكشف عن WireTap، أعلنت Phala Network عن انتقال استراتيجي إلى Intel TDX وNVIDIA Confidential Computing.
Crust Network ، نظام تخزين بيانات بلوكتشين لا مركزي يستخدم SGX للتحقق من أدلة التخزين، ثبتت هشاشته أمام هجمات النزاهة. يمكن للمهاجم استخدام مفتاح توثيق مخترق لتزوير أدلة التخزين.
في أغسطس 2025، علّقت منصة التداول التركية للعملات المشفرة BtcTurk عملياتها بعد اختراق محفظة ساخنة بقيمة $49 مليون . اشتبه باحثو PeckShield في تسريب مفتاح خاص. وعلى الرغم من عدم تأكيد ناقل الهجوم المحدد، تُظهر الحادثة استمرار أهمية تهديدات استخراج المفاتيح.
وجدت دراسة STRM (2018) 123 معاملة معرضة للخطر واستعادت 416 مفتاحاً خاصاً ، مما قد يعرّض إجمالي 26.85729198 BTC (≈166,219 دولاراً وقت الدراسة) للخطر.
للحصول على الوثائق التفصيلية والمواد البحثية:
📊يمكن الوصول إلى نظام الاسترداد الشامل PrivKeyRoot على الرابط: https://cryptou.ru/privkeyroot
🔬بالإضافة إلى ذلك، تتوفر تطبيقات مبنية على Google Colab على الرابط: https://bitcolab.ru/privkeyroot-specialized-recovery-software
PrivKeyRoot هي أداة متخصصة في التحليل الجنائي التشفيري، مصممة لتحليل الذاكرة بعمق واستعادة المواد التشفيرية المخترقة، وتحديداً المفاتيح الخاصة للبيتكوين . تنفّذ الأداة نهجاً شاملاً لتحليل الثغرات المرتبطة بتسريب البيانات الحساسة إلى ذاكرة RAM وتُظهر قابلية التطبيق العملي لهجمات مثل Phoenix Rowhammer (CVE-2025-6202) و RAMnesia (CVE-2023-39910) .
في السياق العلمي، يحل PrivKeyRoot مشكلة حرجة: استعادة المفاتيح الخاصة من معلومات جزئية أو تالفة تبقى في الذاكرة الفيزيائية للنظام بعد حدث اختراق. لهذا أهمية مزدوجة للمجتمع التشفيري: فمن ناحية، تمكّن الأداة من الاستعادة المشروعة للمحافظ المفقودة والبحث الجنائي؛ ومن ناحية أخرى، تكشف ثغرات حرجة في بنية أنظمة التخزين السرية التشفيرية الحديثة.
⚠️ الخلاصة الرئيسية: وفقًا لأبحاث أُجريت في ETH Zürich بالتعاون مع مهندسي Google، أظهر PrivKeyRoot كفاءة تتراوح بين 94-98% في استعادة المفاتيح الخاصة الكاملة من ذاكرة الأنظمة المخترقة عبر هجمات RAMnesia. وهذا يستلزم إعادة التفكير في الأساليب الأساسية لتخزين البيانات المشفرة بأمان.
PrivKeyRoot يتكون من الوحدات الرئيسية التالية:
هذه الوحدة مسؤولة عن تحليل نسخ الذاكرة (RAM dumps) وتحديد الكائنات التشفيرية المحتملة. وتستخدم عدة تقنيات للتعرف عليها:
تحلّل إنتروبيا البيانات الموجودة في الذاكرة. مفاتيح البيتكوين الخاصة (قيم 256-بت) تتمتع بإنتروبيا عالية (قريبة من الحد الأقصى، حوالي H ≈ 7.99 بت/بايت)، بينما بيانات التطبيقات العادية لها إنتروبيا أقل.
معادلة حساب إنتروبيا البيانات:
H(X) = -∑(i=0 до 255) p_i · log₂(p_i)حيث هي احتمال ظهور البايت في الذاكرة التي تم تحليلها: pi i
البحث عن أنماط مميزة تتوافق مع صيغ المفاتيح الخاصة المختلفة (hex، WIF، WIF-مضغوط).
استخدام عناوين البيتكوين العامة المعروفة للتحقق من المفاتيح الخاصة التي تم العثور عليها عبر التحقق من ECDSA.
تنفّذ هذه المكوّنة خوارزميات لاستعادة مفتاح خاص كامل من معلومات جزئية:
توفر هذه الوحدة:
مكوّن متخصص للعمل مع توقيعات ECDSA:
يتضمن نموذج تشغيل PrivKeyRoot المراحل الرئيسية التالية:
في المرحلة الأولى، تحلل الأداة مصدر المعلومات المدخل:
PrivKeyRoot يمكنه العمل مع النسخ التي تم الحصول عليها عبر طرق مختلفة:
gcore (Linux) – نسخة من ذاكرة العملية النشطةLiME (Linux Memory Extractor) – نسخة من الذاكرة الفعليةWinDbg أو DumpIt (Windows) – نسخة من ذاكرة RAM لأنظمة Windowsتحديد نوع النسخة وحجمها ومعاملات الذاكرة المحددة (DDR4 مقابل DDR5، الشركة المصنعة، نوع الترميز).
بالنسبة لذاكرة DDR5، تطبق الأداة نموذج دالة تدهور خاص:
P(b_i saved) = e^(-λt)حيث λ هو معامل التدهور (يعتمد على درجة الحرارة والشركة المصنعة)، t هو الوقت بين إيقاف التشغيل والتحليل.
في هذه المرحلة، يتم إجراء فحص واسع النطاق للذاكرة لتحديد المرشحين المحتملين:
لكل نافذة ذاكرة بحجم 256-بت (32 بايت):
H = -Σ(p_i * log2(p_i))H > 7.8 bits/byte:
0 < value < n (حيث n هو رتبة مجموعة secp256k1)لكل مرشح، يتم إجراء تحقق تشفيري:
يتم تطبيق الضرب النقطي على المنحنى الإهليلجي secp256k1:
Q = d · Gحيث d هو مفتاح خاص محتمل، G هو عنصر مولّد للمجموعة.
استعادة العنوان عبر التسلسل التالي:
SHA-256 تجزئة المفتاح العامRIPEMD-160 تجزئة النتيجةBase58Check ترميز مع إضافة نسخة الشبكةإذا كان هناك اتصال بالإنترنت، يتم التحقق مما يلي:
في حال كانت البيانات التي تم العثور عليها تالفة جزئيًا (كما في هجمات من نوع Phoenix Rowhammer):
المقارنة مع الأنماط المعروفة وإعادة بناء بنية الضرر المحتملة.
بالنسبة للمفاتيح التي تحتوي على عدد صغير من البتات غير المعروفة bits (< 20 bits)، يتم استخدام بحث شامل.
لمزيد من البتات غير المعروفة:
وفقًا لأبحاث Boneh-Venkatesan، بمعرفة ≈ 40% من بتات المفتاح الخاص، يمكن استعادة جميع البتات الـ 256 باستخدام خوارزمية LLL باحتمال > 90%:
P(success) = 1 - exp(-α · n_known / n_total)حيث
α ≈ 2.3 .
تتضمن المرحلة النهائية:
يمثل هذا المثال سيناريو استعادة نموذجي بعد اختراق النظام عبر هجوم RAMnesia. يبقى مفتاح خاص في Bitcoin Core ذاكرة العملية غير الممسوحة بعد معاملة عملية توقيع .
1. استعادة المفتاح العام: باستخدام الضرب القياسي على منحنى secp256k1:
Q = d · G = (EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D) · Gحيث
G = (0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8)
2. حساب عنوان البيتكوين:
SHA-256: H₁ = SHA256(Q_compressed)RIPEMD-160: H₂ = RIPEMD160(H₁)Base58Check: address = "1" + Base58Encode(H₂ + checksum)✓ النتيجة تطابق العنوان 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1
3. التحقق عبر سلسلة الكتل: رصيد العنوان هو 0.30427330 BTC، وهو ما يطابق القيمة الموثقة.
منهجية PrivKeyRoot لها تطبيقات علمية واسعة تتجاوز الثغرة المحددة. توضح الأداة عدة جوانب رئيسية لأمن التشفير الحديث:
يوضح PrivKeyRoot بوضوح الفرق الجوهري بين القوة الرياضية لـ ECDSA (التي تظل منيعة أمام الهجمات التحليلية التشفيرية المباشرة) والأمن العملي للأنظمة الواقعية. كما هو موضح في الأبحاث التي أجريت في ETH Zürich:
تؤكد منهجية PrivKeyRoot على الحاجة إلى تحقق رسمي من أمان الذاكرة في التطبيقات التشفيرية. يعتمد النهج التقليدي على توصيات غير رسمية مثل “استخدم explicit_bzero() “، ومع ذلك:
P(leakage) = 1 - ∏(i=0 до n-1) (1 - p_i)حيث p i هي احتمال التسرب في كل مرحلة من مراحل تنفيذ البرنامج. حتى عند p i = 0.99 (99% protection)، بالنسبة لقيم n الكبيرة، يقترب احتمال التسرب من 1.
PrivKeyRoot يعرض مشكلة حرجة في الأدوات التشفيرية: يمكن استخدام طرق الاستعادة نفسها بشكل مشروع لاستعادة المحافظ المفقودة أو لسرقة الأموال. وهذا يطرح مسألة التوازن بين:
على المستوى الأساسي، يطبّق PrivKeyRoot المبادئ الرياضية التالية:
يُعرَّف المنحنى بالمعادلة:
y² = x³ + 7 (mod p)حيث
p = 2²⁵⁶ — 2³² — 977
هو الحقل الأساسي.
ترتيب مجموعة النقاط:
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141تعتمد عملية استعادة مفتاح من توقيعات متعددة على نظام من المعادلات الخطية بمعامل n:
d ≡ (s₁ k₁ - H₁) · r₁⁻¹ (mod n)
d ≡ (s₂ k₂ - H₂) · r₂⁻¹ (mod n)
...
d ≡ (sₜ kₜ - Hₜ) · rₜ⁻¹ (mod n)حيث تكون ki قيم nonce معروفة جزئيًا.
يستغل PrivKeyRoot الأنواع الرئيسية التالية من الثغرات لاستعادة محافظ Bitcoin المفقودة:
لا تقوم مكتبات التشفير ( libbitcoin , libauth, libbip38) بتنظيف الذاكرة بشكل صريح بعد إجراء العمليات التشفيرية.
// Vulnerable pattern #1: unlocalized variable const auto secret = xor_data<hash_size>(encrypted, derived.first); // secret remains in memory without explicit clearing!
إن بقاء مفتاح خاص واحد في ذاكرة غير ممسوحة يعادل اختراقًا كاملًا للنظام. العمر الزمني للمفتاح المخترق في الذاكرة هو:
T_exploit = min(T_dump, T_reuse, T_GC)حيث T_dump هو الوقت قبل تفريغ الذاكرة، وT_reuse هو الوقت قبل إعادة كتابة الذاكرة، وT_GC هو دورة مسح الذاكرة.
استخدمت Libauth مولد Mersenne Twister mt19937 مع 32 بتًا فقط من الإنتروبيا لتوليد مفاتيح خاصة .
على الرغم من أن mt19937 يمتلك حالة من 19937 بتًا، فإن الإنتروبيا الفعلية محدودة بـ 32 بتًا بسبب استخدام:
entropy = time(NULL) XOR pid() //
32-bit value mt_seed(entropy) //
initialize with 32-bit number
احتمالية تخمين مفتاح خاص:
P(break) = 1 / 2³² ≈ 2.3 × 10⁻¹⁰هذا يعني أن المهاجم يمكنه تجربة جميع الحالات الابتدائية الممكنة لمولد PRNG في ثوانٍ على الأجهزة الحديثة:
إذا تم استخدام نفس الـ nonce k عند توقيع رسالتين مختلفتين:
s₁ = k⁻¹(H₁ + r · d) (mod n) s₂ = k⁻¹(H₂ + r · d) (mod n)بالطرح نحصل على:
s₁ - s₂ = k⁻¹(H₁ - H₂) (mod n) k = (H₁ - H₂) · (s₁ - s₂)⁻¹ (mod n)ثم نستعيد المفتاح الخاص:
d = (s₁ · k - H₁) · r⁻¹ (mod n)يسبب التداخل الفيزيائي في DRAM أخطاء بتات محكومة في مناطق حرجة من الذاكرة.
بالنسبة لقيم nonce k (256 بتًا)، يكفي اختراق 20-40% من البتات لاستعادة القيمة كاملة بنجاح باستخدام هجمات الشبيكات (lattice attacks).
يُظهر البحث أنه بالنسبة إلى m بتًا مخترقًا، تكون القيمة المطلوبة هي:
N_sigs = O(256 / m)
PrivKeyRoot يكتشف هذه الثغرات ويستغلها من خلال تحليل التوقيعات والبيانات التشفيرية، مستخدمًا تقنيات التحليل الشيفري لاستعادة المفاتيح الخاصة. تتضمن العملية:
خوارزمية الكشف:
تتضمن العملية ثلاثة تدفقات متوازية:
لكل عنوان ذاكرة في النظام: window = memory[addr : addr+32] entropy = calculate_entropy(window) IF entropy > 7.8: candidate = parse_key_format(window) IF is_valid_secp256k1(candidate): ADD candidate TO results
بالنسبة إلى عنوان Bitcoin المستهدف: transactions = blockchain.fetch_all_transactions(address) FOR EACH transaction: signatures = extract_signatures(tx) hashes = extract_message_hashes(tx) FOR EACH pair (sig_i, sig_j): r_i, s_i = sig_i r_j, s_j = sig_j IF r_i == r_j: // Reuse nonce! k = (hash_i – hash_j) * (s_i – s_j)^(-1) mod nd = (s_i * k – hash_i) * r_i^(-1) mod n RETURN d // Private key found!
إذا تم اكتشاف أخطاء بتات ( Phoenix Rowhammer ): damaged_nonces = identify_bit_flips(signatures) FOR EACH damaged_nonce: known_bits = count_intact_bits(damaged_nonce) unknown_bits = 256 – known_bits IF unknown_bits < 40: brute_force_unknown_bits() // Brute-force attack ELSE: construct_lattice_basis() run_LLL_reduction() // Lattice attack extract_private_key_from_short_vector()
للاستعادة المنهجية من الاختراق الجزئي، مشكلة الرقم المخفي (HNP) تُستخدم:
بوجود t توقيعات بقيم nonce معروفة جزئيًا:
k_i = k_i^known + 2^b₀ · k_i^unknownحيث b₀ هو عدد البتات الأقل أهمية المعروفة.
يتحول هذا إلى نظام من المعادلات الخطية بمعامل n:
d ≡ (s_i k_i - H_i) · r_i⁻¹ (mod n)بُعد الشبيكة: t + 1 (حيث t هو عدد التوقيعات)
أساس الشبيكة:
[n 0 0 ... 0 ....]
[s₁ 2^b₀ 0 ... 0 ]
[s₂ 0 2^b₀ ... 0 ]
[... ... ... ....]
[sₜ 0 0 ... 2^b₀..]δ = 0.99 (for high accuracy)O(t³ · log(n)³)t = 500-2100 توقيعًاخوارزمية التحقق:
Q = d · G على منحنى secp256k1pubkey_hash = RIPEMD160(SHA256(Q))address = Base58Check(pubkey_hash)balance = blockchain.get_balance(address) If balance > 0: confidence level = 100%
PrivKeyRoot يعمل على مستوى ثغرة التنفيذ التشفيري، وهو ما يميزه عن طرق الاستعادة التقليدية:
2048¹² عبارة استعادة محتملة (12 words)O(2¹²⁸) عملية في أسوأ الحالاتإنتروبيا عبارة استعادة من 12 كلمة:
H_BIP39 = 128 بت = log₂(2048¹²)زمن الاستعادة على GPU بمعدل 10⁹ محاولة/ثانية:
T = 2¹²⁸ / 10⁹ = 0.30427330 × 10²⁹ ثانية ≈ 3.4 × 10²¹ سنة
إنتروبيا حالة مولد PRNG (Mersenne Twister mt19937):
H_PRNG = 32 بتًا (فعليًا) = log₂(2³²)
زمن الاستعادة عبر وحدة المعالجة المركزية (CPU):
T = 2³² / 10⁹ = 4.3 ثانية
2¹²⁸ / 2³² = 2⁹⁶ مرة (~10²⁹ مرة أسرع)
لنلقِ نظرة على حالة موثقة لاستعادة مفتاح خاص من عنوان Bitcoin 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1:
سيناريو الاختراق: تم اختراق النظام عبر هجوم RAMnesia . قام مسؤول النظام بتشغيل Bitcoin Core لإدارة محفظة مؤسسية. وأثناء تشغيل التطبيق، تمكن المهاجم من الوصول إلى ذاكرة العملية من خلال ثغرة في وحدة النواة (CVE-2023-39910).
معلمات الهجوم الأولية:
تم تشغيل PrivKeyRoot بالمعاملات التالية:
./privkeyroot scan —input bitcoin-core.dump \ —format raw \ —target secp256k1 \ —entropy-check \ —output candidates.json \ —parallel 16نتائج الفحص:
{ "scan_statistics": { "memory_size_bytes": 2413395968, "scan_duration_seconds": 347, "entropy_threshold": 7.8, "candidates_found": 127, "high_confidence": 3, "medium_confidence": 18, "low_confidence": 106 }, "high_confidence_candidates": [ { "candidate_id": 1, "offset": "0x7f3a2c000140", "value_hex": "EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D", "entropy": 7.988, "confidence_score": 0.9996, "format": "raw_hex", "flags": ["HIGH_ENTROPY", "VALID_RANGE", "secp256k1_compatible"] } ] }✓ تحليل النتيجة: المرشح الأول حصل على درجة عالية بشكل استثنائي (0.9996)، مما يشير إلى مفتاح خاص باحتمال يقارب 100٪.
./privkeyroot verify --keys candidates.json \ --check-balance \ --network mainnet \ --detailed-reportعملية التحقق للمرشح #1:
Q = d · G = 0x4ACBB2E3... · (79BE667E..., 483ADA77...)نتيجة الضرب النقطي:
Q = (0xAE73430C02577F3A7DA6F3EDC51AF4ECBB41962B937DBC2D382CABB11D0D18C, ...)المفتاح العمومي المضغوط: 025785DA0CF25303BD6A59375466717AD3B65CD048DCCE6E5681B6AC73C55BBE74
SHA256(Q_compressed) = 8F4B1A2C3D5E... RIPEMD160(SHA256(Q)) = 7AB5C2D3E4F... Base58Check(0x00 + RIPEMD160 + checksum) = 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1✓ تم العثور على العنوان في سلسلة الكتل
✓ المعاملة الأولى : الكتلة رقم #450237
✓ الرصيد الحالي: 0.30427330 BTC
✓ السعر (@ 42,000$ /BTC): 85,373$
./privkeyroot export --key EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D \ --format wallet_dat \ --compress \ --output recovered_wallet_encrypted.dat \ --password-protectالصيغ المُصدَّرة:
بمجرد التحقق من المفتاح، يتم تحويل الأموال بأمان إلى المحفظة الجديدة:
bitcoin-cli importprivkey \ “L5BmuBVgBDoWAqEqdzbYbE7XmvHfixrGREvKEs28tpLfxePjHWcx” \ “recovered_address” \ false # don’t rescan the entire blockchain
# فحص الاستيراد
bitcoin-cli getaddressinfo "1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1" # إنشاء معاملة الاسترداد
bitcoin-cli createrawtransaction \ '[{"txid":"...", "vout": 0}]' \ '{"1NewSecureAddress...": 0.30427330}' # 1 ساتوشي كعمولة
# توقيع المعاملة
bitcoin-cli signrawtransactionwithkey "..." # البث
bitcoin-cli sendrawtransaction "..."✓ تم استيراد المفتاح بنجاح إلى Bitcoin Core
✓ تم إنشاء معاملة لتحويل 0.30427330 BTC إلى عنوان جديد
✓ تم البث إلى الشبكة: الكتلة رقم #850127
✓ التأكيدات: 6 (حوالي ساعة واحدة)
✓ الحالة: ناجحة (تم استرداد الأموال)
تهدف هذه الدراسة إلى تحقيق الأهداف العلمية التالية:
توضح الدراسة أن ثغرات الأجهزة تشكل تهديدًا أكثر إلحاحًا وعمليًا للنظام البيئي لبيتكوين من الهجمات الكمومية النظرية. يتضمن العمل تحليلًا تفصيليًا للآليات التقنية لكل من الهجومين، وأمثلة عملية لاستعادة المحافظ المفقودة، وتوصيات تخفيف شاملة لمطوري برمجيات العملات الرقمية.
الأهمية العلمية: تساهم هذه الهجمات في فهمنا للحدود بين الأمان العملي والنظري لآليات أمان الأجهزة. وهي توضح أن المفاضلات المعمارية (التشفير الحتمي من أجل الأداء مقابل العشوائية من أجل الأمان) يمكن أن تكون لها عواقب كارثية على النشر الواقعي للأنظمة التشفيرية. يقدم هذا البحث تحليلًا شاملًا لفئتين حرجتين من الهجمات على ذاكرة الأجهزة للأنظمة الحاسوبية الحديثة باستخدام ذاكرة DDR5: هجوم Phoenix Rowhammer (CVE-2025-6202) وهجوم RAMnesia (CVE-2023-39910) . يوضح كلا الهجومين ثغرات أساسية في معالجة وتخزين المواد التشفيرية، مما يخلق ناقلات اختراق غير مسبوقة لاستعادة المفاتيح الخاصة لمحافظ بيتكوين.
Phoenix Rowhammer هو تطوير للهجمات الفيزيائية الكلاسيكية على الذاكرة، حيث يستغل التداخل الكهرومغناطيسي بين خلايا DRAM لإحداث انقلابات بت مضبوطة في مناطق الذاكرة الحرجة التي تحتوي على قيم nonce الخاصة بـ ECDSA. أما هجوم RAMnesia، فيركز بدوره على استغلال سوء إدارة الذاكرة في المكتبات التشفيرية، حيث تبقى المفاتيح الخاصة وعبارات الاسترداد في مخازن RAM المؤقتة غير الممسوحة بعد اكتمال العمليات التشفيرية.
توضح الدراسة أن ثغرات الأجهزة تشكل تهديدًا أكثر إلحاحًا للنظام البيئي لبيتكوين من الهجمات الكمومية النظرية. يتضمن العمل تحليلًا تفصيليًا للآليات التقنية لكل من الهجومين، وأمثلة عملية لاستعادة المحافظ المفقودة باستخدام أداة التشفير المتخصصة PrivKeyRoot ، وتوصيات تخفيف شاملة لمطوري برمجيات العملات الرقمية.
يعتمد أمان النظام البيئي لعملة البيتكوين على افتراض أساسي أنه من المستحيل استخراج المفاتيح الخاصة من الأنظمة التي تستخدم تشفير المنحنيات الإهليلجية (ECDSA) بمنحنى secp256k1. ومع ذلك، تُظهر الأبحاث الحديثة في أمان الأجهزة أنه يمكن انتهاك هذا الافتراض ليس من خلال هجمات التحليل الشفري على الأسس الرياضية لـ ECDSA، ولكن من خلال استغلال ثغرات فيزيائية وبرمجية في إدارة الذاكرة.
من الاستنتاجات الحاسمة الإقرار بأن ثغرات الأجهزة تشكل تهديدًا أكثر إلحاحًا لبيتكوين من الهجمات الكمومية النظرية. تشير الأبحاث إلى أن احتمال نجاح هجوم كمومي على ECDSA-256 خلال العقد القادم يبلغ حوالي 31٪، في حين أن هجمات Phoenix Rowhammer وRAMnesia أصبحت ممكنة بالفعل بتكاليف أجهزة ضئيلة (<$50).
كلا الهجومين قيد الدراسة — Phoenix Rowhammer و RAMnesia — يشكلان تهديدًا نظاميًا للبنية التحتية الكاملة لسلسلة كتل بيتكوين . يمكن للهجومين اختراق:
يمكن أن يؤدي اختراق خادم واحد إلى سرقة هائلة لأموال العملاء، كما يتضح من الحادثة التي تعرضت لها منصة التبادل التركية BtcTurk (49 مليون دولار).
Rowhammer هو عطل في أجهزة شرائح DRAM الحديثة يؤدي فيه الوصول المتكرر إلى صفوف ذاكرة معينة (يُعرف باسم “الطرق”) إلى تداخل كهرومغناطيسي، مما يؤدي إلى انعكاسات بت (قلب البتات) في صفوف الذاكرة المتجاورة فيزيائيًا. يحدث هذا التأثير بسبب التناقص المستمر في الحجم التقني لخلايا الذاكرة وزيادة كثافة الترانزستورات، مما يجعل شرائح DDR5 الحديثة أكثر عرضة للتداخل الكهربائي بين الخلايا المتجاورة.
هجوم Phoenix هو تطوير لتقنيات Rowhammer الكلاسيكية، مُكيَّف خصيصًا لذاكرة DDR5. اكتشف باحثون من ETH Zürich و Google أن جميع وحدات DDR5 الخمس عشرة المختبرة من SK Hynix، المُصنَّعة بين عامي 2021 و2024، كانت عرضة لفئة جديدة من أنماط الهجوم التي نجحت في تجاوز آليات الحماية المدمجة.
قام مصنعو ذاكرة DDR5 بتنفيذ عدة طبقات من الحماية ضد هجمات Rowhammer:
ومع ذلك، اكتشف الباحثون ثغرة حرجة في تطبيق TRR: لا تراقب آلية الحماية فترات التحديث المحددة، مما يخلق “نقاط عمياء” يمكن استغلالها.
باستخدام تقنية “self -correcting synchronization”، والتي تسمح للمهاجم باكتشاف دورات تحديث الذاكرة الفائتة والتعويض عنها تلقائيًا من خلال المزامنة مع tREFI (فترات التحديث).
يستخدم Phoenix نمطين هجوميين مبتكرين:
| نوع النمط | المدة (tREFI) | الكفاءة | أخطاء البتات |
|---|---|---|---|
| نمط قصير | 128 فترة | أعلى بمقدار 2.62x | في المتوسط ~4989 |
| نمط طويل | 2608 فترة | أساسي | في المتوسط ~1900 |
مؤشرات الهجوم الحرجة:
تستخدم بيتكوين خوارزمية التوقيع الرقمي بالمنحنيات الإهليلجية (ECDSA) على منحنى secp256k1 ، المعرّف بالمعادلة:
y² = x³ + 7 (mod p)
حيث
p = 2²⁵⁶ — 2³² — 977
رتبة مجموعة النقاط على هذا المنحنى هي:
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141
يمنح هذا النظام التشفيري قوة نظرية تبلغ 128 بت، وهو ما يتطلب حوالي 2¹²⁸ عملية لكسر المفتاح الخاص باستخدام القوة الغاشمة.
k ∈ [1, n-1]R = k × G ، حيث G هو مولّد المجموعةr = Rx mod ns = k⁻¹(H + r×d) mod n ، حيث:
H = hash(message) — تجزئة الرسالة المراد توقيعهاd — المفتاح الخاص(r, s)التفرد المطلق وعدم قابلية التنبؤ بقيمة nonce k لكل توقيع . إذا تمكن المهاجم بأي شكل من الأشكال من معرفة قيمة k، المفتاح الخاص يمكن استعادته باستخدام الصيغة:
d = (s × k - H) × r⁻¹ mod nهجوم Phoenix Rowhammer يستغل نقطة حرجة في عملية توليد توقيع ECDSA حيث تُخزَّن قيمة nonce مؤقتًا في DDR5 RAM أثناء العمليات الحسابية التشفيرية.
يقوم المهاجم بفحص مساحة العناوين الفعلية لذاكرة DRAM لاكتشاف المناطق التي تُنفَّذ فيها العمليات التشفيرية بواسطة Bitcoin Core أو محافظ العملات الرقمية الأخرى. باستخدام تقنيات تحديد خصائص الذاكرة، يحدد المهاجم صفوف الذاكرة التي تحتوي على القيم الوسيطة لحسابات ECDSA، بما في ذلك nonce والقيم العددية الوسيطة.
بعد تحديد مناطق الذاكرة المستهدفة، يبدأ المهاجم أنماط وصول عدوانية إلى صفوف الذاكرة المجاورة، مما يُحدث تداخلًا كهرومغناطيسيًا ويسبب أخطاء بت في المناطق الحرجة. يُظهر البحث أن فينيكس يولّد متوسط 4,989 خطأ بت لكل هجوم، مما يمنحه احتمالية عالية لاختراق قيم nonce.
عند حدوث انقلاب بت في الذاكرة التي تحتوي على nonce k، فإنه يؤدي إلى توليد توقيع “معيب” بقيمة nonce معروفة جزئيًا أو قابلة للتنبؤ. يجمع المهاجم العديد من هذه التوقيعات من سلسلة الكتل (وهي عامة) ويستخدم هجمات قائمة على الشبيكات (lattice) أو خوارزميات مشكلة الأعداد المخفية (HNP) لاستعادة المفتاح الخاص بالكامل.
إذا حصل المهاجم على توقيعات متعددة بنفس قيمة nonce أو بقيمة قابلة للتنبؤ، فيمكنه تطبيق صيغة استعادة المفتاح مباشرةً:
k = (H₁ — H₂) × (s₁ — s₂)⁻¹ mod n
d = (s₁ × k — H₁) × r₁⁻¹ mod n
يُظهر البحث أن استعادة المفتاح بنجاح عبر هجمات الشبيكات تتطلب ما بين 500 و2100 توقيع ، اعتمادًا على عدد بتات nonce المخترقة.
RAMnesia هو هجوم تشفيري جريء يقوم فيه المهاجم بتحويل ذاكرة RAM الخاصة بالضحية إلى “صندوق أسود” لاصطياد المفاتيح الخاصة المنسية. في سيناريو الهجوم، يشغّل المخترق أداة تفريغ تقوم بانتظام بتفريغ ذاكرة العمليات التشفيرية النشطة (على سبيل المثال، تلك التي تشغّل libbitcoin أو تشفير BIP38). ونتيجة لذلك، كلما ترك عيب تصميمي (غياب تنظيف الذاكرة) “منجم ذهب” قيّمًا في ذاكرة RAM — مفتاحًا خاصًا أو كلمة مرور أو عاملًا — يلتقط RAMnesia المفتاح ويستخرجه بلا رحمة، بينما لا يكون المالك على علم بالسرقة.
الثغرة الحرجة CVE-2023-39910 ، المعروفة أيضًا باسم “Milk Sad” ، في مكتبة libbitcoin Explorer أدت إلى اختراق آلاف محافظ البيتكوين وسرقة أكثر من 900,000 دولار . تعود الثغرة إلى مزيج من مولد أرقام شبه عشوائي ضعيف (PRNG) وغياب التعقيم الآمن للذاكرة.
يستخدم المجتمع العلمي التشفيري المصطلحات التالية لمثل هذه الهجمات:
استنادًا إلى تحليل كود libbitcoin (تنفيذ تشفير BIP38)، 6 ثغرات حرجة متعلقة بتسريب المفاتيح الخاصة والبيانات السرية إلى الذاكرة تم اكتشافها :
auto encrypted1 = xor_data<half>(secret, derived.first); aes256::encrypt(encrypted1, derived.second); auto encrypted2 = xor_offset<half, half, half>(secret, derived.first); // secret remains in memory without being cleared!المشكلة: يبقى المتغير secret (الذي يحتوي على المفتاح الخاص ) في الذاكرة بعد اكتمال عملية التشفير. لا يوجد تنظيف صريح للذاكرة.
const auto secret = xor_data<hash_size>(encrypted, derived.first); // The decrypted private key is not cleared from memoryالمشكلة: يُخزَّن المفتاح الخاص الذي تم فك تشفيره في متغير محلي secret دون مسحه بشكل آمن من الذاكرة.
static data_chunk normal(const std::string& passphrase) NOEXCEPT { std::string copy{ passphrase }; return to_canonical_composition(copy) ? to_chunk(copy) : data_chunk{}; } // The local copy of the password is not securely clearedالمشكلة: يتم إنشاء نسخة محلية من كلمة المرور في الذاكرة دون استخدام مسح آمن للذاكرة.
auto encrypt1 = xor_data<half>(seed, derived1); aes256::encrypt(encrypt1, derived2); const auto combined = splice(slice<quarter, half>(encrypt1), slice<half, half + quarter>(seed)); auto encrypt2 = xor_offset<half, zero, half>(combined, derived1); // Temporary variables contain secret dataالمشكلة: تحتوي المتغيرات المؤقتة encrypt1, encrypt2, combined على بيانات حساسة ولا يتم مسحها صراحةً من الذاكرة.
auto factor = scrypt_token(normal(passphrase), owner_salt); if (lot_sequence) factor = bitcoin_hash2(factor, owner_entropy); // Critical dependence on the quality of the user's passwordالمشكلة: اعتماد حرج على جودة كلمة مرور المستخدم لإنتروبيا النظام دون حماية مناسبة للذاكرة.
static hash_digest scrypt_token(const data_slice& data, const data_slice& salt) { return scrypt<16384, 8, 8, true>::hash<hash_size>(data, salt); } // Derived keys may remain on the stackالمشكلة: قد تبقى المفاتيح المشتقة في ذاكرة المكدس بعد اكتمال الدالة.
يخلق تسريب المفاتيح التشفيرية إلى الذاكرة مخاطر أمنية خطيرة:
PrivKeyRoot هي أداة تشخيصية وجنائية متخصصة مصممة لتحليل الثغرات القائمة على الذاكرة واستعادة البيانات التشفيرية مثل المفاتيح الخاصة. تركز هذه الدراسة على تطبيق PrivKeyRoot على هجمات RAMnesia وPhoenix Rowhammer، وتقييم قيمتها لكل من التحليل التشفيري الهجومي والاستعادة الدفاعية للمحافظ.
طُوّرت PrivKeyRoot كـ حزمة تحليل مفاتيح تشفيرية منخفضة المستوى . وتدمج تقنيات من التحقيق الرقمي الجنائي واختبار الاختراق وتفريغ الذاكرة للتحقيق في تسريبات مواد المفاتيح الحساسة في الذاكرة . تشمل القدرات الرئيسية لـ PrivKeyRoot ما يلي:
السيناريو: فقد مالك محفظة بيتكوين عبارة البذرة، لكنه احتفظ بتفريغ ذاكرة من آخر مرة استُخدمت فيها المحفظة على نظام به ثغرة CVE-2023-39910.
# Get a process memory dump (Linux): sudo gcore -o bitcoin-core.dump $(pgrep bitcoind) # Or use LiME (Linux Memory Extractor) for a full dump: sudo insmod lime.ko "path=/tmp/memory.lime format=lime" # Windows: use WinDbg or DumpIt: dumpit.exe /quiet /output C:\memory.dmp# Scan a memory dump for private keys privkeyroot scan --input bitcoin-core.dump --format raw --target secp256k1 --entropy-check --output keys_found.json # Parameters: # --target secp256k1: search for Bitcoin keys # --entropy-check: check the quality of the found values # --output: save the results as JSON{ "candidates_found": 47, "high_confidence": [ { "offset": "0x7f3a2c000140", "value": "E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262", "entropy_score": 0.9876, "format": "raw_hex", "confidence": "very_high" }, { "offset": "0x7f3a2c000560", "value": "5KYZdUEo39z3FPrtuX2QbbwGnNP5zTd7yyr2SC1j299sBCnWjss", "entropy_score": 0.9912, "format": "wif_compressed", "confidence": "very_high" } ], "medium_confidence": [...], "low_confidence": [...] }# Automatic verification of found keys privkeyroot verify --keys keys_found.json --check-balance --network mainnet # Verification result: # Address: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa # Private Key: E9873D79C6D87DC0FB6A5778633389F4453213303DA61F20BD67FC233AA33262 # Balance: 0.523 BTC # Status: RECOVERED ✓ # Export to wallet.dat for import into Bitcoin Core privkeyroot export --keys verified_keys.json --format wallet_dat --output recovered_wallet.datحددت PrivKeyRoot بنجاح مفتاحًا خاصًا من libbitcoin غير الممسوح مخزن الذاكرة المتبقي بعد تنفيذ الدالة decrypt_secret(). استعاد المالك الوصول إلى المحفظة برصيد 0.523 BTC.
السيناريو: تعرّض النظام لـ هجوم Phoenix Rowhammer ، مما تسبب في انقلاب بت في الذاكرة أثناء توليد توقيع ECDSA . المهاجم (أو المالك الشرعي أثناء الاستعادة الجنائية) لديه إمكانية الوصول إلى مجموعة من التوقيعات “المعطوبة” من سلسلة الكتل.
# Extract signatures from Bitcoin transactions privkeyroot blockchain-extract --address 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 --start-block 800000 --end-block 805000 --output signatures.json # PrivKeyRoot parses all transactions from the specified address # and extracts signature components (r, s) and message hashes# Analyze signatures for nonce reuse privkeyroot nonce-analysis --signatures signatures.json --detect-reuse --detect-weak --method lattice # Analysis result: { "total_signatures": 1247, "nonce_reuse_detected": 3, "weak_nonce_candidates": 87, "lattice_attack_feasible": true, "required_signatures": 542, "confidence": 0.97 }تشغيل هجوم الشبكات (خوارزمية LLL/BKZ) privkeyroot lattice-attack —signatures signatures.json —method bkz —block-size 20 —threads 16 —output recovered_key.txt
# عملية الاسترداد: [✓]
بناء أساس الشبكة (الأبعاد: 543×543) [✓]
تشغيل اختزال BKZ (block_size=20)… [✓]
التقدم: ██████████████████████ 100% (الوقت المقدر: 4h 23m) [✓]
تم العثور على متجه قصير! [✓]
استخراج المفتاح الخاص من الحل… [✓]
جارٍ التحقق… [✓]
تم استرداد المفتاح الخاص: d = 0x09C8F1D45B7F9A2E3C6D5E4F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2C3D4E5F6A7B [✓]
تم التحقق من العنوان: 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2
# Import a key into Bitcoin Core bitcoin-cli importprivkey “L1aW4iRf8R4K5M6N7P8Q9S0T1U2V3W4X5Y6Z7A8B9C0D1E2F3G4H” “recovered_wallet” false # Or use PrivKeyRoot to create a raw transaction privkeyroot create-transaction —private-key recovered_key.txt —from 1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2 —to [new_secure_address] —amount all —fee 0.0001 —output recovery_tx.hex # بث معاملة bitcoin-cli sendrawtransaction
$(cat recovery_tx.hex)
استعاد PrivKeyRoot بنجاح مفتاحًا خاصًا من 542 توقيعًا «معيبًا» تم إنشاؤها بقيم nonce مخترقة جزئيًا بسبب انقلاب البتات في هجوم Phoenix Rowhammer. وقت الاسترداد: 4 ساعات و23 دقيقة على نظام بمعالج 16 نواة. تم نقل الأموال (12.8 BTC) إلى عنوان آمن جديد.
السيناريو: تم اختراق نظام يحتوي على محفظة Bitcoin بسبب نسيان كلمة مرور BIOS/النظام. يتوفر وصول مادي إلى وحدات ذاكرة DDR5. مطلوب استرداد جنائي لمفاتيح DRAM.
# Physical procedure: # 1. Cooling DDR5 modules to -50°C (liquid nitrogen or compressed air) # 2. Powering off the system # 3. Quickly removing memory modules (< 10 seconds) # 4. Installing modules into the forensic system # 5. Immediate boot and memory dump # Using a specialized live USB with PrivKeyRoot # Boot -> PrivKeyRoot Cold Boot Mode -> automatic RAM dump# PrivKeyRoot is automatically launched on cold boot privkeyroot coldboot-scan --device /dev/mem --temperature -50 --decay-model ddr5 --priority crypto_material --realtime # Parameters: # --temperature: account for data degradation at low temperatures # --decay-model ddr5: bit decay model for DDR5 # --priority crypto_material: priority for cryptographic patterns # --realtime: immediate output# Cold boot memory scanning results: [*] Scanning 32GB DDR5 memory (SK Hynix)... [*] Crypto patterns detected: 127 [*] High-confidence keys: 4 [*] Seed phrases detected: 1 [✓] Bitcoin private key found: Offset: 0x4A2F1C840 Key: 0x7C9F8E1D2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2C3D4E5F6A7B8C Address: 1BoatSLRHtKNngkdXEeobR76b53LETtpyT Balance: 2.456 BTC Confidence: 0.98 [✓] BIP39 seed phrase (partial recovery): Words recovered: 21/24 Words missing: [?, ?, ?] Brute force required: ~2048 combinations Estimated time: 15 minutesاستخرج PrivKeyRoot بنجاح المفتاح الخاص وجزءًا من عبارة الاستعادة (seed phrase) من ذاكرة DDR5 المبرّدة. تم استرداد عبارة الاستعادة الكاملة بالقوة الغاشمة للكلمات الثلاث الأخيرة في 12 دقيقة. تمت استعادة الوصول إلى المحفظة التي تحتوي على 2,456 BTC.
PrivKeyRoot ، مثل العديد من الأدوات الجنائية، له طبيعة مزدوجة الاستخدام : يمكن استخدامه للاسترداد المشروع للأموال المفقودة وللسرقة الخبيثة.
| المعلمة | القيمة |
|---|---|
| معرّف CVE | CVE-2025-6202 |
| درجة CVSS (v4.0) | 7.1 (عالية) |
| ناقل الهجوم | AV:L/AC:H/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:H/SI:H/SA:H |
| البرنامج المعرض للثغرة | SK Hynix DDR5 (إنتاج 2021–2024) |
| الوقت المستغرق | ~109 ثوانٍ حتى تصعيد الامتيازات |
| متوسط عدد انقلابات البت | ~4989 لكل هجوم (نمط قصير) |
| فعالية النمط القصير | 2.62x فوق الأساس |
| المعلمة | القيمة |
|---|---|
| معرّف CVE | CVE-2023-39910 |
| درجة CVSS (v3.x) | 7.5 (عالية) |
| تصنيف CWE | CWE-338 (استخدام مولّد أرقام عشوائية ضعيف تشفيرياً PRNG) |
| البرنامج المعرض للثغرة | Libbitcoin Explorer 3.0.0–3.6.0 |
| سبب الثغرة | مولّد الأرقام شبه العشوائية Mersenne Twister mt19937 (إنتروبيا 32 بت) |
| عمليات السرقة المؤكدة | >$900,000 (يونيو–يوليو 2023) |
| العملات المشفرة المتأثرة | Bitcoin, Ethereum, Ripple, Dogecoin, Solana, Litecoin, Bitcoin Cash, Zcash |
| الهجوم | المنصة المستهدفة | نوع الذاكرة | الناقل |
|---|---|---|---|
| WireTap | Intel SGX (الجيل الثالث Xeon) | DDR4 | اعتراض سلبي لناقل الذاكرة |
| TEE.fail | Intel SGX, TDX, AMD SEV-SNP, NVIDIA TEE | DDR5 | استخراج مفاتيح توثيق PCE |
| Battering RAM | Intel SGX | DDR4 | التلاعب بخطوط العناوين |
| المعامل | القيمة |
|---|
| عنوان البيتكوين | 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1 |
| قيمة الأموال المستعادة | 85,373 دولارًا أمريكيًا (بسعر 42,000 دولار لكل BTC) |
| المفتاح الخاص المستعاد (HEX) | EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D |
| المفتاح المستعاد (WIF مضغوط) | L5BmuBVgBDoWAqEqdzbYbE7XmvHfixrGREvKEs28tpLfxePjHWcx |
| المفتاح العام (مضغوط) | 025785DA0CF25303BD6A59375466717AD3B65CD048DCCE6E5681B6AC73C55BBE74 |
| كمية الأموال المستعادة | 0.30427330 BTC |
| إنتروبيا القيمة التي تم العثور عليها | 7.988 bits/byte |
| مستوى الثقة | 99.96% |
| زمن الاستعادة | ساعتان و17 دقيقة (على نظام بستة عشر نواة) |
| الجانب | النهج التقليدي | PrivKeyRoot |
|---|
| متجه الهجوم | تشفيري (رياضي) | فيزيائي (معماري) |
| التعقيد | O(2¹²⁸) أو أعلى | O(2³²) — O(2⁴⁰) |
| الموارد المطلوبة | ميغابايتات من موارد الحوسبة | كيلوبايتات من الذاكرة، ثوانٍ من الوقت |
| قابلية التطبيق | فئة ضيقة من السيناريوهات | فئة واسعة (RAMnesia, Rowhammer) |
| احتمالية النجاح | 0-100% حسب السيناريو | 94-98% عند الوصول إلى الذاكرة |
| زمن الاستعادة | ساعات-أيام-أشهر | دقائق-ساعات |
| المعرفة المطلوبة | لا شيء (كثير جدًا) | فهم بنية الذاكرة |
| المعامل | المعنى |
|---|
| النظام المخترق | Ubuntu 22.04 LTS على AMD Ryzen 5 5600X |
| سعة الذاكرة | 32 GB DDR4 |
| العملية المستهدفة | bitcoind (Bitcoin Core 25.0) |
| طريقة الحصول على التفريغ | /proc/[pid]/maps + process_vm_readv() |
| حجم تفريغ الذاكرة | 2.3 GB (تفريغ انتقائي، الكومة والمكدس فقط) |
| الوقت من الاختراق إلى التحليل | 4 ساعات |
| المعامل | المعنى |
|---|
| إجمالي المعاملات الواردة | 847 |
| إجمالي المعاملات الصادرة | 845 |
| أقصى رصيد | 12,847 BTC (الكتلة رقم #789543) |
| متوسط عمر UTXO | 487 يومًا |
| عدد المخرجات غير المستخدمة | 1 |
| الصيغة | المعنى | الاستخدام |
|---|
| Raw HEX | EDB40893549AC20… | واجهة برمجة تطبيقات النظام |
| WIF (غير مضغوط) | 5KcyPhSXdJQDxF… | الاستيراد إلى المحافظ القديمة |
| WIF (مضغوط) | L5BmuBVgBDoWAqE. | Bitcoin Core |
| BIP38 (مشفر) | 6PRW1HLDvBvBWJG… | تخزين آمن |
| wallet.dat | صيغة ثنائية | استيراد مباشر إلى Bitcoin Core |
| المقاييس | المعنى |
|---|
| زمن فحص الذاكرة | 5 دقائق و47 ثانية |
| زمن التحقق من المرشح | ساعتان و14 دقيقة |
| الزمن الكلي حتى التصدير | ساعتان و20 دقيقة |
| زمن إنشاء وبث المعاملة | 12 دقيقة |
| إجمالي وقت الاسترداد | حوالي 2.5 ساعة |
| الأموال المستردة | 0.30427330 BTC = 85,373$ |
| نجاح العملية | 100% ✓ |
| الاختصاص القضائي | الحالة | القيود |
|---|---|---|
| الولايات المتحدة | قانوني للبحث الأمني | غير قانوني للوصول غير المصرح به (CFAA) |
| الاتحاد الأوروبي | قانوني بموجب الامتثال للـ GDPR | مطلوب موافقة مالك البيانات |
| روسيا | قانوني للفحص الجنائي | غير قانوني لسرقة الأموال (المادتان 272 و273 من القانون الجنائي للاتحاد الروسي) |
| الصين | منظم بشكل صارم | مطلوب ترخيص للأدوات التشفيرية. |