Инциденты и уязвимости
Кража NEM с Coincheck (2018) — как украли около $530 млн и защита через управление ключами
В январе 2018 года с японской биржи Coincheck украли около 523 млн XEM (~$530 млн): огромный остаток лежал в «горячем кошельке» без мультиподписи, поэтому один украденный ключ увёл почти всё. Защищайтесь: держите ключи в холоде, требуйте одобрения несколькими сторонами, выявляйте аномальные списания.
Реальные публичные инциденты мы читаем не как повтор новостей, а как «как вам от этого защититься?» Эта статья опирается на публичные записи (регуляторы, официальные заявления компаний, авторитетные СМИ). Источники перечислены в конце, инструкций по атаке нет.
- Цель
- Активы клиентов (XEM/NEM), хранившиеся в горячем кошельке биржи
- Обнаружено
- 26 января 2018 года (несанкционированные переводы)
- Схема
- Целевой фишинг / вредоносное ПО против персонала → кража приватного ключа горячего кошелька → единый массовый перевод
- Масштаб
- ~523 млн XEM (точнее ~526,3 млн XEM), ~$530 млн на тот момент (затронуто ~260 000 пользователей)
- Коренная причина
- Крупный остаток в подключённом к интернету горячем кошельке + отсутствие мультиподписи (единая точка отказа) + слабая устойчивость конечных точек + слабое обнаружение/остановка массовых списаний
- Основные меры
- Ключи офлайн / в выделенном хранилище ключей (HSM/KMS), одобрение несколькими сторонами, минимизация горячего остатка, защита конечных точек/почты, обнаружение аномальных списаний
Что произошло (простыми словами)
Криптовалютный «кошелёк» хранит не сам актив, а приватный ключ, которым его можно двигать. Ключи можно хранить двумя способами: подключённый к интернету, мгновенно доступный «горячий кошелёк», или офлайновый «холодный кошелёк» (холодное хранение). Горячий удобен, но атакующий может добраться до него по сети.
Здесь крупный остаток XEM хранился в горячем кошельке и без мультиподписи. Мультиподпись требует согласия нескольких ключей, прежде чем средства сдвинутся, поэтому один утёкший ключ сам по себе ничего не двигает. Без неё в тот момент, когда украден единственный приватный ключ, можно увести почти весь остаток. По открытым данным, первым шагом стало вредоносное ПО, доставленное через целевой фишинг против сотрудников, — им и украли ключ.
Крупный остаток, который можно мгновенно перевести, — самая вероятная цель
Больше всего атакующие ценят единую точку отказа, которая даёт прямой доступ к большой ценности. Крупный остаток в подключённом к интернету горячем кошельке, защищённый одной подписью, — ровно это. И дело не только в крипте: один API-ключ, читающий всю базу данных, или один аккаунт администратора, который может всё, несут ту же опасность.
Этапы атаки и как остановить каждый из них
Это была цепочка, где на каждом шаге было место, чтобы её остановить. Читайте её как где её можно было разорвать, а не как инструкцию.
1. Первичный доступ: целевой фишинг / вредоносное ПО против персонала
Проработанное поддельное письмо заражает конечную точку вредоносным ПО.
Остановка: защита почты / конечных точек (EDR, осторожность с вложениями и макросами)
2. Кража приватного ключа горячего кошелька
С заражённой конечной точки крадётся ключ, которым можно двигать средства.
Остановка: держать ключи офлайн / в HSM; требовать нескольких подписей
3. Единый массовый перевод (~523 млн XEM)
Одна подпись может это двигать, поэтому почти всё уходит быстро.
Остановка: минимизировать горячий остаток; обнаруживать, одобрять и замораживать крупные переводы
4. Отмывание / рассеивание
Активы двигают так, чтобы затруднить отслеживание. В ответ на это NEM Foundation пометил похищенные XEM, чтобы помочь их отслеживать и выявлять.
Остановка: обнаружение и немедленная остановка; ограничить, сколько можно вывести одним украденным ключом
Опубликованная хронология
2018-01-26
Обнаружены несанкционированные переводы; уходит523 млн XEM ($530 млн / ~¥58 млрд на тот момент). Ввод/вывод XEM и торги приостановлены; раскрыто на экстренной пресс-конференции.2018-01-28
Компания заявляет, что возместит пострадавшим пользователям убытки в японских иенах (~260 000 пользователей, всего ~¥46,3 млрд).2018-01-29
Управление финансовых услуг Японии (FSA) издаёт ПЕРВЫЙ приказ об улучшении бизнеса по Закону о платёжных услугах — всего через три дня после обнаружения.2018-03-08
FSA издаёт ВТОРОЙ приказ об улучшении бизнеса (защита клиентов и противодействие отмыванию средств); возмещение в иенах завершено 12 марта.2018-04
Объявлено о поглощении со стороны Monex Group; руководство обновлено.2018–
Инцидент запускает поэтапное ужесточение надзора за криптовалютными биржами.
Коренная причина: не хватало сразу нескольких защит
Списать это на «их поразило вредоносное ПО» — значит напроситься на повтор. На деле несколько слоёв обрушились друг за другом.
Конфигурация, которая обрушилась
- Крупный остаток XEM в подключённом к интернету горячем кошельке
- Без мультиподписи — один украденный ключ мог увести всё (единая точка отказа)
- Конечные точки сотрудников не остановили первичное проникновение через целевой фишинг / вредоносное ПО
- Слабая способность вовремя остановить крупный аномальный перевод
Конфигурация, которая держится
- Держите большинство активов в холодном хранении (офлайн); горячий остаток — минимальный
- Мультиподпись / одобрение несколькими сторонами, чтобы один утёкший ключ не мог сам двигать средства
- Защита конечных точек / почты останавливает первичное проникновение через целевой фишинг
- Встройте в операции обнаружение, одобрение и заморозку массовых списаний
Возмещение и регулирование: затраты после инцидента велики
Coincheck возместила пострадавшим пользователям убытки в иенах (~260 000 пользователей, ~¥46,3 млрд), получила приказ FSA об улучшении бизнеса и в итоге прошла реструктуризацию через поглощение. Стоимость возмещения постфактум, восстановления доверия и ответа на регулирование намного выше, чем предварительные вложения в проектирование. Проектируйте управление ключами под ценность, которую защищаете, — до инцидента, а не после.
Как вам от этого защититься
Даже если вы не касаетесь крипты, если есть хоть одно место, где один ключ или один аккаунт двигает много ценности, это про вас. По приоритету:
Держите важнейшие ключи/секреты офлайн (холодное хранение)
Ключи и секреты, которые не нужны постоянно, место которым — офлайн или в выделенном хранилище ключей (HSM/KMS). Держите достижимую из интернета («горячую») часть минимальной, чтобы сумма под угрозой при взломе была небольшой.
Устраните единые точки отказа (одобрение несколькими сторонами, разделение привилегий)
Избегайте состояния, когда один ключ или один человек может двигать все активы/права. Требуйте нескольких одобрений (эквивалент мультиподписи) для критичных действий и разделяйте привилегии, чтобы одна утечка не приводила к крупному ущербу.
Укрепите конечные точки и почту против вредоносного ПО
Первый шаг часто — целевой фишинг и вредоносное ПО. Обнаруживайте аномалии конечных точек с помощью EDR и встройте в рутину осторожность с вложениями, макросами и подозрительными ссылками.
Обнаруживайте и останавливайте аномальные массовые операции
Отмечайте «много ушло за короткое время» и «необычные адресаты» и умейте приостановить, задержать для одобрения или заморозить немедленно. Даже если предотвратить нельзя, сокращение времени до заметить и остановить уменьшает потерю.
В чём это пересекается с тем, как устроен наш сайт
По сути этот инцидент был о хранении секрета (ключа) в более доступном для мгновенного использования виде, чем нужно, массово, как единой точки отказа. Это противоположность собственным принципам нашего сайта: не хранить секреты за других, держать достижимым только минимум и ограничивать, насколько далеко распространится ущерб при взломе одной части. За пределами крипты один API-ключ, читающий всю базу данных, или один аккаунт администратора, который может всё, несут ту же опасность. «Держи в холоде, держи горячее минимальным, никогда не давай одному ключу двигать всё» — защита, которую любой может реализовать в любом масштабе.
Источники (публичные записи)
Факты здесь опираются на следующую публичную информацию. Инструкций по атаке нет — только защитные уроки.
- Управление финансовых услуг Японии (FSA), административные меры в отношении Coincheck (2018) — fsa.go.jp
- Официальные заявления Coincheck (уведомление о несанкционированном переводе / политика возмещения, 2018) — coincheck.com
- Reuters, «Japan's Coincheck exchange loses $530 million in cryptocurrency heist» (2018) — reuters.com
Читать дальше
- Термины: Фишинг (целевой фишинг) / Вредоносное ПО (первый шаг)
- Термин: EDR (обнаружение аномалий конечных точек)
- Практика: Чек-лист базовой безопасности (в первую очередь защитите самые мощные ключи и аккаунты)
FAQ
QКакова была коренная причина инцидента с Coincheck?
Очень крупный объём XEM (NEM) хранился в подключённом к интернету «горячем кошельке» без мультиподписи (мультисиг). В такой конфигурации кражи единственного приватного ключа достаточно, чтобы увести почти весь остаток. По открытым данным, первичным проникновением стало вредоносное ПО, доставленное через целевой фишинг, нацеленный на сотрудников, — с его помощью и украли этот ключ.
QУ меня нет криптовалюты — это вообще про меня?
Да. Урок не специфичен для крипты: он о хранении ценных секретов (ключей, API-ключей, прав администратора) в мгновенно доступном и достижимом из интернета состоянии, массово, как единой точки отказа. Держите важные секреты офлайн или в выделенном хранилище ключей (HSM/KMS), минимизируйте то, что достижимо из интернета, и следите, чтобы ни один ключ не мог увести всё. Это применимо к любой системе.
QМожет ли небольшой сервис что-то из этого извлечь?
Да: (1) держите важнейшие ключи/секреты офлайн или в выделенном хранилище (HSM/KMS); (2) следите, чтобы ни один ключ или человек не мог двигать все активы/права (одобрение несколькими сторонами, разделение привилегий); (3) защищайте конечные точки от вредоносного ПО, а сотрудников — от целевого фишинга; (4) обнаруживайте и останавливайте аномальные массовые операции. Всё это масштабируется вниз.