Pull to refresh

Утечка исходников в банке: безразличие или так задумано?

Level of difficultyMedium
Reading time5 min
Views10K

TLDR: У системообразующего банка торчат исходники приложения, доступные всему миру, а ему плевать.

Disclamer: Я выждал 3 месяца, а на самом деле даже больше, и считаю допустимым опубликовать данный материал не нарушая этических норм, но называть банк я не буду.

Приветствую тебя, хабраюзер! Сегодня я хочу поведать тебе чудесную историю о наплевательстве на утечку исходников в одном из системообразующих банков РФ, а утечку исходников я считаю критической дырой.

С чего всё начиналось

Всё началось в начале ноября 2024 года. Я пользуюсь брокерскими услугами одного из банков, и что-то мне понадобилось дёрнуть какой-то отчёт, сейчас уже даже не вспомню какой, но я был уверен в том, что именно в веб-интерфейсе было именно то, что мне нужно.
Попытался его найти, но т.к. этот интерфейс уже был морально устаревший и банк решил от него избавиться, все попытки завершались тем, что меня редиректило на веб-версию брокерского приложения. Думаю ладно, потыкаю в него, может быть чего и найду.
Успешно авторизуюсь, тыкаю по всяким разделам и обнаруживаю что не отображаются различные картинки, например, логотипы ценных бумаг. Так как делать мне было особо нечего, решил посмотреть в чем же проблема. Открываю dev tools, и проблема в общем-то была локализована быстро — картинки тянулись с другого домена, на котором установлен тот самый сертификат, и поэтому ничего не грузится. В общем скукота полнейшая. Но, случайно наведя курсор на инициатор запроса, я вижу следующее:

Дядя, ты о чем вообще?

Поясню для тех кто не понял: хром автоматически подтянул сорсмапы для минифицированных скриптов и отобразил исходные имена методов в бэктрейсе. А в сорсмапах хранятся исходные исходники (такой уж каламбур), т.е. в них включены в том числе и комментарии, которые оставляют разработчики, а в комментариях могут быть (и будут) ссылки на различные внутренние ресурсы, такие как баг-трекеры, вики и т.п.

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

Ещё чуть-чуть потыкав всякое, я обнаруживаю ещё более прекрасную вещь — автоиндекс директории с ресурсами.

Имея такие вводные данные, можно воспользоваться обычным wget для получения всего содержимого:

wget -r -l2 --no-parent -e robots=off https://XXX/yyy/static/

После этого можно пройтись с помощью find по всем *.map файлам, и распаковать их любым удобным способом. Лично я воспользовался unwebpack-sourcemap (доступен в pip):

find XXX -type f -name '*.map' -exec unwebpack-sourcemap --local {} extracted \;

Ну а что делать с исходниками дальше... Тут все зависит лишь от фантазии.

Неустранение проблемы

Я считаю себя этичным человеком, у меня нет никакого желания нажиться на подобной информации, т.е. продать кому-то это я даже и не думал. Но т.к. оставлять это просто так нельзя, я решил сообщить о проблеме. Да, не без надежды на то, что мне заплатят за найденную проблему и за подробное описание репорта. И да, я читал эту статью, я понимаю что лучше закатать губу и не ждать от банков чего-то хорошего.

09.11.2024

Сначала я попытался найти информацию о bug-bounty этого банка, но, к сожалению, вероятно, они считают себя выше этого, и ничего обнаружено не было.
Потом я попытался написать в чатике самого приложения, но там сидит глупенький бот, поэтому я сразу же прекратил попытки связи через этот канал.
Путь второй — Хабр! У этого банка имеется корпоративный аккаунт, и он даже заходит на Хабр (если активность не врёт), пишу в личку в неформальном виде, мол, «а что-то вроде bug-bounty есть?», желая тем самым привлечь внимание. Но и этот канал связи оказался не очень успешным — ответа не поступило до сих пор.

13.11.2024

Не дождавшись ответа, я попытался найти контакты на официальном сайте, но и там ничего подходящего не было. Воспользовался формой обратной связи, где задал тот же вопрос про bug-bounty и попросил со мной связаться по email для того, чтобы я передал информацию об этой дыре.

28.11.2024

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

05.12.2024

О чудо, мне пришёл ответ по обращению с сайта! Можно было-бы тут порадоваться, но ответ был в классической форме «спасибо за обращение, если у вас возникнут сложности, обращайтесь в службу поддержки *email-адрес*».

Ну что же, мать вашу, с вами не так... Пишу уже на тот самый адрес службы поддержки все подробности, как получить сорсы и что с ними можно сделать (и про bug-bounty не забываю).

06.12.2024

Приходит ответ от службы поддержки, где сказано, что информацией о bug-bounty они не обладают, а про сорсы передали информацию команде и они будут разбираться.

09.12.2024

Служба поддержки присылает ещё одно письмо:

Продолжаем работать над Вашим вопросом. По итогам работы предоставим ответ на Вашу электронную почту.

23.01.2025

Служба поддержки вновь напоминает о себе письмом:

Спасибо, что остаетесь неравнодушным и предоставляете обратную связь по работе нашего сервиса. Фактура полученная от Вас передана для анализа ответственным и устранения в случае необходимости.

В это время я проверяю директорию с ресурсами, смотрю что дата изменилась, и понимаю, что они выкатили новый релиз. Обновляю у себя ресурсы, и уже смотрю диффы. Для этого, кстати говоря, отлично подходит meld. Решил им ответить, что я огорчён тем, как медленно работают т.н. айтишники, что проблему которая чинится максимум за пять минут исправляют уже 2 месяца. Ну и прикладываю заодно дифф одного из файликов, в надежде на то, что может быть это их как-то ускорит.

24.01.2025

Служба поддержки ответила кратко:

Передал данные полученные от Вас для анализа. Ожидайте обратную связь.

05.03.2025

Вы находитесь здесь

Ждать мне надоело, 3 месяца прошло, т.н. обратной связи так и не поступило. А значит этот материал опубликован с чистой совестью на радость хабравчан.

Что же делать? Как же быть?

С одной стороны может показаться что проблема и выеденного яйца не стоит, а с другой стороны имея исходники ничего не помешает злоумышленнику создать функционально рабочую копию приложения, разместить его в том же Play Market или AppStore под видом официального, но уже со своими ништяками.
Да, потребуется какое-то время на то, чтобы из полученных сорсов собрать рабочую версию, но т.к. это React, я не думаю, что с этим могут возникнуть какие-то непреодолимые сложности. И да, я могу, конечно, ошибаться, но я почему-то уверен в том, что для web/iOS/Android используется единая кодовая база (вывод об этом можно сделать хотя бы по наличию методов вроде isWeb, isIos...).

Устранить же проблему можно и правда не более чем за 5 минут, достаточно просто выполнить

find /path/to/deploy/root -type f -name '*.map' -delete

или добавить в nginx отдельное правило вида

location ~* ^.+\.map$ {
    return 403;
}

А вообще, всё это настраивается на этапе сборки проекта. Например, отключить плагин для генерации сорсмапов, или указать sourceMap: false, всё зависит от используемой системы сборки.

И конечно же, при настройке nginx нужно указать autoindex off;. Но так как значение этой директивы по умолчанию и так off, значит кто-то включил её злонамеренно. Это конечно не спасёт от ручного скачивания всех нужных ресурсов, но усложнит автоматизацию всего процесса получения исходников.

P.S.

Что я этим хотел сказать-то? Да в общем-то ничего. Так, пожаловаться на то, что айтишники одного из системообразующих банков плевать хотели на такие мелочи, как доступные исходники своего приложения. На то, что проблему, которая устраняется за 5 минут они устраняют несколько месяцев. На то, какая медленная бюрократическая машина, пока всё не пройдёт через десяток человек ничего не будет сделано. А потом мы ещё удивляемся, почему же у всех всё утекает...

Ну и конечно же на то, что нет никакого bug-bounty, и я фактически бесплатно выполнил работу, которую должны выполнять их айтишники, девопсы, админы, безопасники или кто-либо ещё. В общем, пожаловаться на вселенскую несправедливость :)

Название банка я сознательно не пишу, ведь проблема не устранена и по сей день. Вы можете попытаться сами предположить в комментариях.

И да, телеграма тоже не будет.

Only registered users can participate in poll. Log in, please.
А вы деплоите сорсмапы в продакшен?
33.33% Конечно, а как же ещё дебажить?43
31.01% Ни в коем случае!40
35.66% Пойду-ка проверю на всякий случай…46
129 users voted. 70 users abstained.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 35: ↑28 and ↓7+26
Comments57

Articles