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

Специальный корреспондент
Собака

Собака

Пресс-служба
Ветеран пробива
Private Club
Регистрация
13/10/15
Сообщения
56.734
Репутация
64.070
Реакции
282.236
RUB
0
TLDR: У системообразующего банка торчат исходники приложения, доступные всему миру, а ему плевать.

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


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

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

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

bo7loyfsgpnf74oxmwdgqvd5u4a.png

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

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

jaxqv5j4hiuyvkozq7a9b-hqig4.png

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

pqhe-fwmokpm7kg6ndc1a7yxmfs.png

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

wget -r -l2 --no-parent -e robots=off

После этого можно пройтись с помощью 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, и я фактически бесплатно выполнил работу, которую должны выполнять их айтишники, девопсы, админы, безопасники или кто-либо ещё. В общем, пожаловаться на вселенскую несправедливость :)

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







 
  • Теги
    утечка исходников
  • Назад
    Сверху Снизу