Разработчики vs Мерчендайзеры или “Петя, нас взломали!”
Однажды утром когда я еще спал, у меня зазвонил телефон📱 Звонил директор стартапа, в котором я работал и кричал о том, что наше приложение взломали😬
Стартап занимался контролем работы мерчендайзеров. Кто не знает, это люди, которые расставляют товары в продуктовых магазинах. Часто они работают не на сам магазин, а на какую-то компанию, которая выставляет товар. Их работа заключается в том, чтобы проехать по разным магазинам, проверить остатки товара, убедиться что он присутвует на полке, проверить сроки годности. Работа низкооплачиваемая с оочень большой текучкой. Кроме этого существует проблема что некоторые мерчи совсем не ходят в магазины, полки стоят без товара, покупатели не могут его купить, и компания теряет деньги. Люди знакомые с этой проблемой придумали стартап, решающий эту проблему - мерчендайзер должен с помощью Android/iOS приложения заполнить отчет о своей работе(анкета, фото), находясь в магазине(трекается по gps) и отправить его на сервер. За каждый отчет он получает оплату. У стартапа появились очень крупные компании-клиенты, у которых были тысячи мерчендайзеров по РФ и началось взаимодействие. Но некоторым мерчендайзерам очень не нравилось, что им теперь нужно было работать и они начали действовать…😁
🥷ROUND 1
Первое что они придумали - использовать fake gps, Android-приложение которое используя тестовое разрешение подменяет настоящий GPS и позволяет им заполнять отчет не находясь в близости от магазина. Против этого было придумано аккуратное решение - мы начали смотреть установлены ли на смартфоне подобные приложения, включена ли настройка позволяющая делать подмену GPS, если да - то помечали отчет как подозрительный и требующий дополнительную проверку.
🥷ROUND 2
Следующее действие нехороших мерчендайзеров было направлено на фотографии. В нашем приложении вызывалось стандартное внешнее приложение камеры, которое возвращало путь к фотографии и она прикреплялась к отчету. Как оказалось, существуют приложения в Google Play, которые перехватывают intent вызова камеры и позволяют вместо настоящей фото выбрать фото из галереи. Используя их, мерчендайзеры каждый день могли отправлять одни и те же фотографии, не расходуя свои силы на работу. Было принято решение перестать вызывать внешнее приложение камеры и вместо этого сделать работу с камерой, встроенной в приложение. Преодолев сложности Camera API, мы закрыли эту уязвимость.
🥷ROUND 3. Финальная битва
Ничего не предвещало беды, но когда выложили приложение со встроенной камерой, вдруг стали прилетать в отчетах непонятные фотки (прикрепил похожую в первый комментарий). Иногда они были черные, иногда красные и сложно было понять с чем это связано. Директор ругался на то, что встроенная камера плохо работает, разработчики грустили, но в какой-то момент сквозь красный фон стали быть видны отпечатки. Как оказалось, мерчендайзеры во время сьъемки прикрывали камеру пальцем(получался красный фон) или засовывали телефон в карман (черный), а на вопрос почему получилось такое фото сваливали на некорректную работу приложения.
Вместо итога, пару коротких выводов:
1) для любого сервиса / приложения важно уделять внимание вопросам безопасности и анализировать действия пользователей👨💻
2) иногда разработчик должен превратиться в детектива🕵️♀️
Расскажите были ли у вас случаи, когда пользователи пытались использовать уязвимости сервиса)
Post #35
454
- 🔥 7
- 👨💻 2
- 😱 1