camellol

camellol

пикабушник
пол: мужской
поставил 15770 плюсов и 5768 минусов
отредактировал 0 постов
проголосовал за 0 редактирований
19К рейтинг 9 подписчиков 4355 комментариев 20 постов 5 в "горячем"
1 награда
5 лет на Пикабу
33

Разбираемся, что записывает, а что не записывает приложение Burger King (не мое, с хабра)

Разбираемся, что записывает, а что не записывает приложение Burger King (не мое, с хабра) Фастфуд, Большой брат, Слежка, Опровержение?, Почти!, Видео, Длиннопост

Это статья является ответом на статью пользователя fennikami о том как нехороший Burger King записывает видео с экрана смартфона. В оригинальной статье утверждается, что таким образом Burger King может получить доступ к информации о вводимых картах, тем самым скомпрометирован их. Я постараюсь разобраться все ли так на самом деле.


Моему анализу подверглось Android приложение версии 2.2.2 с датой обновления 9 июля 2018г. Результаты на других платформах и в других версиях приложения могут отличаться от приведенных в этой статье.


Инициализация Appsee


Appsee это одна из систем аналитики применяемая для улучшения опыта взаимодействия пользователя с клиентским приложением, путем записи видео пользовательских действий в приложении. В общем-то в этом ничего страшного нет, в Web повсеместно распространена технология Вебвизор от Яндекса, которая имеет тоже самое назначение.


На начальном этапе своей работы Appsee запрашивает конфигурацию для конкретного приложения с сервера, именно этот запрос поймал автор в оригинальной статье, в моем же случае ответ выглядел примерно так:


{
"AutoDetectScreens": true,
"AutoHideWebComponents": true,
"ClientId": "5b47182e7b2f3f1429341f73",
"ClientLogsUploadPolicy": 2,
"ConfigHttpTimeoutInMilliseconds": 5000,
"DetectActions": true,
"DetectCrashes": true,
"DetectGestures": true,
"DetectMenus": true,
"DetectPopups": true,
"HideInput": true,
"HideSensitiveViews": true,
"MaxEventProperties": 5001,
"MaxVideoLength": 0,
"OfflineConfigurationPolicy": 1,
"RecordMetadata": true,
"RecordVideo": true,
"SensitiveMaskingPerWindow": true,
"SessionId": "5b4718ec470302299bdcc04d",
"TrackedOfflineSessions": {},
"UploadAppIcon": false,
"UploadBenchmarks": false,
"UploadTouchEvents": true,
"UploadVideoOnCrash": true,
"UseWebViewSnapshotFullscreen": false,
"VideoBitrate": 56,
"VideoFPS": 3,
"VideoHeight": 320,
"VideoWidth": 160
}

Можно заметить, что параметры HideInput, HideSensitiveViews имеют значение true, скрывая тем самым важную информацию в видео. Сразу возникает вопрос как определяется важность информации, для ответа обратимся к документации Appsee. Если коротко, то по умолчанию скрытию подвергаются все поля для ввода данных, дополнительно можно настроить скрытие для других полей или частей интерфейса.


Так же обратим внимание с каким качеством ведется запись видео, в моем случае это было видео с разрешением 320 на 160 пикселей, с частотой три кадра в секунду.


Реальные данные собираемые Appsee


Я решил проверить какие данные действительно отправляются на сервера Appsee, для этого я использовал Proxy из Burp Suite. Сначала система аналитики передает файл с действиями пользователя внутри приложения, там в том числе есть координаты нажатий пользователя, нажатия на клавиатуре не фиксируются.


Видео передаваемое на сервера Appsee, как и следовало ожидать большинство данных скрыты

Смотрим, что происходит дальше


Казалось бы, appsee безопасен и скорее всего несколько раз помогал разработчикам улучшать приложение. Но давайте все же проверим, что происходит с данными карты дальше. Для начала необходимо прочитать комментарий представителя Burger King в СМИ по поводу сложившейся ситуации:

«Мобильное приложение Burger King с удаленным заказом не собирает персональных данных своих подписчиков. Все транзакции надежно защищены одним из лучших эквайеров страны — »Яндекс.Касса". Данные о поведении пользователей в приложении не содержат информации о банковских картах и не хранятся на сервере", — сообщает компания.

Звучит достаточно убедительно, а теперь смотрим реальный трафик. Для оплаты действительно используется процессинг от Яндекса, это можно определить по запросу с адресом


https://payment.yandex.net/api/v2/payments/bankCard


Полезной нагрузкой запроса является параметр request с некоторыми данными:


Те, кто хоть раз работали с JSON Web Token сразу заметили, что это он. С помощью онлайн-декодера получим исходные данные. В общем-то ничего удивительного онлайн-процессингу передаются информация о карте, которая ему и предназначается


{
"order": {
"clientOrderId": "2a6da014-28e0-4560-a057-76160c8cc3ca",
"customerId": "",
"value": {
"amount": "1.00",
"currency": "RUB"
},
"parameters": {
"cardUUID": "7a904e18-d945-4128-8207-187d1a081b34",
"userId": 258504,
"addCard": true
}
},
"expiryYear": "2025",
"extAuthFailUri": "https://orderapp.burgerking.ru/api/v1/pay/failed",
"source": "BankCard",
"recipient": {
"shopId": "145363",
"shopArticleId": "449532"
},
"csc": "222",
"pan": "2225555255366666",
"createRecurring": true,
"extAuthSuccessUri": "https://orderapp.burgerking.ru/api/v1/pay/success",
"expiryMonth": "10"
}

Логи всему голова


Казалось бы, что может пойти не так, карта должна надежно обрабатываться на Яндекс.Касса. Если бы разработчики приложения Burger King не решили добавить немного логирования со своей стороны. И как будто по мановению волшебной палочки данные о карте отправляются как часть лога, по адресу:


https://orderapp.burgerking.ru/api/v1/log/requests


[{"created_at":1531386147,"entity":"yandex","method":"POST","request_data":"request=eyJhbGciOiJFUzI1NiIsImlzcyI6Imluc3RhbmNlSWQ6cHJHa28rRnNnUlhvZnZwWVBiUDRSeVp0bWs1TkxPTElKRGpEY1FmMVlzSkFPVjNLUGtGRkJJY0QwRFRzL0t5WSIsImlhdCI6IjE1MzEzODYxNDcwMDAifQ.eyJvcmRlciI6eyJjbGllbnRPcmRlcklkIjoiMmE2ZGEwMTQtMjhlMC00NTYwLWEwNTctNzYxNjBj\nOGNjM2NhIiwiY3VzdG9tZXJJZCI6IiIsInZhbHVlIjp7ImFtb3VudCI6IjEuMDAiLCJjdXJyZW5j\neSI6IlJVQiJ9LCJwYXJhbWV0ZXJzIjp7ImNhcmRVVUlEIjoiN2E5MDRlMTgtZDk0NS00MTI4LTgy\nMDctMTg3ZDFhMDgxYjM0IiwidXNlcklkIjoyNTg1MDQsImFkZENhcmQiOnRydWV9fSwiZXhwaXJ5\nWWVhciI6IjIwMjUiLCJleHRBdXRoRmFpbFVyaSI6Imh0dHBzOi8vb3JkZXJhcHAuYnVyZ2Vya2lu\nZy5ydS9hcGkvdjEvcGF5L2ZhaWxlZCIsInNvdXJjZSI6IkJhbmtDYXJkIiwicmVjaXBpZW50Ijp7\nInNob3BJZCI6IjE0NTM2MyIsInNob3BBcnRpY2xlSWQiOiI0NDk1MzIifSwiY3JlYXRlUmVjdXJy\naW5nIjp0cnVlLCJleHRBdXRoU3VjY2Vzc1VyaSI6Imh0dHBzOi8vb3JkZXJhcHAuYnVyZ2Vya2lu\nZy5ydS9hcGkvdjEvcGF5L3N1Y2Nlc3MiLCJleHBpcnlNb250aCI6IjEwIiwicGFuIjoiKioqKiAq\nKioqICoqKiogNjY2NiJ9\n.s0H0pnOyCJTm9NJjyj0Ixg15IlRzYbpW7HboSwwAUDiy4KCkeIQul14lL8P6ocPNTI_Y3acG4x_vSo8C0T1qtQ","request_headers":"Content-Type: application/x-www-form-urlencoded\nContent-Length: 974\nHost: payment.yandex.net\nConnection: Keep-Alive\nAccept-Encoding: gzip\nUser-Agent: okhttp/3.10.0\n","response_data":"{\"status\":\"Refused\",\"cardAuthorizeResult\":{\"responseCode\":\"BL07\",\"rrn\":\"\",\"authId\":\"\"},\"error\":\"InstrumentNotAllowed\",\"parameterName\":\"country\",\"errorDescription\":\"Card country is forbidden for this merchant\"}","response_error_num":403,"response_error":"{\"status\":\"Refused\",\"cardAuthorizeResult\":{\"responseCode\":\"BL07\",\"rrn\":\"\",\"authId\":\"\"},\"error\":\"InstrumentNotAllowed\",\"parameterName\":\"country\",\"errorDescription\":\"Card country is forbidden for this merchant\"}","response_headers":"403 Content-Type: application/json;charset=UTF-8\nDate: Thu, 12 Jul 2018 09:02:28 GMT\nConnection: close\nContent-Length: 209\n","url":"https://payment.yandex.net/api/v2/payments/bankCard"}]

Лог отправляется как при успешной, так и при неудачной попытке вызвать процессинг карты. Это явный прокол разработчиков, теперь, сложно поверить, что данные карт не сохраняются. Или они не сохраняют логи, тогда зачем их отправляют? :)


Выводы


Аналитика это нормально, конечно, хотелось бы более «яркого» предупреждения. Без аналитики разработка крупных и сложных приложений невозможна.

Данные о картах все же собирают, скорее всего, не умышленно.



https://habr.com/post/417015/

Показать полностью 1
-12

Помогите найти гифку

покадрово:

ночь, тьма

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

нейросеть гифку не нашла (видимо запрос корявый).

комментарии для минусов внутри

Тест. Это фото сделано на дорогой смартфон или нет?

Сколько бы ни говорили, что смартфон нужен для работы, сложных вычислений, доступа к библиотеке всей человеческой мысли, это все отговорки. Мы-то знаем, что многие покупают его для одного — делать фоточки в инстаграм. И тут нет ничего зазорного. Мы редко помним, сколько ядер и мегагерц в процессоре телефона. Главное — насколько качественная камера.

Отличная работа, все прочитано!