Поздравляю, вы второй человек Ван дер Вуд, который сегодня взломал сейф.
Итак, мистер Оушен, Вы пополнили длинные ряды тех, приложивший титанические усилия, для достижения цели и, в итоге, стать лишь вторым.
Вы не знаете имён этих людей, потому что они покрыты забвением.
Вам знакомо слово «забвение»? Это значит, что о тебе Они забывают все навсегда».
Мистер Найт Фокс (фильм «12 друзей Оушена»)
Привет, читатель Хабра!
Представьте, что вы портной и сшили человеку костюм на заказ.
Человек рассказал вам, как он хочет выглядеть в этом костюме, куда в нем ходить и примерно сколько он готов за него заплатить.
Вы его внимательно выслушали, сняли все мерки и с любовью сшили этот прекрасный костюм мечты, используя все современные модные тенденции.
Я выполнил все пожелания моего дорогого клиента.
И вот настал звездный час: костюм готов, мужчина надел его и радуется, глядя на себя в зеркало.
Вечером он позвонил и сказал, что жене и гостям на юбилее он тоже понравился.
Но один из гостей сказал, что у этого костюма есть недостатки: он не желтый, в нем нельзя тушить пожары, этот костюм может украсть кто угодно, и (и то и другое!) - у него нет капюшона и нельзя поднести молоток или увидел в кармане.
Но извините, вы говорите человеку, какого цвета желтый? Какой огонь и капюшон? Это костюм для официальных мероприятий.
Мужчина говорит, что сам удивлен и озадачен.
Ему нравится костюм, и он прекрасно сшит. А вы советуете ему забыть об этом госте и больше его не приглашать, чтобы избежать в дальнейшем подобной ерунды.
Вы оба смеетесь, желаете друг другу приятного вечера и прощаетесь.
Хозяин Мнения забыт. Вот мы и оказались на месте этого портного.
Мы создали индивидуальное мобильное приложение для компании-клиента.
Мы обсуждали каждый шаг с учетом потребностей пользователей (пользователей именно этого приложения, а не ЛЮБОГО мобильного приложения вообще), и согласовывали каждый элемент. Все довольны, включая пользователей, но тут появился некий Гость со своим МНЕНИЕМ.
И хотелось бы куда-нибудь засунуть это его МНЕНИЕ, но оно настолько корявое и угловатое, что вряд ли куда-то поместится.
Судите сами
Мы все (почти все) пользуемся смартфонами и мобильными приложениями.И, конечно же, все мы (некоторые из нас) задумываемся о безопасности своих личных данных, которые мы храним на своих телефонах.
Но, так или иначе, большинство полагаются в этом на разработчиков приложений.
Действительно, задача безопасного хранения и передачи данных — одна из важнейших задач, с которыми сталкиваются разработчики.
Неудивительно, что компании-заказчики стараются перестраховаться и иногда передают разработанное приложение на рассмотрение третьей компании (желательно известной).
Этот инцидент произошел и с нами, и заявка нашей компании подверглась так называемой «проверке».
В результате получилась своеобразная презентация, описывающая, как все было плохо.
Ниже мы приводим доводы инспекторов, наши комментарии и выводы.
Наслаждайтесь
Безопасность соединения
Аргумент Соединение с сервером осуществляется по протоколу https и шифрованию трафика TLS, что является стандартом де-факто для современных приложений.Однако реализация устройства не отвечает всем требованиям для правильного использования https. В частности, приложение устанавливает соединение после получения любого сертификата TLS. Эта уязвимость позволяет полностью перехватить конфиденциальные данные приложения: • Вы можете прочитать все передаваемые данные в открытом виде или изменить их.
• PAN-номера кредитных карт, коды CVC/CVV и персональные данные пользователей подвергаются утечке.
• Подмена форм оплаты, перехват данных.
Контраргумент Коллеги, ведь это не какой-нибудь TLS-сертификат, а любой, доверенный на уровне операционной системы.
Конечно, пользователь может «случайно» добавить сертификат злоумышленника, получившего контроль над каналом связи.
Эта «уязвимость» присуща в принципе всем сайтам.
Однако жизнь не останавливается, и люди регистрируются и совершают покупки на сайтах.
Здесь многое зависит от осторожности самого пользователя.
В случае приложения вы можете повысить безопасность, встроив в приложение конкретный сертификат, используемый сервером (закрепление SSL).
Но это требует согласования с заказчиком и не позволяет изменить сертификат (по крайней мере, соответствующий ключ) на сервере без обновления приложения.
Заключение Аргументация в целом не совсем точна.
Большинство приложений, а также браузеров работают на одинаковом уровне безопасности соединения.
Написанное таким образом, оно может сильно напугать клиента, что, очевидно, и было целью.
Данные Приложения
Аргумент Данные клиента хранятся на устройстве в открытом виде.Ни средства защиты системы (Keychain, iOS Data Protection), ни шифрование этих данных не используются.
Эта уязвимость позволяет: На любом устройстве (без джейлбрейка и других модификаций) при подключении к компьютеру получите пользовательские данные за минуту.
Это можно сделать, например, с помощью файлового менеджера iFunBox. Контраргумент Это утверждение вводит в заблуждение: похоже, что коллеги тестировали приложение на разблокированном телефоне.
Дело в том, что для защиты данных используется iOS Data Protection (флаг NSFileProtectionComplete — и это мы перепроверили).
Это означает, что когда устройство с настроенным PIN-кодом или Touch ID заблокировано, файл шифруется и может быть расшифрован только после разблокировки.
Если устройство не заблокировано, то говорить о защите данных от злоумышленника, имеющего физический доступ к устройству, бессмысленно: он может просто запустить приложение и все увидеть.
Мы рассмотрели вариант повышения безопасности с помощью ПИН-кода.
Однако использовать его в приложении для защиты данных — очень спорная идея.
Если вы сделаете его необязательным, пользователь может не установить его, как и не установить его на все устройство.
Если вы сделаете это обязательным, пользователям придется вводить два PIN-кода: один на телефоне и один в приложении.
Кроме того, без ПИН-кода на устройстве такие вещи, как почта, браузер (с кешем и сохраненными паролями), звонки и сообщения остаются незащищенными.
Имея к ним доступ, злоумышленник может не только нанести существенный ущерб, но и, скорее всего, получить доступ к учетной записи пользователя на сервере (если она существует и, например, имеет функцию «забыл пароль»).
И вряд ли приложение будет хранить данные более критичные, чем перечисленные.
Заключение: Аргумент ошибочен.
Мы считаем, что произошла ошибка со стороны проверяющего, либо проверяющий намеренно ожидал, что заказчик допустит эту ошибку, если попытается проверить ее самостоятельно.
На заблокированном телефоне нельзя прочитать данные, но с устройством в руках вы можете все делать в открытом приложении.
Угроза побега из тюрьмы
Аргумент Если у вас установлен джейлбрейк, есть возможность удаленно скопировать данные приложения вместе с базой данных и другими файлами.Контраргумент Защитить или гарантировать что-либо «при наличии установленного джейлбрейка» — это совсем другая история.
В общем, мы рекомендуем никому ничего не гарантировать «с установленным джейлбрейком».
Например, это происходит: github.com/iSECPartners/ios-ssl-kill-switch .
Как защитить пользователя, установившего это? Можно ли проверить установленный джейлбрейк? Во-первых, любую проверку на побег из тюрьмы можно обойти.
Во-вторых, вряд ли пользователь не знает, что у него установлен джейлбрейк; и здесь стоит задуматься о том, кого мы защищаем: пользователя от атак или приложение от пользователя.
В-третьих, наличие некоторых проверок может привести к проблемам при прохождении проверки в магазине приложений, либо при запуске приложения, ведь многие проверки заключаются в том, что приложение пытается сделать что-то, что приложениям на не взломанных устройствах делать запрещено.
.
Заключение: Аргумент ошибочен.
Мы не будем защищать приложение и пользовательские данные от самого пользователя.
Скриншоты системы
Аргумент Скриншоты системы не замаскированы и могут содержать личную платежную информацию клиентов.Скриншоты системы хранятся в памяти устройства и легко доступны при подключении к компьютеру.
Контраргумент Ну опять же, скорее было проверять разблокированный телефон.
«Защита данных iOS» также используется для снимков экрана системы, и они недоступны на заблокированном телефоне.
А если телефон разблокирован и к нему есть доступ, то посмотреть скриншоты никому не составит труда.
Заключение Аргумент надуманный и призван посеять панику, ведь скриншоты защищены на системном уровне.
Отладчик
Аргумент При запуске приложения оно не проверяет наличие отладчика, что позволяет восстановить алгоритмы работы приложения и модифицировать их.Контраргумент Восстановить алгоритмы работы - непонятно, какая цель этого действия и зачем об этом писать? Никаких секретных алгоритмов у нас нет, а модифицировать приложение можно только при наличии джейлбрейка, и мы об этом уже писали — это может только навредить самому пользователю.
Заключение Спор бессмысленен.
Непонятно, для чего оно представлено и понимает ли автор так называемого «изложения» смысл того, о чем пишет.
РЕЗУЛЬТАТ:
Как видим, положения по безопасности, поднятые в экспресс-анализе, верны, однако их интерпретация и изложение вызывают некоторые вопросы.
Из всех перечисленных аргументов повысить безопасность соединения имеет смысл только с помощью закрепления сертификата.
В свое время мы предлагали это сделать заказчику, но не продвинулись в решении этого вопроса на стороне сервера.
Возможно, этот анализ поможет нам в диалоге с заказчиком в качестве дополнительного аргумента.
В общем, товарищи создали презентацию в красном цвете с громкими словами и, как вы уже видели, пустыми высказываниями и навели панику на компанию-заказчика.
Был ли этот анализ объективным и какова его цель?
Правильно ли потрачены время и деньги нашего клиента?
С профессиональной точки зрения, насколько этично приводить заведомо неверные аргументы против чужого продукта?
Как говорится, кто проверит того, кто проверял?
Мы всегда рады конструктивной критике наших продуктов, но здесь уровень аргументации и адекватность подхода компрометируют саму идею перекрестного анализа.
Всем хорошего дня и удачи в разработке приложений.
безопасных приложений.
Теги: #анализ кода; недобросовестная конкуренция #Разработка мобильных приложений #Тестирование мобильных приложений
-
Сэр Маркдаун. Лекция Яндекса
19 Oct, 24 -
Как Должен Работать Хештег #Followfriday
19 Oct, 24 -
Почему Грейдл?
19 Oct, 24