Back to Blog

Отладка транзакций в Phalcon: пошаговое руководство по эффективному анализу

Phalcon SecurityMetaSleuth
March 29, 2023
6 min read

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

В этом руководстве мы используем транзакцию эксплойта протокола Euler в качестве примера. Цель состоит в том, чтобы показать, как Phalcon Debug помогает пользователям перейти от подозрительного шага транзакции к четкому объяснению того, что произошло и почему это имело значение.

Вы можете открыть транзакцию напрямую здесь: Страница транзакции в Phalcon

Как войти в режим отладки

Существует два основных способа войти в режим отладки в Phalcon.

Первый — из конкретной строки в представлении «Поток вызовов» (Invocation Flow). Второй — через кнопку «Debug» в правом верхнем углу страницы транзакции. Оба пути ведут в одну и ту же среду отладки, но начало работы из «Потока вызовов» часто полезнее, когда вы уже видите подозрительный шаг и хотите перейти к нему в конкретной точке.

В примере с эксплойтом Euler транзакция содержит множество шагов, включая взятие флэш-кредита (flash loan) в Aave и внесение DAI в Euler. Одним из наиболее подозрительных шагов является вызов donateToReserves(), при котором злоумышленник жертвует протоколу очень крупную сумму. Это именно то действие, которое часто заслуживает более глубокого изучения, и Phalcon Debug позволяет пользователям начать анализ прямо здесь.

Макет режима отладки
Макет режима отладки

Макет режима отладки

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

«Панель трассировки вызовов» (Call Trace Panel) показывает трассировку внешних вызовов и событий. «Панель исходного кода» (Source Code Panel) отображает исходный код текущего контракта и подсвечивает соответствующую строку. «Консоль отладки» (Debug Console) предоставляет элементы управления шагами на уровне вызовов. «Панель отладочной трассировки» (Debug Trace Panel) отображает стек вызовов текущего контракта, включая как внутренние, так и внешние вызовы. «Панель параметров и возвращаемых значений» (Parameters & Return Values Panel) показывает входные и выходные данные для текущего вызова.

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

Иногда на панели исходного кода может не отображаться код. Обычно это происходит, когда текущий вызов указывает на неверифицированный контракт. В случае с Euler контракт злоумышленника не верифицирован, поэтому исходный код там недоступен. Но контракт eDai верифицирован, что означает, что пользователи могут воспользоваться функцией Step In (Шаг внутрь) и продолжить анализ в рамках верифицированной логики.

Режим отладки для верифицированного контракта
Режим отладки для верифицированного контракта

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

Отладка donateToReserves()
Отладка donateToReserves()

Как использовать консоль отладки

Консоль отладки разработана так, чтобы помочь пользователям подробно изучить процесс выполнения транзакции. Это важно, поскольку «Панель трассировки вызовов» показывает только внешние вызовы и события. Она не отображает внутренние вызовы функций. Консоль отладки заполняет этот пробел.

Phalcon предоставляет несколько элементов управления навигацией на этой панели. У кнопок Next (Следующий) и Previous (Предыдущий) есть по две версии. Красные кнопки перемещаются по всей трассировке вызовов, а синие — внутри текущей функции. Step In (Шаг внутрь) переходит внутрь вызываемой функции. Step Out (Шаг наружу) возвращает к месту вызова текущей функции.

С помощью этих элементов управления пользователи могут перемещаться по логике контракта строка за строкой и понимать, как происходили изменения состояния. В случае с Euler это помогло выявить более глубокую проблему, скрывающуюся за donateToReserves(). Анализ показал, что злоумышленник пожертвовал 100 миллионов eDAI, что изменило соотношение между eDAI и dDAI и сделало позицию доступной для ликвидации. Первопричиной было отсутствие в donateToReserves() проверки ликвидности для допустимости ликвидации, что позволило злоумышленнику совершить ликвидацию и извлечь прибыль.

Именно здесь Phalcon Debug становится чем-то большим, чем просто средством просмотра. Он превращается в практический инструмент анализа транзакций для поиска первопричин внутри выполнения контракта.

Макет режима отладки
Макет режима отладки
Первопричины эксплойта Euler
Первопричины эксплойта Euler

Начните работу с Phalcon Security

Обнаруживайте все угрозы, оповещайте о важном и блокируйте атаки.

Попробовать бесплатно

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

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

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

Типичный рабочий процесс выглядит так: во-первых, найдите подозрительный шаг в «Потоке вызовов». Во-вторых, используйте режим отладки для проверки кода, внутренних вызовов и параметров. В-третьих, поделитесь точным видом с коллегами, чтобы они могли изучить тот же контекст и продолжить обсуждение.

Другие полезные функции

Phalcon Debug включает несколько дополнительных функций, которые повышают эффективность анализа.

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

Для внешних вызовов пользователи также могут нажать Rawdata, чтобы изучить «сырые» параметры вызова. Это полезно, когда декодированных данных недостаточно или когда пользователи хотят проверить, как именно была структурирована calldata.

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

Переключатель параметров
Переключатель параметров

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

Изучите расследования с MetaSleuth

Отслеживайте потоки и собирайте доказательства для расследований

Попробовать бесплатно

Phalcon Debug наиболее полезен, когда транзакция слишком сложна для поверхностного чтения, но требует четкого объяснения. Он помогает пользователям перейти от подозрительной записи в трассировке к реальному пути выполнения кода, внутренней логике и первопричине. Это делает его ценным не только для исследований в области безопасности, но и для разбора инцидентов, анализа эксплойтов и оценки смарт-контрактов. Для команд, которые хотят повысить надежность кода перед развертыванием, этот же подход естественным образом связывается с аудитом смарт-контрактов и аудитом инфраструктуры, где сложное поведение проверяется до того, как оно станет операционным риском.

Сопутствующие ресурсы

Get Real-Time Protection with Phalcon Security

Audits alone are not enough. Phalcon Security detects attacks in real time and blocks threats mid-flight.

phalcon security

Go Deeper with MetaSleuth Investigation

Extend your crypto compliance capabilities with Blocksec's MetaSleuth Investigation, the first platform for tracing funds, mapping transaction networks and revealing hidden on-chain relationships.

Move from detection to resolution faster with clear visual insights and evidence-ready workflows across the digital assets ecosystem.

MetaSleuth Investigation