Предыстория
Возьмём приложение «Проверка чека» и разберемся что оно делает и зачем ваще кому-то понадобилось проверять чеки с помощью приложения.
![Суть приложения «Проверка чеков» Суть приложения «Проверка чеков»](https://habrastorage.org/getpro/habr/upload_files/249/3f9/3f0/2493f93f05ca6c270d006c389691245a.png)
Я не помню как это работало раньше, но с 2016-2017 годов, благодаря 54-ФЗ «О применении ККТ» появились некие ОФД с целью «...осуществления операций по приёму, обработке, хранению и передаче фискальных данных в ФНС», а всех кого только можно обязали использовать кассовое оборудование, генерирующее те самые фискальные данные и что немаловажно, обязали эти данные посредством ОФД передавать в ФНС.
Если у вас тоже немного припекает от всех этих аббревиатур, то вот вам терминальная стадия аббревиатуринга в лице названия организации которая отвечает за приложение «Проверка чека» — ФГУП ГНИИВЦ ФНС РФ.
К этому моменту — мы еще вернёмся, кстати.
![Страница приложения «Проверка чеков» в App Store Страница приложения «Проверка чеков» в App Store](https://habrastorage.org/getpro/habr/upload_files/930/d5d/ad8/930d5dad8fc34fcc18af7728a8653e51.png)
Прикладной смысл вышеописанного очень лёгко понять на примере сервиса заказа еды.
После заказа вы получаете на почту электронный чек, это и есть те самые фискальные данные. Отправляет их в ваш адрес, однако, не сервис заказа еды, а именно ОФД, которое используется сервисом, в данном случае — Яндекс
![](https://habrastorage.org/getpro/habr/upload_files/987/d2c/5f3/987d2c5f3f53699360ac6a2f38578a74.png)
Любой подобный чек всегда содержит несколько обязательных идентификаторов в натуральном виде и в виде QR-кода, который можно отсканировать с помощью исследуемого нами приложения «Проверка чека».
В итоге, в приложении «Проверка чека», появляется электронная копия данного чека и тут я хочу обратить ваше внимание на атрибутивный состав кортежа с данными, а именно, на полный и детальный список чего и когда и за сколько денег моя персона приобрела, это — важно.
Но всё бы ничего, если бы не один недавний апдейт данного поделия, который и привёл меня в ужас. До недавних пор приложение оперировало лишь теми данными которые ты сам соизволил туда засунуть путём сканирования QR-кодов и не представляло, ни особого интереса, ни особой угрозы личной безопасности.
Всё изменилось две недели назад после обновления 2.15.0 в рамках которого был выкачен функционал «отображение чеков из сервиса Мои Чеки Онлайн».
История версий приложения «Проверка чека»
![](https://habrastorage.org/getpro/habr/upload_files/aed/f0f/107/aedf0f1076af6852460c019c4745e780.jpg)
Обновление 2.15.0
Если пройти аутентификацию в приложении «Проверка чека» указав номер телефона, который вы так же используете в популярных сервисах, например, в Яндекс.Еде, Яндекс.Такси, Самокате, Ситимобиле и других, то в разделе «Мои чеки» автомагически будут отображены все ваши чеки по всем операциям в этих сервисах за «всё время».
В моём случае, это порядка 400 чеков, каждый из которых содержит детальный набор «сколько, за что, когда и куда».
Мне сразу же стало интересно насколько хорошо подобный массив данных защищен и может ли предполагаемый злоумышленник получить несанкционированный доступ к нему.
Для исследования я поставил в разрыв между интернетом и приложением «Проверка чека» простой прокси и записывая сетевую активность приложения потыкал в кнопки.
Довольно быстро выяснилось, что эндпойнт с данными находится по адресу irkkt-mobile.nalog.ru:8888 на котором живёт простейшее приложение на NodeJS с применением фреймворка Express, а механизм аутентификации пользователя пускает тебя к данным, если ты верно указал заголовок «sessionId» значение которого представляет из себя какой-то самопальный токен генерирующийся на стороне сервера.
При этом, если нажать кнопку «Выйти» в приложении «Проверка чека», то как оказалось, инвалидации данного токена не происходит. Так же нет функционала просмотра всех своих сесссий и нет кнопки «Выйти на всех устройствах».
Таким образом даже если вы каким-то образом поняли что токен доступа был скомпрометирован, то нет никакой возможности его сбросить и тем самым гарантировать с этого момента отсутствие у предполагаемого злоумышленника доступа к вашим данным.
Крайне безответственно, но не фатально.
Sentry
В процессе просмотра «улова» на промежуточном прокси я обратил внимание, что в случае крэша приложения оно отправляет диагностические данные в Sentry располагающийся по адресу не связанному, ни с ФНС, ни с ФГУП ГНИИВЦ ФНС РФ, а на домен зарегистрированный на физическое лицо — sentry.studiotg.ru.
![Страница входа в Sentry команды Studio TG Страница входа в Sentry команды Studio TG](https://habrastorage.org/getpro/habr/upload_files/3b9/ac0/636/3b9ac06366d6b2cbd3369cbf5fdfe0f4.png)
Рядом сразу же был обнаружен gitlab.studiotg.ru.
![Страница входа в GitLab команды Studio TG Страница входа в GitLab команды Studio TG](https://habrastorage.org/getpro/habr/upload_files/e7b/cae/ba3/e7bcaeba3afdf9bcf3ad2bce026adf58.png)
Дальнейшее исследование эндпойнта привело к ссылками на публичные репозитории в этом Гитлабе находящиеся в индексе Гугла уже более года.
![](https://habrastorage.org/getpro/habr/upload_files/05b/642/713/05b642713b02b6ca33a2e105c9463451.png)
Содержимое публичных репозиториев заставило меня биться в истерике.
![Публично доступный репозиторий ansible_conf/install_geo Публично доступный репозиторий ansible_conf/install_geo](https://habrastorage.org/getpro/habr/upload_files/1c2/618/0e7/1c26180e7ee7ea1367bcc3147377f77e.png)
![Содержимое архивов из репозитория ansible_conf/install_geo Содержимое архивов из репозитория ansible_conf/install_geo](https://habrastorage.org/getpro/habr/upload_files/832/741/d71/832741d71035b3eccbe9ed15f25fcd04.png)
Пояснение к скриншоту выше: папки содержащие подстроки «lkio», «lkip», «lkul» напрямую относятся к одноименным сервисам ФНС на домене nalog.ru.
![Содержимое папки lkip-web-login, это — исходный код сервиса lkip2.nalog.ru Содержимое папки lkip-web-login, это — исходный код сервиса lkip2.nalog.ru](https://habrastorage.org/getpro/habr/upload_files/678/7d4/791/6787d479163231deeec4ceec684a77ba.png)
Для сверки, что обнаруженные исходники действительно относятся к сервисам ФНС, проведена простая проверка наличия на боевом веб-сервере файла uppod-styles.txt, который не мог там оказаться по случайному совпадению.
![uppod-styles.txt на сайте lkip2.nalog.ru uppod-styles.txt на сайте lkip2.nalog.ru](https://habrastorage.org/getpro/habr/upload_files/d16/4c6/056/d164c6056432d86dd84f17340b7add34.png)
![Содержимое файла .env судя по всему прямиком с боевых серверов Содержимое файла .env судя по всему прямиком с боевых серверов](https://habrastorage.org/getpro/habr/upload_files/748/942/48d/74894248d098ba5311e9a8614efc4a0f.png)
В итоге
Фактический разработчик мобильного приложения «Проверка чека» некая studiotg.ru.
Вероятно есть нарушение соглашений об обработке персональных данных в силу передачи диагностических сведений со стороны ФГУП ГНИИВЦ ФНС РФ в адрес третьих лиц.
Данные ребята так же причастны к разработке сервисов lkip.nalog.ru, lkul.nalog.ru и lkio.nalog.ru.
По их вине исходный код данных сервисов находится в публичном доступе уже около года.
Исходя из общей картины, предположу, что данные о ваших покупках попадающие в ОФД путём информационного обмена фискальными данными с ФНС, на текущий момент, находятся под угрозой утечки.
![Как-то так. Как-то так.](https://habrastorage.org/getpro/habr/upload_files/579/7e9/d00/5797e9d0038e64ca1981ecc16cdef8c5.jpg)
l0rda
Никогда такого не было и вот опять