Подробные статьи о технологиях, определяющих будущее.

Безопасность бирж: провал в скорости, а не в криптографии

Взлом Binance на $6,3 млрд за 20 минут показал: безопасность бирж подводит скорость, а не криптография. Что реально останавливает быстрые кражи.

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

Двадцать минут. Именно столько, по сообщениям, понадобилось атакующим, чтобы вывести $6,3 млрд из Binance — меньше, чем большинству команд реагирования на инциденты нужно, чтобы собраться на видеозвонок. Если вынести из этого один урок, пусть это будет такой: безопасность криптобирж ломается не в математике. Подписи, скорее всего, были валидны. Ключи делали ровно то, что ключи и делают. Провал — в скорости: современная биржа способна превратить один скомпрометированный набор учётных данных в миллиарды долларов необратимых расчётов быстрее, чем человек успеет сказать «подождите».

Ранние данные указывают на то, что точкой входа стало скомпрометированное устройство сотрудника, а биржа обещает покрыть убытки и сотрудничать с правоохранительными органами. Всё это не должно вас успокаивать. Один ноутбук между атакующим и $6,3 млрд — это не архитектура безопасности, а анекдот, который ждёт своего часа. Мы десятилетие укрепляли не тот слой стека, и этот взлом — счёт, который пришёл к оплате.

Двадцать минут — это ошибка проектирования, а не плохой день

Самая эмоциональная часть истории — двадцать минут! — на деле наименее удивительна. Любая крупная кража с биржи следует одной и той же схеме: месяцы или годы тихой подготовки, а затем окно исполнения, измеряемое минутами. Ограбление Bangladesh Bank в 2016 году работало так же. Атакующие месяцами находились в сети банка, а затем отправили поддельные сообщения SWIFT одной очередью. Они хотели миллиард долларов, а получили $81 млн, и только потому, что внимательный сотрудник банка-корреспондента заметил что-то странное и остановил остальное. Здесь сыграла роль удача. Удача — не средство контроля.

Что делает криптобиржи особенными и при этом уязвимыми — сочетание трёх свойств, которые почти никогда не сосуществуют в традиционных финансах. Расчёты окончательны, поэтому кнопки отзыва нет. Расчёты быстрые, поэтому нет окна для проверки. И расчёты основаны на предъявителе, так что тот, кто владеет возможностью подписи, владеет и деньгами. Банковский перевод можно заморозить одним звонком в банк-корреспондент. Пакет подписанных блокчейн-транзакций нельзя «отподписать». Когда атакующий попадает в путь подписи биржи, он не крадёт деньги. Он их телепортирует.

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

Почему лучшая криптография не спасла бы биржу

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

Если точка входа — скомпрометированный ноутбук сотрудника, то есть сессия с действительными учётными данными, действительными MFA-токенами и действительным доступом к слою оркестрации выводов, тогда каждая подпись, которую выдаёт система, криптографически безупречна. HSM не знает, что человек, который им управляет, на самом деле управляется удалённо. MPC не помогает, когда атакующий компрометирует достаточно конечных устройств участников — именно так прошла кража $625 млн из моста Ronin: пять из девяти ключей валидаторов были взяты через скомпрометированные машины, а не взломом математики. Даже фольклор о том, что сам Bitcoin «взламывают», обычно рассыпается при внимательном рассмотрении, как мы выяснили, когда разбирали нашумевший эксплойт для Bitcoin на PHP и обнаружили, что криптография никогда не была слабым местом. Слабое место — всегда момент, когда доверенная система используется по назначению человеком, которому её не следовало бы трогать.

Криптография защищает ключ. Ничто в математике не защищает момент, когда ключ используется ровно так, как и задумано.

Мониторинг не может выиграть гонку с двадцатиминутным таймером

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

Это та асимметрия, которую никто не хочет учитывать. Защитники работают по рабочим часам, а атакующие нападают по выходным и праздникам именно потому, что время реакции падает. И даже когда сигнал срабатывает мгновенно, он не является выключателем — выключатель это человек. Мы видели этот фильм и вне криптовалют: кражу Bangladesh Bank остановил человек, а не система, и этого человека почти не оказалось на месте. Если ваша последняя линия обороны — «будем надеяться, кто-то смотрит на дашборд», то последней линии обороны у вас нет. Та же логика применима гораздо шире бирж — мы писали похожий текст о том, почему изоляция побеждает мониторинг для автономных агентов: наблюдение без возможности вмешаться — это просто запись вашего провала.

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

Компенсация убытков — это признание, а не решение

Binance заявляет, что покроет все убытки, и, справедливости ради, компания уже делала это раньше: после взлома 2019 года, при котором было похищено 7 000 BTC, её страховой фонд SAFU полностью возместил убытки пользователям. Тогда рынок почти не дрогнул, и сейчас, вероятно, тоже не дрогнет. Но давайте честно скажем, что «мы всё покроем» означает с архитектурной точки зрения: ничего. Страховка — это механизм баланса для поглощения провала, а не инженерный механизм его предотвращения. Она превращает катастрофу в статью расходов, что рационально для биржи и совершенно неважно для следующего атакующего, который столкнётся с тем же двадцатиминутным окном.

Есть и проблема масштаба, о которой в индустрии не любят говорить вслух. Убыток в $6,3 млрд во много раз превышает всю совокупную страховую ёмкость крипто-сектора. Лишь несколько бирж на планете способны самостоятельно покрыть такую потерю. Каждая площадка поменьше — а таких сотни, и они держат значительные средства клиентов — по сути делает ставку на то, что не окажется следующей жертвой. Именно этот пробел призваны закрывать гарантирование вкладов и пруденциальное регулирование в банкинге, и поэтому инстинкт «разве Binance не должны привлечь за халатность в безопасности?», каким бы грубым он ни был, указывает на реальную вещь. Сто лет назад мы решили, что учреждения, хранящие чужие деньги, не вправе сами выбирать аппетит к риску. Крипто пятнадцать лет пересматривает это решение, по одной краже за раз.

Автоматические выключатели: решение, которое рынки уже изобрели

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

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

from dataclasses import dataclass
from datetime import datetime, timedelta
@dataclass
class WithdrawalPolicy:
window: timedelta = timedelta(minutes=30)
max_outflow_pct: float = 2.0      # of hot-wallet balance per window
hard_freeze_pct: float = 5.0      # trip the breaker entirely
large_threshold_usd: float = 1_000_000
large_delay: timedelta = timedelta(hours=24)
class CircuitBreaker:
def __init__(self, policy: WithdrawalPolicy):
self.policy = policy
self.recent: list[tuple[datetime, float]] = []
self.tripped = False
def authorize(self, amount_usd: float, hot_balance_usd: float) -> str:
if self.tripped:
return "REJECT: breaker tripped, manual review required"
now = datetime.utcnow()
cutoff = now - self.policy.window
self.recent = [(t, a) for t, a in self.recent if t > cutoff]
outflow_pct = 100 * (sum(a for _, a in self.recent) + amount_usd) / hot_balance_usd
if outflow_pct > self.policy.hard_freeze_pct:
self.tripped = True
return "HALT: outflow exceeded safety threshold, withdrawals frozen"
if outflow_pct > self.policy.max_outflow_pct:
return "QUEUE: velocity limit reached, withdrawal delayed"
if amount_usd > self.policy.large_threshold_usd:
return f"DELAY: held {self.policy.large_delay} for review"
self.recent.append((now, amount_usd))
return "APPROVE"

Посмотрите, что это даёт при цифрах из этого ограбления. Если горячий кошелёк содержит даже 10% от $6,3 млрд, жёсткая блокировка на уровне 5% от горячего баланса ограничивает автоматические потери примерно $31 млн — неприятный день, а не экзистенциальное событие. Что важнее, двадцатиминутный спринт атакующего превращается в многодневную ползучую операцию, а значит, команда мониторинга наконец получает возможность сыграть свою роль. Смысл не в том, чтобы перехитрить атакующего, а в том, чтобы растянуть время до прихода человека. Это оборонная инженерия в классическом смысле: спроектировать систему так, чтобы её худший сценарий отказа был скучным.

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

Задержки выводов и преимущества скучного банкинга

Выключатели работают со скоростью, задержки — с объёмом. Секретное оружие традиционной финансовой системы — не сложность, а трение. Переводы можно отозвать, ACH занимает дни. Крупные операции запускают периоды удержания и обратные звонки на известные контакты по отдельным каналам. Крипто избавилась от всего этого, потому что мгновенные окончательные расчёты и были продуктом. Но трение можно вернуть избирательно, на границе вывода, не трогая торговый опыт, ради которого пользователи, собственно, и приходят:

  • Крупные выводы с временной блокировкой. Всё выше порога ждёт 24 часа в открытой очереди. Пользователи могут планировать с учётом этого, атакующие — нет: каждый час задержки — это час на то, чтобы обнаружить взлом.
  • Жёсткие лимиты горячего кошелька. Онлайн держите только то, что нужно для обычных выводов за 24 часа — для большинства бирж это низкие одно- и двузначные проценты активов. Перемещения в холодное хранение требуют многосторонних церемоний, растянутых на дни, которые не может ускорить никакой набор учётных данных.
  • Белые списки адресов с задержкой изменений. Новые адреса для вывода активируются после задержки с подтверждением по внеполосному каналу. Это убивает классический приём — подмену адресов назначения во время вторжения.
  • Сегментированные полномочия на подпись. Ни один конечный узел, роль или сессия — как бы хорошо они ни были аутентифицированы — не может вывести больше ограниченной суммы. Точка входа теряет значение, когда радиус поражения мал — этому урок, который инцидент с цепочкой поставок в LiteLLM преподал Python-экосистеме: машины разработчиков — самая слабая мишень.
  • Публичное подтверждение резервов с обязательствами. Это не средство против краж, а сигнал о платёжеспособности, который заставляет вариант с «замалчиванием» исчезнуть на раннем этапе.

Обратите внимание: ничего из этого не требует новой криптографии, нового железа или новой науки. Это политики. И они непопулярны, потому что каждая из них — кошмар продакт-менеджера: трение, задержки, лимиты — и потому что экономика бирж вознаграждает пропускную способность и мгновенность всего. Напряжение реально, и ответ индустрии до сих пор был таким: принимать катастрофический хвостовой риск в обмен на быстрый UX. Кража на $6,3 млрд за двадцать минут — это то, как выглядит такой размен, когда приходит время платить по счетам.

Скорость — это выбор, так что выбирайте осознанно

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

Поэтому честный вопрос к каждому инженеру бирж — и, честно говоря, к каждому, кто строит системы, которые перемещают ценность, — не «как не пустить атакующих навсегда?». Не получится. Ноутбуки компрометируют, людей фишингуют, цепочки поставок отравляют. Вопрос в другом: когда кто-то попал внутрь, ваша архитектура падает быстро или медленно? Сейчас ответ индустрии — быстро, окончательно и на телевидении. Ограничения скорости, блокировки выводов по времени и жёсткие лимиты горячих кошельков — вот как этот ответ меняется. Технологии тривиальны. Готовность принять немного трения — нет. А если индустрия сама не выберет это трение, регуляторы, наблюдая, как потеря в $6,3 млрд случается между двумя чашками кофе, в конце концов выберут его за неё.