Comments 35
HTTP toolkit (он по непонятным мне причинам не доступен в РФ без VPN).
1 апреля Генпрокуратуре не понравилась страница How to Debug Any CORS Error, 3 апреля она внесена в реестр, ну и соответственно блокируется доступ ко всему домену, раз HTTPS.
Деньги мне в принципе не нужны
так что я попросил просто начислить мне побольше бонусов, ведь я сам пользуюсь их сервисом.
Это как, бонусы не за деньги приобретаются?
Илья, а почему в названии статьи Мы?
Везде по тексту я.
Фраза какая то крылатая была, очень похожая на заголовок статьи. Там было "мы" :)
Запомнилось из "Аквариума" Виктора Суворова: когда разговариваете с человеком один на один (вербуете), не стоит говорить "мы", т.к. это звучит зловеще. Кто эти неизвестные "мы"? Человек подсознательно не доверяет тому, кого не знает и не видит перед собой. Надо всякий раз говорить "я". Например не "мы вам предлагаем работать на нас", а "я вам предлагаю работать на меня".
Поэтому давно подмечаю, что какие-нибудь фрилансеры или недокомпании на своих сайтах всегда говорят "мы", хотя очевидно, что за этим стоит всего лишь один человек. Видимо хотят придать себе солидности, выдать себя за корпорацию.
Ну, допустим, на сервере проверяется валидность мапа модель-тариф, переданного с клиента, и этот фордж теперь заткнули. Но осталась штука гораздо более полезная и крутая - подфорджить lat/long, чтобы можно было удаленно запустить от своего аккаунта поездку на самокате на другом конце города - например, организовав для своего ребенка поездку из школы домой. Как бороться с этим, кроме как проверять подмену сертификата и не работать под угрозой митм вообще?
Ну, проверкой сертификата тут не обойтись, ведь я могу поставить свой сертификат как root certificate и все будут ему доверять, хотя похожий сервис шеринга уже реализовал защиту от такого. Над обходом этого как раз сейчас работаю :)
По поводу lat/long - клиент постоянно отправляет запросы в которых узнает наличие самокатов рядом с определенными координатами и если вдруг, клиент зашел в приложение и запросил самокаты рядом с домом в Москве, а потом берет самокат в Ярославле, это немного подозрительно.
удаленно запустить от своего аккаунта поездку на самокате на другом конце города — например, организовав для своего ребенка поездку из школы домой. Как бороться с этимА может больше смысла добавить это фичей, чем бороться? В убере и прочих такси было очень удобно вызвать такси не к себе, а к (жене / ребенку / родителям) что бы они ими воспользовались без лишнего гимороя с (оплатой / разбирательством с сервисом) или даже в принципе без смартфона (просто с кнопочным телефоном)?
А почему "было"? Что случилось с Убером?
Предполагаю что логика в том, что после окончания аренды Вы обязаны сфотографировать самокат (то, как Вы его припарковали) для подтверждения того что он целый и что Вы припарковали его правильно. В противном случае (в случае неправильной парковки) будете платить 500 руюлей штрафа.
А как можно сфотографировать самокат, который находится в другом конце города? (Сфотографировать любой другой это не решение проблемы).
Справедливости ради (насчет штрафа) расскажу положительную историю про Whoosh: столкнулся в Сочи. Был день России в Сочи и олимпийский парк на дневное время закрыли для самокатов. Вечером открыли и самокаты можно было брать, но внутренние парковки (внутри самого парка) на карте не появились, только снаружи, но попасть туда не получалось, т.к. забор мешал (можно было пройти по надземному переходу и перетащить, но самокат тяжелый). В итоге запарковал максимально близко к парковке, программа сразу предупредила что будет штраф, написал в поддержку и через 3 минуты мне ответили чтобы я не переживал, они проверили, убедились что я прав и поставили пометку в базе что все норм и штрафа не будет.
Сфотографировать любой другой это не решение проблемыНо зато это отличное объяснение, почему делать фото самоката это по большому счету карго-культ. Там ведь даже не требуется снимать так, что бы серийник был виден. Можно раздолбать самокат в мясо, взять любой другой, сфоткать его и на этом всё — свободен и чист.
Ну тут тоже скорее всего есть хитрости:
1) GPS достаточно точный и будет видно часто что это не тот самокат.
2) Куча сенсоров в самокете, гироскопы, датчики ударов. Думаю что если что-то случится с самокатом - просто посмотрят историю ударов, падений и т.д. И выявят во время аренды это было или нет.
спуфинг координат для мобилок - это тривиальная задача, не требует никаких особых навыков)
можно было удаленно запустить от своего аккаунта поездку на самокате на другом конце города
Не ясно чем это вредит сервису? Деньги они не теряют, зачем что-то блокировать?
Как бороться с этим, кроме как проверять подмену сертификата и не работать под угрозой митм вообще
Если с этим надо было бы бороться (сервис каким-то образом терял деньги), то никакие проверки на клиенте не помогут. Клиент может делать хоть certificate pinning, но не поможет. Хакер всегда может просто создать свой клиент и посылать API запросы напрямую. Проверки должны быть на бэкенде, но никак lat/lon не проверить, только отсекать необычное поведение, вроде быстрой смены координат.
Центр торгового зала в Ашане - "Не играйте в Покемон Го в машине!". Проверить - можно, если получить от оператора координаты (вышку, к которой подключён клиент). Но будут и такие варианты, как резкие скачки, если уровня сигнала - нет.
Подмена координат может помочь в самой поездке. Есть зоны с ограничениями скорости или с запретом. Вот их и можно обойти.
Никак. Тут даже технических скиллов не надо, просто включите режим отладки андроид и введите координаты вручную, будет тоже самое
Да и смысла особого нет в этом, так как можно передать и телефон и просто авторизовать приложение на устройстве ребенка. Это лишь защита от дурака. Все равно юридически вы несете ответственность за то, что происходит с самокатом. Фактически конечно не всегда, но это другой вопрос
Но осталась штука гораздо более полезная и крутая - подфорджить lat/long
Гораздо более крутая, чем кататься со скидкой 80%? ?
фикс данной уязвимости достаточно прост
Как всегда простое правило - сервер не должен верить ничему на стороне клиента.
Параметр withInsurance у order/make с потрохами выдает о ком идет речь. :) По крайней мере не помню чтобы у остальных такая галка была. В принципе респект им за реакцию, не первый раз слышу о том что у них руководство весьма приземленное.
«Подменить сертификат просто, но Android приложения зачастую не очень хотят отправлять данные используя наш сертификат, ведь они ему не доверяют» — что-то я не понял историю с сертификатами.
Видимо речь про то, что можно сделать так, что сертификату мало быть просто доверенным, мало быть даже системным а надо быть выписанным конкретными CA (возможно — своими) или вообще будет работать только конкретный сертификат.
Правда эту проблему тоже решают — https://habr.com/ru/post/559722/ https://habr.com/ru/post/495682/#comment_21463074
Я вот тоже не уловил сути финта с сертификатами. Сервер не умеет в EMS? Пичаль, но легко фиксится. Сервер не валидирует данные, приходящие с клиента? Тогда можно было просто передавать: начало аренды - 12:20, окончание - 12:21, а самому кататься сутками напролет хоть даже и по дорогому тарифу.
Мне ответили буквально через 10 минут и дали контакт их директора, сказали связаться с ним.
Я изложил суть ему, он выразил мне благодарность
Вроде бы абсолютно адекватная реакция адекватных людей, но в наше время это почему-то все еще вызывает какой-то "шок" что-ли, что люди ответили, не начали орать, не угрожали, не пытались решить на своём уровне (чтобы директор не узнал о косяке), а сразу передали проблему на тот уровень, где её могут решить.
Закрыли одну маленькую лазейку. Лучше напишите статью "Как защититься от подмены сертификата".
Как мы кикшеринг взломали