Как хакеры вынесут стартап, который ты вайб-кодил за вечер

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

Пока ты в сотый раз просил Клод выровнять блоки, ты открыл десяток дверей внутрь своего продукта. Ниже — самые ходовые из них: от совсем тупых до тех, о которых вайб-кодер обычно даже не слышал. Разбил на три группы — по тому, как именно тебя достают.

Как хакеры вынесут стартап, который ты вайб-кодил за вечер

Группа 1. Тебя просто впускают внутрь

Самое обидное — когда ломать толком нечего. Ты сам оставил вход открытым.

Брутфорс. Ты не поставил лимит попыток входа и не включил двухфакторку. Хакеры запустили перебор паролей, подобрали подходящий и зашли в админку — пока ты в очередной раз выравнивал блоки в Клоде.

Креденшал-стаффинг. Ты поставил тот же пароль, что уже светился у тебя на другом сайте. Никакого перебора и не понадобилось: взяли готовую связку «почта + пароль» из старой утечки, проверили в твоём сервисе — и вошли.

Кража сессии. Пароль вообще не нужен, если можно украсть куки. Вирус, вредоносное расширение или XSS на твоём же сайте — и хакер вытаскивает сессионную куку прямо из браузера пользователя. Дальше он просто становится этим пользователем и спокойно заходит в аккаунт.

Кривые права доступа. Ты спрятал админскую кнопку во фронтенде и решил, что этого хватит. Хакер вызвал админский запрос напрямую, мимо интерфейса, — и даже не заметил, что кнопки нет. Проверять права надо на сервере, а не прятать элементы в вёрстке.

IDOR. Ты проверил, что пользователь авторизован, но забыл проверить, чьи это данные. Хакер поменял в ссылке номер заказа со 125 на 126 — и увидел чужой заказ. Поставил 127, потом 128… и понял, что ты случайно устроил ему экспорт всей базы по одному счётчику.

Как работает IDOR
Как работает IDOR

Группа 2. Тебя обманывают через ввод

Здесь дыра в том, что ты доверяешь всему, что приходит снаружи: тексту в форме, ссылке, файлу, запросу от «платёжки».

SQL-инъекция. Ты разрешил сайту вставлять пользовательский текст прямо в команду к базе. Хакер написал в форме не имя, а собственный запрос. База честно его выполнила и отдала всё, что он попросил.

SQL-инъекция
SQL-инъекция

Поддельный веб-хук. Ты принимаешь уведомления «оплата прошла», но не проверяешь подпись платёжной системы. Хакер сам отправил тебе такой запрос — и получил продукт бесплатно. Сервер поверил на слово.

Поддельный веб-хук
Поддельный веб-хук

SSRF. Ты сделал функцию, которая скачивает файл по ссылке пользователя. Хакер вместо картинки подсунул адрес внутреннего сервиса, недоступного из интернета. Твой сервер сам сходил туда, забрал закрытые данные и вежливо принёс их обратно.

SSRF
SSRF

Вредоносный файл. Ты разрешил загружать аватарки, но проверял только название файла. Хакер подсунул серверный скрипт под видом картинки, приложение сохранило его туда, где код можно запустить. Дальше он открыл «свою аватарку» — и получил доступ к серверу.

Группа 3. Ты сам оставил дверь открытой

Тут даже атаковать не пришлось. Ключи, конфиги и логи ты выложил сам.

Утечка ключей. Ты оставил ключ от базы, токен бота или секрет платёжки во фронтенде или в публичном репозитории. Автоматический сканер нашёл его быстрее тебя — и кто-то начал зарабатывать на твоём продукте первым.

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

CORS нараспашку. Ты устал разбираться, почему фронтенд не достучится до API, и разрешил авторизованные запросы с любых сайтов. Хакер сделал свою страницу, пользователь её открыл — и браузер сам передал ей данные из твоего сервиса вместе с активной сессией. Зато ошибка в консоли пропала. Вместе с приватностью.

Race condition. Ты не подумал, что запросы могут прийти одновременно. Хакер отправил их сотню разом — и несколько раз списал баланс, активировал один промокод пачкой или забрал товар, который был в одном экземпляре.

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

И это только начало списка

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

Хорошая новость: почти всё это закрывается стандартными вещами — лимиты и 2FA, проверка прав и подписей на сервере, параметризованные запросы, секреты в переменных окружения, а не в коде. Плохая — по умолчанию Клод тебе их не расставит. Ты просил рабочий сайт, а не безопасный.

Как пройтись по своему проекту и найти эти дыры раньше, чем это сделает кто-то чужой, — тема отдельного разбора.

55