Я хочу рассказать историю о том, как хакер украл у компании, где я работал, более 10.000€. В то время я работал в финтехе, мы разработали новый продукт для онлайн кредитования.
Грубо говоря архитектура была такая - пользователь заполнял форму, где указывал данные про себя и сколько он хочет взять денег в кредит. Затем эта заявка проходила скоринг. А затем, в зависимости от результата, бэк-энд делал выплату.
Однажды кто-то заметил, что один 🧑💻 получил больше 10.000€. По бизнес правилам это было невозможно, потому что максимальный кредит который мы давали был 1500€ в одни руки.
Мы стали разбираться, и выяснили, что он получил выплату по одной заявке 8 раз! Мы стали копать дальше, и выяснили что, скорее всего, 🧑💻 для результата достаточно было просто очень быстро нажимать на кнопку подачи заявки — когда происходит сабмит формы. Потому что мы успешно обработали одну и туже заявку 8 раз.
На фронт-энде мы просто делали кнопочку "серой", но не блокировали клики по ней. На бэк-энде мы проверяли статус заявки, но если нажимать с разницей в миллисекундах, то запросы будут обработаны разными копиями аппликейшена и статус не успевал обновляться. Это называется
race condition, ну и наш security фэйл, конечно же.Дальше этот кейс ушел в суды и я не знаю чем он закончился. Ну а со стороны инжинеринга, мы конечно же быстро закрыли уязвимость.
⬛️ Еще раз, при проектировании всегда думайте что может пойти не так —
design for failure. Мы не подумали и это стоило минимум 10.000€.А у вас были какие-то
security фейлы? Рассказывайте.