Pull to refresh

Postman логирует все ваши секреты и переменные окружения

Reading time2 min
Views14K
Original author: a data scientist

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

Charles Proxy

Это расследование было бы невозможным (или, по крайней мере, не таким простым) без Charles Proxy. Его lifetime лицензия стоит 50 долларов — когда вы откажетесь от месячной корпоративной подписки на Postman за 49 долларов, после прочтения этого поста, пожалуйста, поддержите действительно этичных разработчиков, купив лицензию, хотя бы для того, чтобы самим проверить мои результаты.

Первое, что вы заметите — Postman записывает массу информации. Ещё до того, как вы как-либо взаимодействуете с приложением, сотни сетевых запросов отправляются во множество аналитических сервисов и сторонних интеграций.

На самом деле, это довольно распространенная проблема в современном программном обеспечении, которое обычно придерживается принципа «логировать всё».

Certificate pinning

Чтобы просмотреть зашифрованный трафик, который отправляется на сервера Postman, вам нужно включить SSL-проксирование и обойти проверку сертификата (certificate pinning).

Как только вы установите поддельный корневой сертификат, вы сможете увидеть расшифрованные данные, которые отправляются на сервера Postman.

Postman утечка секретов

Это было настолько легко обнаружить, что меня действительно удивило, почему никто другой не обратил на это внимания. Если я создаю переменную окружения и присваиваю ей значение "secret" — она скрыта от окружающих, но не для логов, которые отправляются Postman.

Неважно, установили ли вы переменную окружения как секретную или нет, замаскирована она на экране или нет, Postman всё равно её перхватит через строку resolvedRequestUrl (фиксирует состояние URL после подстановки секретных переменных).

В интерфейсе Postman есть всплывающее окно с громким заявлением, что переменные — это способ "защитить конфиденциальные данные". Это легко доказуемая ложь, так как мои, якобы секретные, данные отправляются в виде логов в открытом виде.

Чтобы пояснить, в чём тут проблема:

  • Если я создаю секретную строку, я не хочу, чтобы вы отправляли её на сервера вашей компании. Не понимаю, почему это требование не очевидно для команды Postman.

  • Кажется они пытались предпринять меры, чтобы специально не записывать заголовки, но  персональные или чувствительные данные всё равно могут попасть в логи Postman через URL или параметры в самом запросе.

Если вам всё же нужно пользоваться Postman

Добавьте это в ваш файл /etc/hosts, чтобы аналитические эндпоинты, которые ведут журнал ваших секретов, перестали их получать:

127.0.0.1 bifrost-https-v4.gw.postman.com

127.0.0.1 bifrost-v4-global.gw.postman.com

Замечание об этике

Почему у разработчиков программного обеспечения нет своей версии клятвы Гиппократа? Скорее всего, Postman — не единственный инструмент, где сотрудники хранят ваши нешифрованные данные в незащищённых местах.

    “Если же я соблюду эту клятву и не нарушу её, пусть мне всегда сопутствует уважение всех людей — и в жизни, и в искусстве. Но если я нарушу её или отрекусь от своих слов, пусть меня настигнет обратное.”

Ещё больше познавательного контента в Telegram-канале — Life-Hack - Хакер

Tags:
Hubs:
+42
Comments44

Articles