Инциденты и уязвимости
Кража NEM с Coincheck (2018) — как украли около $530 млн и защита через управление ключами
В январе 2018 года с японской биржи Coincheck украли около 523 млн XEM (~$530 млн): огромный остаток лежал в «горячем кошельке» без мультиподписи, поэтому один украденный ключ увёл почти всё. Защищайтесь: держите ключи в холоде, требуйте одобрения несколькими сторонами, выявляйте аномальные списания.
Реальные публичные инциденты мы читаем не как повтор новостей, а как «как вам от этого защититься?» Эта статья опирается на публичные записи (регуляторы, официальные заявления компаний, авторитетные СМИ). Источники перечислены в конце, инструкций по атаке нет.
- Цель
- Активы клиентов (XEM/NEM), хранившиеся в горячем кошельке биржи
- Обнаружено
- 26 января 2018 года (несанкционированные переводы)
- Схема
- Целевой фишинг / вредоносное ПО против персонала → кража приватного ключа горячего кошелька → единый массовый перевод
- Масштаб
- ~523 млн XEM, ~$530 млн на тот момент (затронуто ~260 000 пользователей)
- Коренная причина
- Крупный остаток в подключённом к интернету горячем кошельке + отсутствие мультиподписи (единая точка отказа) + слабая устойчивость конечных точек + слабое обнаружение/остановка массовых списаний
- Настоящее исправление
- Ключи в холоде / в выделенном хранилище, одобрение несколькими сторонами, минимизация горячего остатка, защита конечных точек/почты, обнаружение аномальных списаний
Что произошло (простыми словами)
Криптовалютный «кошелёк» хранит не сам актив, а приватный ключ, которым его можно двигать. Ключи можно хранить двумя способами: подключённый к интернету, мгновенно доступный «горячий кошелёк», или офлайновый «холодный кошелёк» (холодное хранение). Горячий удобен, но достижим для атакующего по сети.
Здесь крупный остаток XEM хранился в горячем кошельке и без мультиподписи. Мультиподпись требует согласия нескольких ключей, прежде чем средства сдвинутся, поэтому один утёкший ключ сам по себе ничего не двигает. Без неё в тот момент, когда украден единственный приватный ключ, можно увести почти весь остаток. По открытым данным, первым шагом стало вредоносное ПО, доставленное через целевой фишинг против сотрудников, — им и украли ключ.
Крупный, мгновенно расходуемый остаток — идеальная цель для атакующего
Больше всего атакующие ценят единую точку отказа, которая напрямую отображается в большую ценность. Крупный остаток в подключённом к интернету горячем кошельке, защищённый одной подписью, — ровно это. И дело не только в крипте: один API-ключ, читающий всю базу данных, или один аккаунт администратора, который может всё, несут ту же опасность.
Цепочка атаки — это ещё и карта защиты
Это была цепочка, где на каждом шаге было место, чтобы её остановить. Читайте её как где её можно было разорвать, а не как инструкцию.
1. Вход: целевой фишинг / вредоносное ПО против персонала
Проработанное поддельное письмо заражает конечную точку вредоносным ПО.
Остановка: защита почты / конечных точек (EDR, осторожность с вложениями и макросами)
2. Кража приватного ключа горячего кошелька
С заражённой конечной точки крадётся ключ, которым можно двигать средства.
Остановка: держать ключи офлайн / в HSM; требовать нескольких подписей
3. Единый массовый перевод (~523 млн XEM)
Одна подпись может это двигать, поэтому почти всё уходит быстро.
Остановка: минимизировать горячий остаток; обнаруживать, одобрять и замораживать крупные переводы
4. Отмывание / рассеивание
Активы двигают так, чтобы затруднить отслеживание.
Остановка: обнаружение и немедленная остановка; заранее уменьшить радиус поражения
Опубликованная хронология
2018-01-26
Обнаружены несанкционированные переводы; уходит523 млн XEM ($530 млн). Ввод/вывод XEM и торги приостановлены.2018-01-27
Публичная пресс-конференция; компания заявляет, что возместит пострадавшим пользователям убытки в японских иенах.2018-03
Управление финансовых услуг Японии (FSA) издаёт приказ об улучшении бизнеса по Закону о платёжных услугах; ~¥46,3 млрд возмещены ~260 000 пользователей.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) обнаруживайте и останавливайте аномальные массовые операции. Всё это масштабируется вниз.