Изначально я расследовал сообщение о том, что 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 - Хакер

Комментарии (43)


  1. Irritant
    24.05.2025 08:53

    В такой статье не хватает вступительного абзаца,где в двух словах обьясняется что это и зачем.


    1. Kenya-West
      24.05.2025 08:53

      1. Сервис для воровства данных

      2. Воровать данные


    1. vanxant
      24.05.2025 08:53

      Postman это штука для выполнения веб-запросов. В первую очередь, REST запросов. Для тестировщиков это по факту инструмент №1.

      Типичный use case: бэкендеры запили новый метод REST API, он попал к тестировщикам, они пишут набор тестов в постмане. И потом этот набор регулярно - и автоматически! - гоняют для каждой новой версии бэка (он же ж развивается), чтобы выяснить - а вдруг что-то сломалось.

      Суть статьи я не очень понимаю. Если какие-то придурки лезут постманом с долгоживущими токенами на прод к реальным данным, нууу... (слабоумие_и_отвага.jpg)


      1. RulenBagdasis
        24.05.2025 08:53

        Я, конечно, солидарен с вами в том, что гонять токены в GET запросах, это какая-то странная блажь, но зачем Postman логгирует чужие запросы в принципе?


        1. santjagocorkez
          24.05.2025 08:53

          А как нынче принято мутить SSO без передачи токена в GET на каком-либо из этапов?


      1. PPRT_E
        24.05.2025 08:53

        А чем должны дергать методы сопровожденцы в проме?


  1. krolchonok
    24.05.2025 08:53

    Забавно, что никто до этого не проверил что там в логах отправляется, причем большое количество разработчиков и компаний, предоставляют готовые шаблоны (коллекции?) для готовой работы с их API.


  1. d-sh
    24.05.2025 08:53

    Если не записывать всё подряд в логи, и не (простите) читать эти логи на регулярной основе, в том числе с помощью наемных людей с улицы, то как тогда узнать что что то идет не так и исправить это? Рассчитывать на багрепорты бесполезно.


    1. krolchonok
      24.05.2025 08:53

      И поэтому надо перехватывать все запросы, в том числе и секретные переменные?


      1. poriogam
        24.05.2025 08:53

        Тут нужна пояснительная бригада. Кто такой этот постман, какие такие переменные.


        1. navferty
          24.05.2025 08:53

          Postman - инструмент для создания, редактирования и выполнения HTTP запросов.

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

          Ещё для выбранного запроса можно сразу получить сгенерированный код на одном из языков программирования (например C#). Можно настроить mock-сервер для тестирования веб-хуков (когда тестируемое приложение само отправляет запрос на стороннее API, которое нежелательно использовать при тестировании). Да и много других фичей.

          Интерфейс Postman


        1. navferty
          24.05.2025 08:53

          Переменные, о которых идёт речь в статье: это часть строки запроса. Например, var1 и var2 в этом HTTP GET запросе:

          https://example.com/items/var1/data?param2=var2

          Но надо отметить, что есть общая рекомендация не передавать в path-сегментах (как var1) или query-параметрах (как var2) никакие чувствительные данные, даже при использовании HTTPS (а в этом случае все эти данные не передаются в открытом виде). И причины такой рекомендации - именно такие, что где-то по пути строка запроса может оказаться залогированной, например в логах веб-сервера.

          Если нужно передавать чувствительные данные в запросе (например, токен авторизации), более предпочтительно их передавать в заголовках запроса, например так:

          GET http://example.com/ HTTP/1.1
          Host: decimalparser.net
          Authorization: Bearer eyJbWbfs...


      1. kenomimi
        24.05.2025 08:53

        Постман используется на тестовом/девелоперском окружениии, и там априори не должно быть секретных либо персональных данных. Вообще. А кто гоняет на проде тесты - ССЗБ - любое закрытое ПО в наше время всегда напичкано шпионскими модулями, это надо помнить.

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


      1. navferty
        24.05.2025 08:53

        Всё-таки новость кажется несколько преувеличенной. Мельком в статье упоминается, что секреты из заголовков не отправляются в логи. В логах могут встретиться только те данные, которые были отправлены в сегментах URL или в query параметрах. Но и для тех и для других есть общая рекомендация не использовать для чувствительных данных - именно потому, что высока вероятность, что они осядут в логах где-то "по дороге". И хотя при использовании https эти данные не передаются в открытом виде, они легко могут оказаться например в логах веб-сервера. Вот статья об этом https://blog.httpwatch.com/2009/02/20/how-secure-are-query-strings-over-https/

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


  1. elnights
    24.05.2025 08:53

    Opensource альтернатива Postman: https://github.com/hoppscotch/hoppscotch
    Полет нормальный.


    1. olegscherbinin
      24.05.2025 08:53

      Использовал его пару лет, много багов и несмотря на tauri тормозит очень сильно, возможно из-за macOS, возможно у меня кривые руки, опенсорс хорошо, но не стабильно


    1. DikSoft
      24.05.2025 08:53

      Opensource альтернатива

      Точно там есть полные исходники? Кто-то уже проверял их на отправку данных "налево"?


    1. astenix
      24.05.2025 08:53

      А Bruno?


    1. Tsimur_S
      24.05.2025 08:53

      Есть еще бруно, https://github.com/usebruno/bruno


      1. egribanov
        24.05.2025 08:53

        Ещё yaak.app


    1. vdudouyt
      24.05.2025 08:53

      Opensource альтернатива Postman: https://curl.se/
      Полет нормальный.


      1. bogolt
        24.05.2025 08:53

        curl это всеже швейцарский нож, а вот например https://httpie.io/ то что надо надо


    1. ti_zh_vrach
      24.05.2025 08:53

      Ещё Insomnia https://github.com/Kong/insomnia. Вагон плагинов.


    1. aasokovykh
      24.05.2025 08:53

      К сожалению не срослось с инопланетяненом - он не умеет импортировать коллекции из постмана


  1. rikert
    24.05.2025 08:53

    А кто вы, русскоговорящие и использующие постманы и другие зарубежные сервисы? И ведь серьезно обсуждают это, каждый подобный пост вызывает недоумение. Хабр ты кто такой?


    1. p07a1330
      24.05.2025 08:53

      @moderator подозреваю бота/ворованный аккаунт

      Юзер молчал почти 10 лет, потом вернулся и стал сразу набрасывать


      1. vindy
        24.05.2025 08:53

        У меня был знакомый с шизофренией, точно так же во время обострений себя вел. Этого знатно накрыло в те несколько дней в 2016, надеюсь, сейчас справится с рецидивом.


    1. RulenBagdasis
      24.05.2025 08:53

      1. Что касается зарубежных, русскоговорящий != проживающий в России.

      2. Почему использовать "зарубежные сервисы" это плохо? Я использую сервисы со всего мира и очень рад такой возможности.

      Кстати, вас не смущает, что свой комментарий вы написали на кипрском зарубежном хабре?


      1. RulenBagdasis
        24.05.2025 08:53

        Фигасе как "патриоты" с личной неприязнью в карму насовали 0_о Ребята, у вас всё хорошо?


  1. max9
    24.05.2025 08:53

    учу пользоватся curl и mitmproxy. дорого, звонить понимающим, потстрадавшим от утечки паролей


    1. un1t
      24.05.2025 08:53

      Я в основном пользуюсь тоже curl, но запросы редактировать неудобно.


      1. questpc
        24.05.2025 08:53

        Запросто пишется самодельный небольшой клиент на Javascript, так api и отлаживаю из браузера.


      1. Alpensin
        24.05.2025 08:53

        возможно не все нужные флаги юзаете, вроде --json или --data-urlencode. Ну и это же баш, что-то можно в переменные закинуть


  1. oreym
    24.05.2025 08:53

    Т.е. чел отправил в get-запросе секрет, подсунул поддельный сертификат, и кричит при этом о безопасности?


    1. TimsTims
      24.05.2025 08:53

      Что не так? А как надо было? Проблема в том, что он переменную засунул прямо в uri, или что он подсунул поддельный сертификат чтобы посмотреть что там отправляет постман, или проблема в самом постмане?

      Что предлагаете делать? Продолжать дальше пользоваться постманом, и закрывать глаза на то, что он куда-то зачем то сохраняет все возможные апишки и креды к ним? А что если там были ключи от aws инфраструктуры, а хакер взял и получил таки логи постмана? Точка отказа от ответственность слишком большая ...


  1. PetyaUmniy
    24.05.2025 08:53

    Зачем покупать ваш Сhа-rle=s Рr-0x-y? Чтобы в следующий раз обнаружить отправку личных данных в нем?
    Есть же свободный mitmproxy. Постоянно юзаю его в подобных кейсах, все устраивает.
    Чем он по вашему хуже?


  1. 9a75sd
    24.05.2025 08:53

    Заметил, что Postman вообще отказывается отправлять запросы даже в локальной сети, если нет подключения к интернету. Это когда отлаживал API HTTP-сервера на базе ESP32, и очевидно, там не было интернета. Есть ли еще подобные Postman решения, которые работают корректно без интернета и с поддержкой вебсокетов? Curl не поддерживает вебсокеты.


    1. egribanov
      24.05.2025 08:53

      Постман после верси 10.8 решил для всех принудительно синхронизировать коллекции только через облако и начали появляться альтернативы. Сейчас это Bruno, Insomnia, Yaak, Hurl


  1. AlexGorky
    24.05.2025 08:53

    Бесплатный опенсорсный Hurl рекомендую.


  1. Kotsuba
    24.05.2025 08:53

    Как правило не рекомендуется использовать конфиденциальные данные/секреты в URL, так как они могут быть залогированы прокси серверами.

    По правде говоря, не совсем понятно, что за запрос вы вызывали, на основании скриншота из Postman, предполагаю, что это GET, следовательно ваш секрет мог быть передан только в URL.

    Для корректности тестового сценария, я бы порекомендовал протестировать POST запрос с секретом в request body.


  1. maxzh83
    24.05.2025 08:53

    Перестал пользоваться Postman, но по другим причинам. Во-первых, он стал очень тяжёлым и неповоротливым. Во-вторых, для работы требует учетку. И самое главное, он перестал работать офлайн. Когда они убрали этот режим, это стало последней каплей. По работе требовалось запускать там, где интернета не было.

    Начал искать альтернативы, многие из них тупо пытаются копировать постман, в том числе и его модель работы. Для себя нашёл Bruno, который понравился и идеологией (open source, работа офлайн и без учётки) и легковесностью. По сравнению с постманом, конечно, местами сыроват. Но для моих нужд вполне хватает


  1. anonym0use
    24.05.2025 08:53

    https://insomnia.rest/ вот еще альтернатива postman'у


  1. aasokovykh
    24.05.2025 08:53

    А меня ещё называли параноиком когда я боролся за отказ от постмана :D