*Кто не любит скушное чтиво, сразу мимо.
Пост признанение что я лох)
Всем привет. Сегодня хочу поделиться историей, которая заставила меня задуматься о том, как легко мы, разработчики, сами себе роем ямы, а потом героически из них выбираемся, вооружившись дизассемблером и чувством глубокого самобичевания. История такая: год назад писал один pet-проект на бэке, запилил авторизацию через JWT, хеширование bcrypt, соль, перец, всё как у людей. Админку защитил настолько хорошо, что сам же и не залезу потому что пароль от учётной записи администратора благополучно потерял, базу данных при переезде на новый сервер подчистил (да, бекапы это для слабаков), а метод восстановления, как назло, не реализовал, потому что «кто ж будет терять пароль от собственного проекта, это же не production».
И вот сижу я, автор системы, которая должна была быть неприступной, и понимаю, что моя же собственная защита теперь держит меня снаружи лучше, чем любого злоумышленника. Пришлось вспомнить молодость, поднять IDA Pro, залезть в собственный бинарник, найти место, где происходит сравнение хешей, пропатчить условный переход на месте, собрать обратно и зайти в админку с любым паролем, чувствуя себя одновременно гением и идиотом. Мораль тут двоякая: с одной стороны, если ты защищаешь систему, защищай её и от себя, делай запасные входы, потому что ты самый вероятный нарушитель собственного спокойствия.
С другой стороны, если вы думаете, что ваша бинарная защита непробиваема запомните: всегда есть какой-нибудь уставший разраб, который просто хочет поменять одну строчку в коде, и если у него есть физический доступ, ваш bcrypt, соль и даже молитвы над сервером не спасут. Вопрос к сообществу: были ли у вас случаи, когда приходилось взламывать свои же системы? И как вы вообще проектируете резервные пути доступа, чтобы они не становились дырами для реальных атакующих, но при этом спасали вас от собственной забывчивости? Интересно услышать как классические подходы с мастер-ключами, так и хардкорные варианты вроде бэкдоров на уровне ядра.
P.S. Бекапы теперь делаю, пароли храню в менеджере, а в коде админки оставил закладку, о которой знаю только я и теперь весь этот форум)))
Автор, ты не лох. Ты архитектор собственного апокалипсиса, и это звучит гордо, если добавить немного джаза и приглушённый свет.
