Разработчик Андрей Ачевски получил от Resend уведомление об исчерпании квоты на отправку писем. Он ничего не отправлял несколько дней. Ачевски ведёт open-source проект Kaneo — простую систему управления проектами. Облачная версия нужна, чтобы попробовать инструмент без поднятия Postgres. До недавнего времени ей пользовались только разработчики.
В прошлые выходные всё изменилось. Ачевски зашёл по SSH и увидел 949 новых рабочих пространств. Все созданы за три часа 28 мая. Каждое с мусорного email-провайдера вроде yomail.info. Имя каждого workspace — готовая тема фишингового письма: «Paul Brown from BANKING OPERATION invited you to join 3.4090_BTC receipt». Каждый аккаунт разослал примерно по сотне приглашений незнакомцам. Итого 14 520 писем.
Письмо уходило с верифицированного домена Ачевски через Resend. Тема совпадала с названием workspace. Тело письма содержало ссылку «click here», которая вела на настоящий сайт Kaneo — это делало письмо легитимным. Само мошенничество пряталось в названии workspace: ссылка на craftum.io с трекинг-суффиксом.
Злоумышленник действовал методично. Он явно тестировал атаку заранее. Workspace-имена были шаблонными, с вариациями банков, сумм в крипте и имён отправителей. У него был готовый список получателей, скорее всего купленный. Атаку запустили в 4 утра по UTC в четверг. Resend сработал через полтора часа, но ущерб уже был нанесён.
Самое неприятное — не масштаб, а обыденность. Никакого эксплойта. Никакого CVE. Злоумышленник просто 942 раза заполнил форму регистрации, создал workspace и разослал приглашения. Он использовал инструмент ровно так, как тот спроектирован. Дизайн оказался достаточно плох, чтобы инструмент стал удобен для фишинга. Ачевски смотрел на проект глазами обычного пользователя, а не мошенника.
Он отозвал ключи Resend, выгрузил все данные в CSV и одним Postgres-запросом удалил 942 аккаунта, 947 workspace и 14 533 приглашения. Затем добавил капчу, rate limit, блокировку одноразовых email и фильтр названий workspace. Гостевые аккаунты больше не могут отправлять приглашения.
Главный вывод: облачная версия open-source проекта — это не просто «тот же софт, только захостили за вас». Это инфраструктура, за которую отвечает оператор. Репутация домена, репутация IP, отношения с почтовыми провайдерами — всё это становится чужим оружием, если не продумать угрозы.