Поговорим о том, как три часа бездействия сетевых инженеров Amazon стоили держателям криптовалюты $235 000.
Amazon недавно потерял контроль (bgp route leaking) над своими IP-адресами, которые использовались для предоставления облачных сервисов, и потребовалось более трех часов инженерам электросвязи, чтобы восстановить контроль над сетью. Эта ошибка позволила похитить 235 000 долларов США в криптовалюте у пользователей одного из партнёров Amazon.
Неизвестные захватили контроль (bgp route hijacking) примерно над 256 IP-адресами посредством перехвата сессии BGP, используя известные уязвимости основного интернет-протокола междоменной маршрутизации в глобальной сети Интернет. BGP — это протокол, который организации, маршрутизирующие трафик, известные в сети как автономные системы, используют для взаимодействия с другими такими же сетями или системами ASN. Несмотря на свою решающую функцию по маршрутизации больших объемов данных по всему миру в режиме реального времени, BGP по-прежнему в значительной степени полагается на доверие, что не позволяет сетям и системам в полной мере отслеживать, какие IP-адреса по праву принадлежат каким ASN.
Случай ошибочной идентификации
В прошлом месяце автономная система 209243, принадлежащая британскому сетевому оператору Quickhost.uk, внезапно начала объявлять через bgp, что ее инфраструктура является подходящим и наилучшим путём для других ASN для доступа к так называемому блоку IP-адресов /24, принадлежащему AS16509, одному из как минимум трёх ASN, которыми управляет Amazon. Захваченный блок (bgp hijack) включал также и 44.235.216.69 IP-адрес, на котором размещен cbridge-prod2.celer.network, то есть поддомен, отвечающий за обслуживание критического пользовательского интерфейса смарт-контрактов криптовалютной биржи Celer Bridge.
17 августа неизвестные использовали bgp route hijacking, чтобы сначала получить сертификат TLS для cbridge-prod2.celer.network, поскольку им удалось продемонстрировать центру сертификации GoGetSSL в Латвии, что они контролируют этот субдомен. Имея сертификат, неизвестные затем разместили свой собственный смарт-контракт в том же домене и ждали посещений от людей, пытавшихся получить доступ к реальной странице Celer Bridge cbridge-prod2.celer.network.
В общей сложности подставной контракт унес с 32 учетных записей биржи в общей сложности 234 866,65 долларов США, согласно отчету охранной фирмы SlowMist и отчету группы анализа угроз Coinbase.

Что думает по этому поводу команда Coinbase?
Фишинговый контракт очень похож на официальный контракт Celer Bridge, поскольку имитирует многие его атрибуты. Для любого метода, явно не определенного в фишинговом контракте, он реализует структуру прокси, которая перенаправляет вызовы на легальный контракт Celer Bridge. Прокси-контракт уникален для каждой цепочки и настраивается при инициализации. Команда ниже иллюстрирует содержимое слота хранилища, отвечающего за конфигурацию прокси-контракта фишингового контракта:

Фишинговый контракт крадет средства пользователей двумя способами:
- Любые токены, одобренные жертвами фишинга, удаляются с помощью специального метода с 4-байтовым значением 0x9c307de6().
- Фишинговый контракт отменяет следующие методы, предназначенные для немедленной кражи токенов жертвы:
- send() — используется для кражи токенов (например, USDC)
- sendNative() — используется для кражи собственных активов (например, ETH)
- addLiquidity() — используется для кражи токенов (например, USDC)
- addNativeLiquidity() — используется для кражи собственных активов (например, ETH)
Ниже приведен пример фрагмента кода, полученного методом реверс-инжиниринга, который перенаправляет активы в кошелек человека, осуществившего BGP route hijacking:

Привет, Amazon? Где ваш сетевой инженер?
Как показано в зеленых секциях в верхней части этого графика, подготовленного Дугом Мэдори из компании по мониторингу bgp route leaking – сетевых утечек маршрутов Kentik, неавторизованное объявление маршрутной информации по BGP (bgp route hijacking) началось 17 августа около 19:39 UTC времени и за считанные секунды префикс распространился глобально. По неизвестным причинам объявление префикса было отозвано в 20:22 только для того, чтобы провести bgp route injection и снова отозвать неавторизованные анонсы префикса ещё три раза в течение следующих двух часов.

В объявлении маршрута (bgp route injection) по BGP утверждалось, что адрес 44.235.216.0/24 исходит от AS14618, одного из других ASN Amazon, и должен быть маршрутизирован через сеть автономной системы AS20943 Quickhostuk. Новое анонс префикса через BGP route injection, подобное этому, которое за считанные секунды заставляет весь Интернет маршрутизировать IP-адреса Amazon через Quickhostuk ASN, — это событие, которое должно было вызвать немедленное расследование со стороны облачного провайдера. По причинам, которые остаются неизвестными, Amazon не начал объявлять правильный путь для своего блока /24 до 23:07 (как указано фиолетовым цветом на графике выше), более чем через три часа после начала неавторизованных объявлений маршрутной информации (BGP route injection).
«Ключевой деталью, которая отличала бы это предупреждение от появления просто еще одного узла Amazon, было бы то, что новый восходящий поток был виден 100% точек обзора BGP», — написал Мадори в четверг. «Другими словами, этот новый префикс Amazon эксклюзивно передавался этим относительно неизвестным хостинг-провайдером. Это должно было вызвать удивление у команды Amazon NetOps».
Представители Amazon не ответили ни на одно из трех электронных писем с просьбой прокомментировать этот пост, отправленных за последние девять дней. После публикации этого сообщения представитель Amazon заявил, что все несколько адресов назначения в запросе на комментарий были отключены, и что компания не игнорирует электронные письма.
Представители Quickhostuk не ответили на два электронных письма с вопросом, как и откуда появились неавторизованные анонсы маршрутной информации (BGP route injection).
Подобное уже случалось ранее
Это не первый случай, когда BGP route injection осуществляется с целью перехвата IP-адресов Amazon заканчивается огромными потерями криптовалюты. В 2018 году невероятно похожее событие произошло с сервисом системы доменных имен Amazon Route 53. В результате реализации сценария bgp route hijacking у владельцев счетов MyEtherWallet.com было украдено около 150 000 долларов США в криптовалюте. Украденная сумма, вероятно, была бы выше, если бы неизвестные получили бы доверенный браузеру TLS-сертификат вместо самописного сертификата, который требовал от жертв нажатия на предупреждение.
После инцидента с bgp route hijacking 2018 года Amazon добавила более 5000 своих IP-префиксов к так называемым ROA (разрешения на происхождение маршрута), которые представляют собой общедоступные документы, в которых указывается, какие ASN имеют право объявлять какие IP-адреса. Этот шаг обеспечил некоторую защиту с использованием RPKI (инфраструктуры открытых ключей ресурсов), которая проверяет цифровые сертификаты для подключения ASN к их законным IP-адресам.
Этот анализ показывает, что для обхода защиты неизвестные в прошлом месяце добавили AS16509 и более специфичный маршрут /24 в так называемый AS-SET, индексированный в ALTDB, бесплатном реестре для автономных систем, в котором можно публиковать свои политики маршрутизации BGP routing information.
irrd.log-20220817.gz:31106270-ADD 96126
irrd.log-20220817.gz:31106280-
irrd.log-20220817.gz:31106281-as-set: AS-SET209243
irrd.log-20220817.gz:31106306-descr: quickhost set
irrd.log-20220817.gz:31106332-members: AS209243, AS16509
irrd.log-20220817.gz:31106362:mnt-by: MAINT-QUICKHOSTUK
irrd.log-20220817.gz:31106392-changed: crussell()quickhostuk net 20220816
irrd.log-20220817.gz:31106438-source: ALTDB
irrd.log-20220817.gz:31147549-ADD 96127
irrd.log-20220817.gz:31147559-
irrd.log-20220817.gz:31147560-route: 44.235.216.0/24
irrd.log-20220817.gz:31147588-descr: route
irrd.log-20220817.gz:31147606-origin: AS16509
irrd.log-20220817.gz:31147626:mnt-by: MAINT-QUICKHOSTUK
irrd.log-20220817.gz:31147656-changed: crussell()quickhostuk net 20220816
irrd.log-20220817.gz:31147702-source: ALTDB
AS-SET — это регистрационная запись, определяющая допустимый набор номеров ASN, с которыми провайдер может взаимодействовать в глобальной сети.
Анализируя, почему этот приём не смог предотвратить угон bgp-сессии в прошлом месяце, Мадори осторожно отметил, что RPKI предназначен для ограничения воздействия непреднамеренных или случайных bgp route leaking из-за утечек маршрутизации или неправильных конфигураций, а не в качестве механизма безопасности для предотвращения мошенничества (bgp route hijacking) и угона bgp-сессии со стороны мотивированных нарушителей.
Он написал: “Тем не менее, это все равно могло бы помочь, если бы ROA было настроено по-другому. В нынешнем виде ROA для рассматриваемого адресного пространства довольно либерален. По сути, три разных ASN Amazon (16509, 8987 и 14618) могут объявлять части этого адресного пространства с префиксами размером от /10 до /24. Посмотрите выходные данные веб-интерфейса Routinator:…”

Альтернативным подходом к созданию ROA было бы сделать то, что сделали другие сети, такие как Cloudflare и Comcast: установить источник и максимальную длину префикса, чтобы они были идентичны тому, как маршрутизируется префикс. Хотя этот подход влечет за собой накладные расходы, связанные с необходимостью обновлять ROA каждый раз при изменении маршрута, он также оставляет мало места для ввода в обращение альтернативных версий маршрута.
Честно говоря, Amazon — далеко не единственный облачный оператор, потерявший контроль над своими IP-адресами в результате BGP route injection. Уязвимость BGP к неуклюжим ошибкам в настройке и откровенному мошенничеству очевидна уже более двух десятилетий. Отсутствие безопасности в конечном итоге является общеотраслевой проблемой, которую Amazon не в состоянии решить в одиночку.
Но как облачный провайдер первого уровня, который в настоящее время пострадал как минимум от двух инцидентов с BGP route hijacking, которые стоили денег его пользователям, Amazon следует ожидать, что он признает это событие, объяснит, почему он ждал более трех часов, чтобы принять корректирующие меры, и наметит план. для предотвращения подобных случаев bgp route leaking в будущем. Вместо того, чтобы хранить молчание, как это делалось в течение последних пяти недель Quickhostuk, другой участник инцидента также должен объяснить этот кейс с bgp route injection со своей стороны и разъяснить, почему его ASN проанонсировала такую проблемную маршрутную информацию в глобальную сеть Интернет.
Более подробно обсудить со мной вопрос практического применения описанных инструментов, приёмов и методов можно в личных сообщениях. Контактные данные указаны в соответствующем разделе этого сайта.