Бесплатно и без СМС: как корпоративные food-карты могут стать идеальной мишенью для социальной инженерии

от автора

Благими намерениями

Во множестве организаций существует такая фича социальной поддержки и удержания сотрудников, как корпоративные предоплаченные карты питания, или «foodcard», как их еще называют. Раз в квартал бухгалтерия перечисляет на них относительно небольшие суммы, которых хватает на кофе, аспирин и барбариски.

Финансовым посредником выступает одна из расчетных некоммерческих организаций (НКО) в нашей стране. Работодателю это выгодно: схема дешевле, избавляет от проблем и снижает налогообложение, а НКО получает свой законный мелкий гешефт.

Все счастливы. Все в безопасности. Все так думают.

номер карты естественно не настоящий, он даже не отвечает требованиям EAN-13 )

номер карты естественно не настоящий, он даже не отвечает требованиям EAN-13 )

Чтобы проверить баланс карты, её владелец должен открыть сайт-лендинг на специальном поддомене, ввести номер с обратной стороны пластика, и вуаля — система выдает данные о балансе, статусе 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/