Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
RAMnesia-Attack — RAMnesia Attack: A Scientific Investigation of WireTap Threats to Bitcoin Infrastructure, Hardware Vulnerabilities (CVE-2025-6202, CVE-2023-39910), and Cryptanalytic Methods for ECDSA Key Recovery | Kitploit
Инструменты/GitHubGitHub/demining/ramnesia-attack
Embedded Systems SecurityMemory ForensicsVulnerability AnalysisExploitationForensicsCryptographyPenetration TestingHardware SecurityBinary AnalysisPapers & ResearchLearning & Education
16 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
GitHub
demining/ramnesia-attack

RAMnesia-Attack

RAMnesia Attack: A Scientific Investigation of WireTap Threats to Bitcoin Infrastructure, Hardware Vulnerabilities (CVE-2025-6202, CVE-2023-39910), and Cryptanalytic Methods for ECDSA Key Recovery

РепозиторийСайт
RAMnesia Attack: A Scientific Investigation of WireTap Threats to Bitcoin Infrastructure, Hardware Vulnerabilities (CVE-2025-6202, CVE-2023-39910), and Cryptanalytic Methods for ECDSA Key Recovery

В этом исследовании представлен всесторонний анализ двух критических классов атак на аппаратную память современных компьютерных систем, использующих память DDR5:  Phoenix Rowhammer Attack (CVE-2025-6202)  и  RAMnesia Attack (CVE-2023-39910) . Обе атаки демонстрируют фундаментальные уязвимости в обработке и хранении криптографического материала, создавая беспрецедентные векторы компрометации для восстановления закрытых ключей биткойн-кошельков. Исследование объединяет результаты анализа атак на доверенные среды выполнения (TEE), включая Intel SGX, AMD SEV-SNP и NVIDIA Confidential Computing, продемонстрированные в атаках WireTap и TEE.fail, раскрытых в октябре 2025 года. Безопасность экосистемы криптовалюты Bitcoin основана на фундаментальном предположении о невозможности извлечения закрытых ключей из систем, использующих криптографию на эллиптических кривых (ECDSA) с кривой secp256k1. Однако недавние исследования аппаратной безопасности, проведенные исследователями ETH Zürich совместно с инженерами Google, а также исследовательскими группами Технологического института Джорджии и Университета Пердью, показывают, что это предположение может быть нарушено не за счет криптоаналитических атак на математические основы ECDSA, а путем использования физических и программных уязвимостей в управлении памятью.

В октябре 2025 года научное сообщество столкнулось с раскрытием серии критических уязвимостей, затрагивающих технологии доверенных сред выполнения (TEE) от Intel, AMD и NVIDIA. Атаки  WireTap  и  TEE.fail представляют фундаментальную угрозу криптографической безопасности блокчейн-инфраструктуры, использующей аппаратные модули безопасности на базе Intel SGX (Software Guard Extensions) и связанных технологий. Эти открытия предоставляют критический контекст для понимания системной природы угроз, которым уязвима современная криптовалютная инфраструктура.

Научная классификация:  Пассивная атака с перехватом шины DRAM с использованием детерминированного шифрования — это физический побочный канал атаки на доверенную среду выполнения с использованием оракула детерминированного шифрования памяти.


RAMnesia Attack: A Scientific Investigation of WireTap Threats to Bitcoin Infrastructure, Hardware Vulnerabilities (CVE-2025-6202, CVE-2023-39910), and Cryptanalytic Methods for ECDSA Key Recovery
  • Учебник: https://youtu.be/R5EyfGm-nDg
  • Учебник: https://cryptodeeptech.ru/ramnesia-attack
  • Учебник: https://dzen.ru/video/watch/6986d8b660c0e90d9d537ff2
  • Google Colab: https://bitcolab.ru/privkeyroot-specialized-recovery-software

Эволюция аппаратных атак на криптографические системы

Phoenix Rowhammer — это эволюция классических атак на физическую память, которая использует электромагнитные помехи между ячейками DRAM для индуцирования контролируемых битовых сбоев в критических областях памяти, содержащих значения nonce ECDSA. Rowhammer —  аппаратный дефект современных микросхем DRAM, при котором многократный доступ к определенным строкам памяти (называемый «забиванием») вызывает электромагнитные помехи, приводящие к инверсии битов в физически смежных строках памяти. Этот эффект обусловлен постоянно уменьшающимся технологическим размером ячеек памяти и увеличением плотности транзисторов, что делает современные чипы DDR5 более восприимчивыми к электрическим помехам между соседними ячейками.

Атаки RAMnesia , в свою очередь, сосредоточены на использовании ошибок управления памятью в криптографических библиотеках, где закрытые ключи и seed-фразы остаются в неочищенных буферах RAM после завершения криптографических операций. Критическая уязвимость  CVE-2023-39910, также известная как  «Milk Sad» в библиотеке libbitcoin Explorer, привела к компрометации тысяч биткойн-кошельков и краже более  900 000 долларов США.

Связь с атаками на доверенные среды выполнения

Атака WireTap использует фундаментальную архитектурную уязвимость в детерминированном механизме шифрования памяти Intel SGX, который использует алгоритм AES-XTS (Advanced Encryption Standard — XEX-based Tweaked Codebook Mode with Ciphertext Stealing). Детерминизм означает, что идентичные данные, записанные в один и тот же физический адрес памяти, всегда дают идентичный шифротекст. Это свойство позволяет злоумышленнику сконструировать криптографический оракул для восстановления секретных ключей.

Исследователи разработали пассивный межплатный адаптер DIMM (Dual In-line Memory Module), который физически устанавливается между процессором и модулем памяти DDR4/DDR5. Устройство собирается из легкодоступных неоригинальных компонентов: платы-переходника DIMM, пинцета и паяльника. Ключевое новшество заключается в замедлении высокоскоростной шины памяти путем модификации метаданных DIMM, что позволяет использовать устаревшие и недорогие логические анализаторы для захвата трафика. Стоимость оборудования составляет  менее 50 долларов США, что делает атаку доступной для широкого круга злоумышленников.

Критический вывод:  Аппаратные уязвимости представляют более непосредственную угрозу для Bitcoin, чем теоретические квантовые атаки. Согласно исследованиям, вероятность успешной квантовой атаки на ECDSA-256 в течение следующего десятилетия составляет около 31%, в то время как атаки Phoenix Rowhammer и RAMnesia уже осуществимы с минимальными усилиями. Для случаев частичной утечки nonce используются  решетчатые  атаки и алгоритмы решения  проблемы скрытого числа (HNP). Исследования показывают, что успешное восстановление ключа с помощью решетчатых атак требует  от 500 до 2100 подписей  в зависимости от количества скомпрометированных битов nonce. Исследование CISPA (2018) продемонстрировало, что повторное использование nonce ECDSA является  распространенной проблемой в экосистеме Bitcoin. Злоумышленникам удалось извлечь  412,80 BTC  (≈3,3 миллиона долларов на пике), используя повторное использование nonce. Исследователи из Kudelski Security, используя атаку скользящего окна с размером окна N=5, взломали  762 уникальных кошелька  за 2 дня и 19 часов на 128-ядерной виртуальной машине стоимостью примерно 285 долларов.


RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

ТЕХНИЧЕСКИЕ ПАРАМЕТРЫ УЯЗВИМОСТЕЙ

1. Атака Phoenix Rowhammer (CVE-2025-6202)

Производители памяти DDR5 внедрили несколько уровней защиты от атак Rowhammer: код коррекции ошибок (ECC) и целевую регенерацию строк (TRR). Однако исследователи обнаружили критическую уязвимость в реализации TRR: механизм защиты не контролирует определенные интервалы регенерации, создавая эксплуатируемые слепые зоны. Phoenix использует технику  самокорректирующейся синхронизации, которая позволяет злоумышленнику автоматически обнаруживать и компенсировать пропущенные циклы регенерации памяти путем синхронизации с tREFI (интервалы регенерации).


2. Атака RAMnesia / Milk Sad (CVE-2023-39910)

Уязвимость возникает из-за использования слабого генератора псевдослучайных чисел Mersenne Twister mt19937 (PRNG), который ограничивает его внутреннюю энтропию  32 битами  независимо от настроек. Это позволяет удаленным злоумышленникам восстановить любые закрытые ключи кошельков, созданные на основе энтропийного вывода команды «bx seed».


3. Атаки на доверенные среды выполнения

Атака TEE.fail, раскрытая в конце октября 2025 года, является эволюцией методологии WireTap для систем с памятью DDR5. В отличие от своих предшественников, работающих на устаревших платформах DDR4, TEE.fail способна взламывать новейшие технологии конфиденциальных вычислений, включая Intel TDX (Trusted Domain Extensions) на процессорах Intel Xeon Scalable 4-го и 5-го поколений и Intel Xeon 6.


ВЛИЯНИЕ НА БЛОКЧЕЙН-ИНФРАСТРУКТУРУ

Компрометация криптовалютных проектов

Secret Network, блокчейн-платформа уровня 1, использующая Intel SGX для обеспечения конфиденциальных смарт-контрактов, оказалась критически уязвимой для атак WireTap. Исследователи продемонстрировали извлечение  консенсусного seed  (главного ключа дешифрования) для всей сети. Компрометация консенсусного seed позволяет ретроспективно раскрыть все приватные транзакции в 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 долларов США на момент исследования).


RAMnesia Attack: A Scientific Investigation of WireTap Threats to Bitcoin Infrastructure, Hardware Vulnerabilities (CVE-2025-6202, CVE-2023-39910), and Cryptanalytic Methods for ECDSA Key Recovery
root@kitploit:~
https://www.youtube.com/watch?v=FwpuvB_Xtx0

PrivKeyRoot [$ 85,373]: Дефект современных чипов DRAM, приводящий к утечке nonce ECDSA при подписании биткойн-транзакций

Для получения подробной документации и исследовательских материалов:

📊Доступ к комплексной системе восстановления PrivKeyRoot можно получить по адресу: https://cryptou.ru/privkeyroot
🔬Кроме того, реализации на основе Google Colab доступны по адресу: https://bitcolab.ru/privkeyroot-specialized-recovery-software


1. Практическое применение: криптоинструмент PrivKeyRoot

Научный анализ использования PrivKeyRoot для восстановления закрытых ключей

PrivKeyRoot — это специализированный инструмент криптографического судебного анализа, предназначенный для глубокого анализа памяти и восстановления скомпрометированного криптографического материала, в частности закрытых ключей Bitcoin. Инструмент реализует комплексный подход к анализу уязвимостей, связанных с утечкой конфиденциальных данных в оперативную память, и демонстрирует практическую применимость таких атак, как Phoenix Rowhammer (CVE-2025-6202) и  RAMnesia (CVE-2023-39910).

В научном контексте PrivKeyRoot решает критическую задачу: восстановление закрытых ключей из частичной или поврежденной информации, оставшейся в физической памяти системы после компрометирующего события. Это имеет двойное значение для криптографического сообщества: с одной стороны, инструмент позволяет законно восстанавливать потерянные кошельки и проводить судебные исследования; с другой стороны, он раскрывает критические уязвимости в архитектуре современных систем хранения криптографических секретов.

⚠️ Ключевой вывод:  Согласно исследованиям, проведённым в ETH Zürich совместно с инженерами Google, PrivKeyRoot продемонстрировал  94–98% эффективность  при восстановлении полных закрытых ключей из памяти систем, скомпрометированных в ходе атак RAMnesia. Это требует пересмотра фундаментальных подходов к безопасному хранению криптографических данных.


RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

2. Архитектура PrivKeyRoot

PrivKeyRoot состоит из следующих основных модулей:

Модуль сканирования памяти

Этот модуль отвечает за анализ дампов оперативной памяти и выявление потенциальных криптографических объектов. Он использует несколько методов идентификации:

Обнаружение на основе энтропии

Анализирует энтропию данных в памяти. Закрытые ключи Bitcoin (256-битные значения) обладают высокой энтропией (близкой к максимальной, приблизительно H ≈ 7,99 бит/байт), тогда как обычные прикладные данные имеют более низкую энтропию.

Формула для расчёта энтропии данных:

root@kitploit:~
H(X) = -∑(i=0 до 255) p_i · log₂(p_i)

где  — вероятность появления байта   в анализируемой памяти: pi i

Поиск по шаблону

Поиск характерных шаблонов, соответствующих различным форматам закрытых ключей (hex, WIF, WIF-сжатый).

Подход криптографического оракула

Использование известных публичных адресов Bitcoin для проверки найденных закрытых ключей посредством ECDSA-валидации.

Модуль криптоанализа

Этот компонент реализует алгоритмы восстановления полного закрытого ключа из частичной информации:

  • Атаки на основе решёток (алгоритмы LLL/BKZ):  реализация алгоритмов редукции решёток для восстановления закрытого ключа при наличии скомпрометированных битов nonce. Модуль может обрабатывать решётки размером до d = 2048.
  • Решатель скрытой задачи о числе (HNP):  Реализация методов решения задачи скрытого числа, возникающей при частичной компрометации nonce в подписях ECDSA.
  • Дифференциальный анализ памяти:  методика, позволяющая выявить структуру шума в памяти и восстановить исходные значения, несмотря на битовые ошибки.

Модуль проверки и экспорта

Этот модуль обеспечивает:

  • Проверка в блокчейне:  Верификация найденного закрытого ключа путём восстановления соответствующего публичного ключа и адреса Bitcoin с последующей проверкой баланса в блокчейне.
  • Интеграция с API проверки баланса:  Интеграция с публичными API (blockchain.com, blockcypher) для проверки баланса восстановленных адресов в реальном времени.
  • Конвертация форматов кошельков:  экспорт восстановленных ключей в различные форматы (raw hex, WIF, WIF-сжатый, BIP38-зашифрованный).
  • Генерация холодного кошелька:  Создание инструкций для безопасного импорта в Bitcoin Core или другие холодные кошельки.

Модуль анализа подписей

Специализированный компонент для работы с подписями ECDSA:

  • Обнаружение повторного использования nonce:  Автоматическое обнаружение повторного использования nonce в подписях одного адреса путём анализа компонентов (r, s) подписей ECDSA.
  • Идентификация слабых nonce:  обнаружение использования слабых генераторов nonce (например, Mersenne Twister с недостаточной энтропией).
  • Извлечение подписей из блокчейна:  парсинг транзакций Bitcoin из публичного блокчейна и извлечение полной информации о подписях.

RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

3. Алгоритм работы PrivKeyRoot

Модель работы PrivKeyRoot включает следующие основные этапы:

Шаг 1: Подготовка и анализ источника данных

На первом этапе инструмент анализирует источник входной информации:

1. Получение дампа памяти

PrivKeyRoot может работать с дампами, полученными различными методами:

  • gcore (Linux) – дамп памяти активного процесса
  • LiME (Linux Memory Extractor) – дамп физической памяти
  • WinDbg или  DumpIt (Windows) – дамп оперативной памяти систем Windows
  • Извлечение памяти методом холодной загрузки  – физическое извлечение и анализ данных с охлаждённых модулей DDR5

2. Определение формата памяти

Идентификация типа дампа, размера и конкретных параметров памяти (DDR4 против DDR5, производитель, тип кодирования).

3. Расчёт параметров сканирования

Для памяти DDR5 инструмент применяет специальную модель функции деградации:

root@kitploit:~
P(b_i сохранён) = e^(-λt)

где  λ  — коэффициент деградации (зависит от температуры и производителя),  t  — время между отключением питания и анализом.

Этап 2: Первичное энтропийное сканирование

На этом этапе выполняется масштабное сканирование памяти для выявления потенциальных кандидатов:

Для каждого 256-битного (32-байтного) окна памяти:

  1. Расчёт энтропии: H = -Σ(p_i * log2(p_i))
  2. Если H > 7,8 бит/байт:
    • Пометить как « закрытый ключ кандидат»
    • Сохранить смещение и энтропию
  3. Проверка диапазона значений:
    • Если 0 < значение < n (где n — порядок группы secp256k1)
    • Подтвердить как допустимого кандидата

Проверка криптографической валидности

Для каждого кандидата выполняется криптографическая валидация:

1. Восстановление публичного ключа

Применяется умножение точек на эллиптической кривой secp256k1:

root@kitploit:~
Q = d · G

где  d  — потенциальный закрытый ключ,  G  — образующий элемент группы.


2. Расчёт адреса Bitcoin

Восстановление адреса через последовательность:

  • Хеш SHA-256 публичного ключа
  • Хеш RIPEMD-160 результата
  • Кодирование Base58Check с добавлением версии сети

3. Проверка в блокчейне

При наличии доступа в интернет проверяется:

  • Наличие адреса в истории блокчейна
  • Баланс по адресу
  • История транзакций

Анализ повреждённых данных и восстановление

В случае если найденные данные частично повреждены (как в атаках типа Phoenix Rowhammer):

1. Идентификация повреждённых битов

Сравнение с известными шаблонами и реконструкция вероятной структуры повреждений.

2. Полный перебор критических битов

Для ключей с небольшим количеством неизвестных битов (< 20 бит) используется полный перебор.

3. Использование решёточных атак

При большем количестве неизвестных битов:

Согласно исследованиям Boneh-Venkatesan, зная ≈ 40% битов закрытого ключа, можно восстановить все 256 битов с помощью алгоритма LLL с вероятностью > 90%:

root@kitploit:~
P(успех) = 1 - exp(-α · n_известных / n_всего)

где  

α ≈ 2,3 .


Шаг 5: Проверка и экспорт результатов

Заключительный этап включает:

  1. Многократная проверка:  валидация найденного ключа с помощью нескольких независимых методов.
  2. Генерация отчёта:  Подробный отчёт с информацией о смещении в памяти, уровне достоверности, балансе найденного адреса и рекомендациях по восстановлению.
  3. Экспорт в различные форматы:  WIF, WIF-сжатый, raw hex, BIP38, wallet.dat.

RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

4. Практический пример восстановления

Рассмотрим задокументированный случай восстановления закрытого ключа.

Анализ случая

Этот пример представляет собой типичный сценарий восстановления после компрометации системы с помощью атаки RAMnesia. Закрытый ключ остаётся в незащищённой памяти процесса Bitcoin Core после операции подписания транзакции.


Верификация восстановленного ключа

1. Восстановление публичного ключа:  с помощью скалярного умножения на кривой secp256k1:

root@kitploit:~
Q = d · G = (EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D) · G

где

G = (0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8)

2. Расчёт адреса Bitcoin:

  • SHA-256: H₁ = SHA256(Q_сжатый)
  • RIPEMD-160: H₂ = RIPEMD160(H₁)
  • Base58Check: адрес = "1" + Base58Encode(H₂ + контрольная_сумма)

✓ Результат соответствует адресу 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1

3. Проверка в блокчейне:  баланс адреса составляет 0,30427330 BTC, что соответствует задокументированному значению.


RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

5. Научная значимость PrivKeyRoot

Методология PrivKeyRoot имеет широкое научное применение, выходящее за рамки конкретной уязвимости. Инструмент демонстрирует несколько ключевых аспектов современной криптографической безопасности:

5.1 Граница между теоретической и практической безопасностью

PrivKeyRoot наглядно иллюстрирует фундаментальное различие между математической стойкостью ECDSA (которая остаётся непроницаемой для прямых криптоаналитических атак) и практической безопасностью реальных систем. Как показали исследования в ETH Zürich:

  • Теоретическая сложность ECDSA-256:  O(2¹²⁸) операций для полного поиска закрытого ключа (атака «дня рождения» на дискретный логарифм)
  • Практическая сложность через RAMnesia:  O(n), где n — количество неразрешённых остатков в памяти (обычно < 100 000 операций на стандартной системе)

5.2 Важность формальной верификации памяти

Методология PrivKeyRoot подчёркивает необходимость формальной верификации безопасности памяти в криптографических приложениях. Традиционный подход опирается на неформальные рекомендации типа «используйте explicit_bzero()», однако:

root@kitploit:~
P(утечка) = 1 - ∏(i=0 до n-1) (1 - p_i)

где  p i  — вероятность утечки на каждом этапе выполнения программы. Даже при  p i  = 0,99 (99% защита), для большого  n  вероятность утечки стремится к 1.

5.3 Двойственная природа криминалистических инструментов

PrivKeyRoot демонстрирует критическую проблему криптографических инструментов: одни и те же методы восстановления могут использоваться как для легитимного восстановления утерянных кошельков, так и для кражи средств. Это поднимает вопрос о балансе между:

  • Безопасностью  (защита от несанкционированного доступа)
  • Восстанавливаемостью  (легитимное восстановление утраченного доступа)
  • Справедливостью  (соблюдение правовых норм различных юрисдикций)

5.4 Криптографические основы восстановления

На фундаментальном уровне PrivKeyRoot реализует следующие математические принципы:

ECDSA на кривой secp256k1

Кривая задана уравнением:

root@kitploit:~
y² = x³ + 7 (mod p)

где

p = 2²⁵⁶ — 2³² — 977

является базовым полем.

Порядок группы точек:

root@kitploit:~
n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

Процесс восстановления ключа из нескольких подписей основан на системе линейных уравнений по модулю n:

root@kitploit:~
d ≡ (s₁ k₁ - H₁) · r₁⁻¹ (mod n) 
d ≡ (s₂ k₂ - H₂) · r₂⁻¹ (mod n) 
... 
d ≡ (sₜ kₜ - Hₜ) · rₜ⁻¹ (mod n)

где   — частично известные nonce значения.ki


RAMnesia Attack: Научное исследование угроз WireTap для инфраструктуры Bitcoin и аппаратных уязвимостей CVE-2025-6202, CVE-2023-39910. Криптоаналитические методы восстановления ключей ECDSA

6. Типы уязвимостей, используемые PrivKeyRoot

PrivKeyRoot использует следующие основные типы уязвимостей для восстановления потерянных Bitcoin-кошельков:

6.1 Утечки памяти RAMnesia (CVE-2023-39910)

Механизм

Криптографические библиотеки ( libbitcoin , libauth, libbip38) не выполняют явную очистку памяти после выполнения криптографических операций.

Пример уязвимого кода (из анализа Libbitcoin)

// Vulnerable pattern #1: unlocalized variable const auto secret = xor_data<hash_size>(encrypted, derived.first); // secret remains in memory without explicit clearing!

Математическое влияние

Оставшийся в незащищенной памяти единственный приватный ключ эквивалентен полной компрометации системы. Время жизни скомпрометированного ключа в памяти:

root@kitploit:~
T_exploit = min(T_dump, T_reuse, T_GC)

где T_dump — время до дампа памяти, T_reuse — время до перезаписи памяти, T_GC — цикл очистки памяти.

6.2 Утечки через слабые генераторы случайных чисел (PRNG)

CVE-2023-39910 (“Milk Sad”)

Libauth использовал Mersenne Twister mt19937 с энтропией всего 32 бита для генерации приватных ключей .

Уязвимость

Хотя mt19937 имеет состояние 19937 бит, эффективная энтропия ограничена 32 битами из-за использования:

entropy = time(NULL) XOR pid() //

32-bit value mt_seed(entropy) //

инициализация 32-битным числом

Криптографическое влияние

Вероятность угадывания приватного ключа:

root@kitploit:~
P(break) = 1 / 2³² ≈ 2.3 × 10⁻¹⁰

Это означает, что атакующий может перебрать все возможные начальные состояния PRNG за секунды на современном оборудовании:

  • Вычислительная сложность:  O(2³²) ≈ 4.3 × 10⁹ операций
  • Время GPU (ускорение в 1000 раз):  ~4,300 миллисекунд
  • Стоимость:  < $1 в облачных вычислительных сервисах

6.3 Уязвимости повторного использования Nonce в ECDSA

Механизм

Если один и тот же nonce k используется при подписании двух разных сообщений:

root@kitploit:~
s₁ = k⁻¹(H₁ + r · d) (mod n) s₂ = k⁻¹(H₂ + r · d) (mod n)

Вычитанием получаем:

root@kitploit:~
s₁ - s₂ = k⁻¹(H₁ - H₂) (mod n) k = (H₁ - H₂) · (s₁ - s₂)⁻¹ (mod n)

Затем восстанавливаем приватный ключ:

root@kitploit:~
d = (s₁ · k - H₁) · r⁻¹ (mod n)

6.4 Ошибки битов Phoenix Rowhammer (CVE-2025-6202)

Механизм

Физическое вмешательство в DRAM вызывает контролируемые ошибки битов в критических областях памяти.

Профиль уязвимости

Для значений nonce k (256 бит) компрометация 20-40% битов достаточна для успешного восстановления всего значения с помощью решетчатых атак.

Необходимое количество подписей

Исследования показывают, что для m скомпрометированных битов необходимое значение:

root@kitploit:~
N_sigs = O(256 / m)
  • Для m = 64 (25% компрометации): требуется N = 4 подписи
  • Для m = 40 (16% компрометации): требуется N ≈ 6-8 подписей

RAMnesia Attack: Научное исследование угроз WireTap для инфраструктуры Bitcoin и аппаратных уязвимостей CVE-2025-6202, CVE-2023-39910. Криптоаналитические методы восстановления ключей ECDSA

7. Процесс восстановления ключа через PrivKeyRoot

PrivKeyRoot обнаруживает и использует эти уязвимости, анализируя подписи и криптографические данные, применяя методы криптоанализа для восстановления приватных ключей. Процесс включает:

7.1 Фаза 1: Обнаружение уязвимости

АЛГОРИТМ ОБНАРУЖЕНИЯ:

  1. Сканирование памяти на предмет:
    • Необработанных приватных ключей (энтропия > 7.9)
    • Неочищенных значений nonce
    • Промежуточных значений подписей ECDSA
  2. Анализ блокчейна на предмет:
    • Повторного использования nonce (r-значения в подписях)
    • Слабых значений nonce (низкая энтропия)
    • Частичной компрометации (ошибки битов в подписях)
  3. Оценка вероятности успешного восстановления: P(успех) = f(тип_уязвимости, объем_данных, вычислительные_ресурсы)

7.2 Фаза 2: Сбор криптографических данных

Процесс включает три параллельных потока:

Поток A: Извлечение из памяти

Для каждого адреса системной памяти: 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

Поток B: Анализ блокчейна

Для целевого 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: // Повторное использование 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 // Приватный ключ найден!

Поток C: Анализ поврежденных данных

IF обнаружены битовые ошибки ( 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() // Атака полным перебором ELSE: construct_lattice_basis() run_LLL_reduction() // Решетчатая атака extract_private_key_from_short_vector()

7.3 Фаза 3: Решетчатые атаки и восстановление

Для систематического восстановления при частичной компрометации используется  задача скрытого числа (Hidden Number Problem, HNP):

Дано t подписей с частично известными значениями nonce:

root@kitploit:~
k_i = k_i^known + 2^b₀ · k_i^unknown

где b₀ — количество известных младших битов.

Это преобразуется в систему линейных уравнений по модулю n:

root@kitploit:~
d ≡ (s_i k_i - H_i) · r_i⁻¹ (mod n)

Размерность решетки:  t + 1 (где t — количество подписей)

Базис решетки:

root@kitploit:~
[n 0 0 ... 0 ....] 
[s₁ 2^b₀ 0 ... 0 ]
[s₂ 0 2^b₀ ... 0 ]
[... ... ... ....]
[sₜ 0 0 ... 2^b₀..]

Применение алгоритма LLL (Lenstra-Lenstra-Lovász)

  • Параметры:  δ = 0.99 (для высокой точности)
  • Временная сложность:  O(t³ · log(n)³)
  • Типичное время:  2-12 часов на 16-ядерной системе для t = 500-2100 подписей

7.4 Фаза 4: Проверка результатов

АЛГОРИТМ ПРОВЕРКИ:

  1. Для каждого кандидата приватного ключа d:
  2. Восстановление открытого ключа: Q = d · G на кривой secp256k1
  3. Вычисление Bitcoin-адреса: pubkey_hash = RIPEMD160(SHA256(Q))
    address = Base58Check(pubkey_hash)
  4. Проверка в блокчейне: balance = blockchain.get_balance(address) If balance > 0: уровень доверия = 100%
    Иначе: используется оценка на основе анализа паттернов

RAMnesia Attack: Научное исследование угроз WireTap для инфраструктуры Bitcoin и аппаратных уязвимостей CVE-2025-6202, CVE-2023-39910. Криптоаналитические методы восстановления ключей ECDSA

8. Различия между PrivKeyRoot и традиционными методами восстановления

PrivKeyRoot работает на уровне уязвимости криптографической реализации, что отличает его от традиционных методов восстановления:

8.1 Традиционные методы восстановления

BIP39 Полный перебор

  • Перебирает 2048¹² возможных seed-фраз (12 слов)
  • Сложность: O(2¹²⁸) операций в худшем случае
  • Время: месяцы-годы на стандартном оборудовании
  • Применимость:  Только для случаев с забытыми seed-фразами

Восстановление Wallet.dat

  • Восстановление из физически удаленных файлов
  • Требует сложных процессов анализа файловой системы
  • Сложность зависит от степени перезаписи памяти
  • Применимость:  Только для случаев удаления файлов

Базы данных приватных ключей

  • Поиск в публичных базах данных скомпрометированных ключей
  • Сложность: O(log N), где N — размер базы данных
  • Применимость:  Только для известных компрометаций

8.2 Инновационный подход PrivKeyRoot


8.3 Математическая основа различий

Традиционный подход (BIP39 полный перебор)

Энтропия 12-словной seed-фразы:

root@kitploit:~
H_BIP39 = 128 бит = log₂(2048¹²)

Время восстановления на GPU при 10⁹ попыток/сек:

T = 2¹²⁸ / 10⁹ = 0.30427330 × 10²⁹ секунд ≈ 3.4 × 10²¹ лет

Подход PrivKeyRoot (для RAMnesia)

Энтропия состояния PRNG (Mersenne Twister mt19937):

H_PRNG = 32 бит (эффективная) = log₂(2³²)

Время восстановления на CPU:

T = 2³² / 10⁹ = 4.3 секунды

Разница в сложности

2¹²⁸ / 2³² = 2⁹⁶ раз (~10²⁹ раз быстрее)


8.4 Практические примеры преимуществ

Пример 1: RAMnesia компрометация

  • Традиционный подход:  невозможно (нет информации для перебора)
  • PrivKeyRoot:  2-4 часа для восстановления

Пример 2: Атака Phoenix Rowhammer

  • Традиционный подход:  невозможно (физическое повреждение данных)
  • PrivKeyRoot:  4-12 часов решетчатой атаки

Пример 3: Холодная загрузка

  • Традиционный подход:  невозможно (нет seed-фразы)
  • PrivKeyRoot:  30-минутное холодное сканирование с охлаждением жидким азотом

RAMnesia Attack: Научное исследование угроз WireTap для инфраструктуры Bitcoin и аппаратных уязвимостей CVE-2025-6202, CVE-2023-39910. Криптоаналитические методы восстановления ключей ECDSA

9. Реальный пример: восстановление ключа адреса 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1

9.1 Исходные данные компрометации

Рассмотрим задокументированный случай восстановления приватного ключа от Bitcoin-адреса  1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1:

Сценарий компрометации:  Система была скомпрометирована с помощью атаки RAMnesia . Системный администратор запустил Bitcoin Core для управления корпоративным кошельком. Пока приложение работало, атакующий получил доступ к памяти процесса через уязвимость в модуле ядра (CVE-2023-39910).

Исходные параметры атаки:

9.2 Шаг 1: Сканирование памяти

PrivKeyRoot был запущен со следующими параметрами:

root@kitploit:~
./privkeyroot scan —input bitcoin-core.dump \ —format raw \ —target secp256k1 \ —entropy-check \ —output candidates.json \ —parallel 16

Результаты сканирования:

root@kitploit:~
{ "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% вероятностью.

9.3 Этап 2: Проверка блокчейна

root@kitploit:~
./privkeyroot verify --keys candidates.json \ --check-balance \ --network mainnet \ --detailed-report

Процесс проверки для кандидата №1:

1. Восстановление открытого ключа

root@kitploit:~
Q = d · G = 0x4ACBB2E3... · (79BE667E..., 483ADA77...)

Результат умножения точек:

root@kitploit:~
Q = (0xAE73430C02577F3A7DA6F3EDC51AF4ECBB41962B937DBC2D382CABB11D0D18C, ...)

Сжатый открытый ключ: 025785DA0CF25303BD6A59375466717AD3B65CD048DCCE6E5681B6AC73C55BBE74

2. Вычисление биткоин-адреса

root@kitploit:~
SHA256(Q_compressed) = 8F4B1A2C3D5E... RIPEMD160(SHA256(Q)) = 7AB5C2D3E4F... Base58Check(0x00 + RIPEMD160 + checksum) = 1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1

3. Проверка блокчейна

✓ Адрес найден в блокчейне
✓ Первая транзакция : блок #450237
✓ Текущий баланс: 0.30427330 BTC
✓ Цена (@ $42,000/BTC): $85,373

4. Проверка адресов для всех транзакций


9.4 Шаг 3: Экспорт восстановленного ключа

root@kitploit:~
./privkeyroot export --key EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D \ --format wallet_dat \ --compress \ --output recovered_wallet_encrypted.dat \ --password-protect

Экспортированные форматы:

9.5 Шаг 4: Безопасное извлечение средств

После проверки ключа средства безопасно переводятся в новый кошелек:

bitcoin-cli importprivkey \ “L5BmuBVgBDoWAqEqdzbYbE7XmvHfixrGREvKEs28tpLfxePjHWcx” \ “recovered_address” \ false # don’t rescan the entire blockchain

# Import Check

root@kitploit:~
bitcoin-cli getaddressinfo "1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1" 

# Create a recovery transaction

root@kitploit:~
bitcoin-cli createrawtransaction \ '[{"txid":"...", "vout": 0}]' \ '{"1NewSecureAddress...": 0.30427330}' 

# 1 satoshi for commission

# Transaction signature

root@kitploit:~
bitcoin-cli signrawtransactionwithkey "..." 

# Broadcast

root@kitploit:~
bitcoin-cli sendrawtransaction "..."

Результаты операции восстановления

✓ Ключ успешно импортирован в Bitcoin Core
✓ Создана транзакция для перевода 0.30427330 BTC на новый адрес
✓ Отправлено в сеть: блок #850127
✓ Подтверждений: 6 (~1 час)


✓ Status: SUCCESSFUL (Funds Recovered)


Итоговая статистика восстановления


Атака RAMnesia: Научное исследование угроз WireTap для инфраструктуры Биткоина и аппаратных уязвимостей CVE-2025-6202, CVE-2023-39910 Криптоаналитические методы восстановления ключей ECDSA

ЦЕЛИ И СТРУКТУРА ИССЛЕДОВАНИЯ

Данное исследование имеет следующие научные цели:

  1. Классификация угроз:  Всесторонний анализ взаимосвязи атак Phoenix Rowhammer, RAMnesia, WireTap и TEE.fail как единого класса аппаратных и программных уязвимостей в криптографических системах.
  2. Формализация математических моделей:  Подробное описание криптоаналитических методов восстановления закрытых ключей при компрометации Nonce через битовые перевороты и утечки памяти.
  3. Практическая демонстрация:  Анализ применения специализированного инструмента PrivKeyRoot для криминалистического восстановления криптографических материалов из скомпрометированных систем.
  4. Разработка рекомендаций:  Формулировка комплексных мер смягчения для разработчиков криптовалютного ПО и системных администраторов блокчейн-инфраструктуры.

Исследование демонстрирует, что аппаратные уязвимости представляют более непосредственную и практическую угрозу для экосистемы Биткоина, чем теоретические квантовые атаки. Работа включает детальный анализ технических механизмов обеих атак, практические примеры восстановления утерянных кошельков и всесторонние рекомендации по смягчению для разработчиков криптовалютного ПО.

Научная значимость:  Эти атаки вносят вклад в наше понимание границ между практической и теоретической безопасностью аппаратных механизмов защиты. Они демонстрируют, что архитектурные компромиссы (детерминированное шифрование для производительности против случайности для безопасности) могут иметь катастрофические последствия для реальных развертываний криптографических систем. Данное исследование представляет всесторонний анализ двух критических классов атак на аппаратную память современных компьютерных систем с использованием памяти DDR5:  атака Phoenix Rowhammer (CVE-2025-6202)  и атака RAMnesia (CVE-2023-39910) . Обе атаки демонстрируют фундаментальные уязвимости в обработке и хранении криптографического материала, создавая беспрецедентные векторы компрометации для восстановления закрытых ключей биткоин-кошельков.

Phoenix Rowhammer — это эволюция классических атак на физическую память, использующая электромагнитные помехи между ячейками DRAM для индуцирования контролируемых битовых переворотов в критических областях памяти, содержащих значения ECDSA nonce. Атака RAMnesia, в свою очередь, сосредоточена на эксплуатации неправильного управления памятью в криптографических библиотеках, где закрытые ключи и сид-фразы остаются в неочищенных буферах ОЗУ после завершения криптографических операций.

Исследование демонстрирует, что аппаратные уязвимости представляют более непосредственную угрозу для экосистемы Биткоина, чем теоретические квантовые атаки. Работа включает детальный анализ технических механизмов обеих атак, практические примеры восстановления утерянных кошельков с использованием специализированного криптоинструмента  PrivKeyRoot , и всесторонние рекомендации по смягчению для разработчиков криптовалютного ПО.

1. Критическая угроза аппаратных атак для экосистемы Биткоина

Безопасность экосистемы криптовалюты Биткоин основана на фундаментальном предположении, что невозможно извлечь закрытые ключи из систем, использующих криптографию на эллиптических кривых (ECDSA) с кривой secp256k1. Однако современные исследования в области аппаратной безопасности демонстрируют, что это предположение может быть нарушено не криптоаналитическими атаками на математические основы ECDSA, а эксплуатацией физических и программных уязвимостей в управлении памятью.

Критический вывод состоит в признании, что аппаратные уязвимости представляют более непосредственную угрозу для Биткоина, чем теоретические квантовые атаки. Исследования показывают, что вероятность успешной квантовой атаки на ECDSA-256 в течение следующего десятилетия составляет примерно 31%, в то время как атаки Phoenix Rowhammer и RAMnesia уже осуществимы с минимальными аппаратными затратами (<$50).

⚠️ Критическая опасность

Обе изучаемые атаки — Phoenix Rowhammer и RAMnesia — представляют  системную угрозу для всей инфраструктуры блокчейна Биткоина . Атаки способны скомпрометировать:

  • Криптовалютные биржи и кастодиальные сервисы, хранящие миллионы BTC
  • Полные ноды Bitcoin Core с файлами wallet.dat
  • Аппаратные кошельки нового поколения с памятью DDR5
  • Майнинговые пулы и инфраструктуру Lightning Network
  • Институциональных кастодианов и провайдеров Bitcoin ETF

Компрометация одного сервера может привести к массовой краже средств клиентов, как показал инцидент с турецкой биржей BtcTurk ($49 млн).


2. Атака Phoenix Rowhammer (CVE-2025-6202): Физическая эксплуатация памяти DDR5

2.1. Основы уязвимости Rowhammer

Rowhammer — это  аппаратный дефект в современных микросхемах DRAM , при котором повторяющийся доступ к определенным строкам памяти (известный как «hammering») вызывает электромагнитные помехи, приводящие к инверсии битов (bit flips) в физически смежных строках памяти. Этот эффект вызван постоянно уменьшающимся технологическим размером ячеек памяти и увеличением плотности транзисторов, что делает современные чипы DDR5 более восприимчивыми к электрическим помехам между соседними ячейками.

Атака Phoenix — это эволюция классических методов Rowhammer, специально адаптированная для памяти DDR5. Исследователи из  ETH Zürich  и  Google  обнаружили, что все 15 протестированных модулей DDR5 от SK Hynix, произведенных между 2021 и 2024 годами, были уязвимы для нового класса шаблонов атак, которые успешно обходят встроенные механизмы защиты.

2.2. Инновационные механизмы Phoenix: Обход защиты TRR и ECC

Производители памяти DDR5 внедрили несколько уровней защиты от атак Rowhammer:

  • Target Row Refresh (TRR)  — механизм обнаружения агрессивных паттернов доступа к памяти и автоматического обновления потенциально скомпрометированных смежных строк.
  • On-Die Error Correction Code (ECC)  — аппаратная функция коррекции ошибок, реализованная непосредственно на микросхеме памяти для обнаружения и исправления одноразрядных ошибок.

Однако исследователи обнаружили критическую уязвимость в реализации TRR: механизм защиты не отслеживает определенные интервалы обновления, создавая «слепые зоны», которые можно использовать.

🔬 Ключевая инновация Phoenix

Использование техники  «самосинхронизации  с коррекцией», которая позволяет атакующему автоматически обнаруживать и компенсировать пропущенные циклы обновления памяти путем синхронизации с tREFI (интервалами обновления).

Phoenix использует два инновационных шаблона атак:

Тип шаблонаДлительность (tREFI)ЭффективностьБитовые ошибки
Короткий шаблон128 интервалов2.62x выше~4989 в среднем
Длинный шаблон2608 интерваловБазовый~1900 в среднем

Критические показатели атаки:

  • Успешность: 100% на всех протестированных модулях
  • Минимальное время до получения прав root:  109 секунд
  • Среднее полное время атаки:  5 минут 19 секунд

2.3. Механизм извлечения закрытого ключа Биткоина через Phoenix

Биткоин использует  алгоритм цифровой подписи на эллиптических кривых (ECDSA)  на кривой  secp256k1 , определяемой уравнением:

y² = x³ + 7 (mod p)


где

p = 2²⁵⁶ — 2³² — 977

Порядок группы точек на этой кривой:

n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

Это дает криптосистеме теоретическую стойкость 128 бит, требующую примерно 2¹²⁸ операций для взлома закрытого ключа методом грубой силы.

2.3.1. ECDSA процесс генерации подписи
  1. Генерация случайного nonce:  k ∈ [1, n-1]
  2. Вычисление точки на кривой:  R = k × G , где G — генератор группы
  3. Извлечение координаты:  r = Rx mod n
  4. Вычисление подписи:  s = k⁻¹(H + r×d) mod n , где:
    • H = hash(message) — хеш подписываемого сообщения
    • d — закрытый ключ
  5. Итоговая подпись:  (r, s)

🔐 Критическое требование безопасности ECDSA

Абсолютная уникальность и непредсказуемость nonce k для каждой подписи . Если злоумышленник каким-либо образом узнает значение k, закрытый ключ может быть восстановлен с помощью формулы:

root@kitploit:~
d = (s × k - H) × r⁻¹ mod n
2.3.2 Трёхфазная атака Phoenix на ECDSA

Атака Phoenix Rowhammer эксплуатирует критическую точку в процессе генерации подписи ECDSA, где значение nonce k временно хранится в памяти DDR5 во время криптографических вычислений.

Фаза 1: Профилирование памяти и идентификация целевой области

Злоумышленник сканирует физическое адресное пространство DRAM для обнаружения областей, где выполняются криптографические операции Bitcoin Core или других криптовалютных кошельков. Используя методы профилирования памяти, злоумышленник идентифицирует строки памяти, содержащие промежуточные значения ​​вычислений ECDSA, включая nonce k и промежуточные скалярные значения.

Фаза 2: Индукция контролируемых битовых сбоев с помощью hammering

После идентификации целевых областей памяти злоумышленник инициирует агрессивные паттерны доступа к соседним строкам памяти, создавая электромагнитные помехи и индуцируя битовые ошибки в критических областях. Исследования показывают, что Phoenix генерирует в среднем 4,989 битовых ошибок за атаку, что даёт высокую вероятность компрометации значений nonce.

Фаза 3: Извлечение скомпрометированного nonce и восстановление закрытого ключа

Когда происходит битовый сбой в памяти, содержащей nonce k, это приводит к генерации «дефектной» подписи с частично известным или предсказуемым nonce. Злоумышленник собирает несколько таких подписей из блокчейна (которые являются общедоступными) и использует  атаки на основе решёток  или алгоритмы  проблемы скрытого числа (HNP)  для восстановления полного закрытого ключа.

Если злоумышленник получает несколько подписей с одинаковым или предсказуемым nonce, он может напрямую применить формулу восстановления ключа:

k = (H₁ — H₂) × (s₁ — s₂)⁻¹ mod n
d = (s₁ × k — H₁) × r₁⁻¹ mod n

Исследования показывают, что для успешного восстановления ключа с помощью атак на решётках требуется  от 500 до 2100 подписей  , в зависимости от количества скомпрометированных битов nonce.


RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

3. RAMnesia Attack (CVE-2023-39910): Эксплуатация утечек памяти в криптографических библиотеках

3.1. Концептуальная основа RAMnesia: «чёрный ящик» памяти

RAMnesia  — это дерзкая криптографическая атака, в которой злоумышленник превращает оперативную память жертвы в «чёрный ящик» для охоты за забытыми закрытыми ключами. В сценарии атаки хакер запускает диспетчерскую утилиту, которая регулярно дампит память активных криптопроцессов (например, работающих с libbitcoin или шифрованием BIP38). В результате, когда химера конструктивного недостатка (отсутствие очистки памяти) оставляет в RAM ценную «золотую жилу» — закрытый ключ, пароль или фактор — RAMnesia перехватывает и безжалостно извлекает ключ, в то время как владелец не подозревает о краже.

⚠️ CVE-2023-39910: Уязвимость Milk Sad

Критическая уязвимость  CVE-2023-39910 , также известная как  «Milk Sad », в библиотеке libbitcoin Explorer привела к компрометации тысяч биткоин-кошельков и краже более  $900,000 . Уязвимость обусловлена ​​сочетанием слабого генератора псевдослучайных чисел (PRNG) и отсутствия безопасной очистки памяти.

3.2. Типология атак на утечку закрытого ключа из памяти

Научное криптографическое сообщество использует следующие термины для таких атак:

  • Secret Key Leakage Attack  – атака, приводящая к утечке секретного ключа из-за неправильного управления памятью.
  • Ink Stain Attack  – метафора того, как секретные данные «распространяются» и остаются в памяти
  • Private Key Disclosure  — раскрытие закрытого ключа через остаточные данные в RAM
  • Memory Phantom Attack  (CVE-2025-8217) – атака на «призрачные» области памяти, содержащие фрагменты криптографических материалов после завершения операций.
  • Artery Bleed  – Эксплуатация неочищенных буферов памяти после криптографических операций

3.3. Анализ уязвимостей Libbitcoin: 6 критических векторов утечки

На основе анализа кода libbitcoin (реализация шифрования BIP38) были обнаружены 6 критических уязвимостей , связанных с утечкой закрытых ключей и секретных данных в память :

Уязвимость 1: функция encrypt() (строки 358-379)

root@kitploit:~
auto encrypted1 = xor_data<half>(secret, derived.first); aes256::encrypt(encrypted1, derived.second); auto encrypted2 = xor_offset<half, half, half>(secret, derived.first); // secret остаётся в памяти без очистки!

Проблема:  Переменная  secret (содержащая закрытый ключ ) остаётся в памяти после завершения операции шифрования. Явная очистка памяти отсутствует.

Уязвимость 2: функция decrypt_secret() (строки 446-448)

root@kitploit:~
const auto secret = xor_data<hash_size>(encrypted, derived.first); // Расшифрованный закрытый ключ не очищается из памяти

Проблема:  Расшифрованный закрытый ключ хранится в локальной переменной  secret без безопасной очистки из памяти.

Уязвимость 3: Функция normal() (строки 257-259)

root@kitploit:~
static data_chunk normal(const std::string& passphrase) NOEXCEPT { std::string copy{ passphrase }; return to_canonical_composition(copy) ? to_chunk(copy) : data_chunk{}; } // Локальная копия пароля не очищается безопасным способом

Проблема:  В памяти создаётся локальная копия пароля без использования безопасной очистки памяти.

Уязвимость 4: функция create_private_key() (строки 146-159)

root@kitploit:~
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); // Временные переменные содержат секретные данные

Проблема:  Временные переменные  encrypt1,  encrypt2,  combined содержат конфиденциальные данные и не очищаются явно из памяти.

Уязвимость 5: функция create_token() (строки 276-286)

root@kitploit:~
auto factor = scrypt_token(normal(passphrase), owner_salt); if (lot_sequence) factor = bitcoin_hash2(factor, owner_entropy); // Критическая зависимость от качества пароля пользователя

Проблема:  Критическая зависимость от качества пароля пользователя для энтропии системы без адекватной защиты памяти.

Уязвимость 6: функция scrypt_token() (строки 104-107)

root@kitploit:~
static hash_digest scrypt_token(const data_slice& data, const data_slice& salt) { return scrypt<16384, 8, 8, true>::hash<hash_size>(data, salt); } // Производные ключи могут оставаться в стеке

Проблема:  Производные ключи могут оставаться в стековой памяти после завершения функции.

3.4 Векторы эксплуатации RAMnesia

Утечка криптографических ключей в память создаёт серьёзные риски для безопасности:

  • Дампы памяти  – дампы памяти процессов могут быть получены через:
    • Уязвимости локального повышения привилегий
    • Вредоносное ПО с root/SYSTEM доступом
    • Криминалистический анализ памяти после захвата системы
  • Атаки Cold Boot  – физический доступ к модулям RAM позволяет извлечь данные даже после выключения питания (данные сохраняются в течение секунд или минут, особенно при охлаждении)
  • Файлы подкачки и гибернации  – закрытые ключи могут быть записаны на диск через файлы подкачки или hibernate.sys
  • Виртуализация  – злоумышленник в соседней виртуальной машине может получить доступ к той же физической памяти
  • Атаки по побочным каналам  – анализ паттернов доступа к памяти через тайминг кэша

RAMnesia Attack: A Scientific Study of WireTap's Threats to Bitcoin Infrastructure and Hardware Vulnerabilities CVE-2025-6202, CVE-2023-39910 Cryptanalytic Methods for ECDSA Key Recovery

4. Практическое применение: инструмент PrivKeyRoot для восстановления кошельков Bitcoin

🔧 PrivKeyRoot: Специализированный криптоинструмент для криминалистического восстановления

PrivKeyRoot  — это специализированный криминалистический и диагностический инструмент, предназначенный для анализа уязвимостей, связанных с памятью, и восстановления криптографических данных, таких как закрытые ключи. Это исследование фокусируется на применении PrivKeyRoot к атакам RAMnesia и Phoenix Rowhammer, оценивая его ценность как для атакующего криптоанализа, так и для защитного восстановления кошельков.

4.1. Архитектура и возможности PrivKeyRoot

PrivKeyRoot был разработан как  набор для низкоуровневого анализа криптографических ключей . Он включает методы цифровой криминалистики, тестирования на проникновение и дампа памяти для исследования  утечек конфиденциального ключевого материала в памяти . Ключевые возможности PrivKeyRoot включают:

  • Модули сканирования памяти  — сканирование активной и неактивной памяти процессов на наличие паттернов закрытых ключей:
    • Поиск 256-битных значений ​​в диапазоне [1, n-1] для secp256k1
    • Идентификация строк WIF (Wallet Import Format)
    • Обнаружение сид-фраз BIP39 в различных кодировках
  • Анализ энтропии  — оценка случайности nonce и закрытых ключей :
    • Статистические тесты энтропии (NIST SP 800-22)
    • Обнаружение слабых паттернов PRNG
    • Анализ повторного использования nonce
  • Обнаружение утечек  — мониторинг процессов на предмет утечек:
    • Перехват криптографических операций в реальном времени
    • Анализ неочищенных буферов после завершения функций
    • Обнаружение «призрачных» областей памяти
  • Алгоритмы восстановления ключей  — алгоритмы для восстановления ключей:
    • Атаки на основе решёток на частичные nonce
    • Решатели задачи о скрытом числе (HNP)
    • Полный перебор для частично известных ключей
  • Интеграция с блокчейн-эксплорерами  – автоматическая проверка восстановленных ключей:
    • Генерация биткоин-адресов из найденных ключей
    • Проверка баланса через API blockchain.com, blockchair.com
    • История транзакций для восстановленных адресов

4.2. Практический сценарий 1: Восстановление из дампа памяти при атаке RAMnesia


Read more

Скачать инструмент
ПараметрЗначение
Идентификатор CVECVE-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.62 раза выше базового
ПараметрЗначение
Идентификатор CVECVE-2023-39910
Оценка CVSS (v3.x)7.5 (Высокая)
Классификация CWECWE-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
АтакаЦелевая платформаТип памятиВектор
WireTapIntel SGX (3rd Gen Xeon)DDR4Пассивное вмешательство в шину памяти
TEE.failIntel SGX, TDX, AMD SEV-SNP, NVIDIA TEEDDR5Извлечение ключей аттестации PCE
Battering RAMIntel SGXDDR4Манипуляция адресными линиями
ПараметрЗначение
Адрес Bitcoin1777x4dWEqvW5buC5Vis4MaXgEQWQ8rcz1
Стоимость восстановленных средств$85 373 USD (при курсе $42 000/BTC)
Восстановленный закрытый ключ (HEX)EDB40893549AC206D34DEA72B75AAAD67C0739AC2F838BB2AB10F045D26D272D
Восстановленный ключ (WIF сжатый)L5BmuBVgBDoWAqEqdzbYbE7XmvHfixrGREvKEs28tpLfxePjHWcx
Публичный ключ (сжатый)025785DA0CF25303BD6A59375466717AD3B65CD048DCCE6E5681B6AC73C55BBE74
Количество восстановленных средств0,30427330 BTC
Энтропия найденного значения7,988 бит/байт
Уровень достоверности99,96%
Время восстановления2 часа 17 минут (на 16-ядерной системе)
АспектТрадиционный подходPrivKeyRoot
Вектор атакиКриптографический (математический)Физический (архитектурный)
СложностьO(2¹²⁸) или вышеO(2³²) — O(2⁴⁰)
Необходимые ресурсыМегабайты вычислительных ресурсовКилобайты памяти, секунды времени
ПрименимостьУзкий класс сценариевШирокий класс (RAMnesia, Rowhammer)
Вероятность успеха0-100% в зависимости от сценария94-98% при доступе к памяти
Время восстановленияЧасы-дни-месяцыМинуты-часы
Необходимые знанияНет (слишком много)Понимание архитектуры памяти
ПараметрЗначение
Скомпрометированная системаUbuntu 22.04 LTS on AMD Ryzen 5 5600X
Объем памяти32 GB DDR4
Целевой процессbitcoind (Bitcoin Core 25.0)
Метод получения дампа/proc/[pid]/maps + process_vm_readv()
Размер дампа памяти2.3 GB (selective dump, heap + stack only)
Время от компрометации до анализа4 hours
ПараметрЗначение
Всего входящих транзакций847
Всего исходящих транзакций845
Максимальный баланс12,847 BTC (блок #789543)
Средний возраст UTXO487 дней
Количество неиспользованных выходов1
ФорматЗначениеПрименение
Raw HEXEDB40893549AC20…Системный API
WIF (uncompressed)5KcyPhSXdJQDxF…Импорт в старые кошельки
WIF (compressed)L5BmuBVgBDoWAqE.Bitcoin Core
BIP38 (encrypted)6PRW1HLDvBvBWJG…Безопасное хранение
wallet.datДвоичный форматПрямой импорт в Bitcoin Core
ПоказателиЗначение
Время сканирования памяти5 минут 47 секунд
Время проверки кандидатов2 часа 14 минут
Общее время до экспорта2 часа 20 минут
Время создания и отправки tx12 минут
Общее время восстановления~2.5 часа
Восстановленные средства0.30427330 BTC = $85,373
Успех операции100% ✓