Благими намерениями
Во множестве организаций существует такая фича социальной поддержки и удержания сотрудников, как корпоративные предоплаченные карты питания, или «foodcard», как их еще называют. Раз в квартал бухгалтерия перечисляет на них относительно небольшие суммы, которых хватает на кофе, аспирин и барбариски.
Финансовым посредником выступает одна из расчетных некоммерческих организаций (НКО) в нашей стране. Работодателю это выгодно: схема дешевле, избавляет от проблем и снижает налогообложение, а НКО получает свой законный мелкий гешефт.
Все счастливы. Все в безопасности. Все так думают.
Чтобы проверить баланс карты, её владелец должен открыть сайт-лендинг на специальном поддомене, ввести номер с обратной стороны пластика, и вуаля — система выдает данные о балансе, статусе SMS-уведомлений.. и полную историю операций.
Проявив немного здорового (или не очень) любопытства, можно выяснить, что все эти чувствительные данные отдаются в результате одного простого запроса
GET /api/v1/foodcard/3001234567894?limit=100
Ни пароля. Ни токена. Ни даже вялого намёка на двухфакторную защиту. Бесплатно, и без смс. Просто возьми и посмотри. Как если бы банк выдавал выписку по счёту любому, кто правильно назовёт номер твоего почтового ящика.
{ "status": "OK", "data": { "phone": "+7 (999) - *** - ** -99", "balance": { "availableAmount": 41.96 }, "history": [ { "time": "2026-06-24T19:39:52.000+03:00", "amount": -659.37, "locationName": [ "KRASNOE&BELOE" ], "trnType": 774, "mcc": "5499", "currency": "RUR", "merchantId": "781000402060 ", "reversal": false, "posRechargeReceipt": null, "smsInfoReceipt": null, "credit": false, "locationCity": "Samara" } ], "smsInfoStatus": "OFF", "smsNotificationAvailable": false, "cardType": "food" }}
Для демонстрации истории я оставил только одну операцию, но, надеюсь, этого достаточно, чтобы оценить масштаб проблемы.
От удобства к криповой реальности
Если предположить, что бэкенд сервиса выделяет пул номеров формата EAN-13 под конкретную организацию, то эти номера можно обнаружить простым перебором (брутфорсом). А это означает, что данные о времени, месте и сумме покупки превращаются в готовые поведенческие паттерны.

Для «человека с улицы» это просто набор цифр. Но для инсайдера ситуация выглядит иначе. Доступ к корпоративному справочнику в кампании имеет практически каждый. Такой человек может смержить эти записи за считанные минуты, и как он этим воспользуется большой вопрос.
Я это другое дело!
Признаюсь, я оценил всю глубину проблемы не сразу. Единственная мысль, которая пришла мне в голову в момент открытия: «Публичный API? Здорово! Ведь я могу навайбкодить Android-приложение для себя и коллег, ведь проверять баланс через сайт так неудобно!». Чем я и занимался с энтузиазмом на протяжении нескольких недель, пока не потерял к нему интерес.
Эпилог
Нам часто кажется, что в эпоху тотальной прозрачности данных мы настолько незначительны, что напоминаем «неуловимого Джо». Однако главная опасность кроется в социальной инженерии. Имея на руках время, место и сумму свежих транзакций, злоумышленник получает идеальный плацдарм для сталкинга.. или фишинга. Звонок якобы из «службы безопасности» с упоминанием вчерашней покупки в конкретном магазине звучит уже не как догадка, а как неоспоримый факт. Эта пугающая осведомленность мгновенно ломает психологическую защиту, заставляя испуганную жертву поверить звонящему и добровольно слить доступ к своим финансам или корпоративным системам.
ссылка на оригинал статьи https://habr.com/ru/articles/1048394/