Комментарии 14
Для начала хотелось бы поблагодарить вас за хорошую статью о безопасности приложений, это приятно читать.
Возник следующий вопрос: вы упомянули хранение данных на SD-карте:
«Вторые связаны с проблемой хранения данных: это когда ваши данные хранятся где-то в открытом виде, могут даже где-то на SD-карте храниться, либо они не зашифровываются, в общем, когда к ним есть доступ извне.» Некоторое время назад я писал в Yandex Bug Bounty о подобной проблеме в одном из приложений, но получил ответ, что это больше проблема Android, чем приложения, поэтому это не является уязвимостью. Можно узнать ваше мнение об этом?
Возник следующий вопрос: вы упомянули хранение данных на SD-карте:
«Вторые связаны с проблемой хранения данных: это когда ваши данные хранятся где-то в открытом виде, могут даже где-то на SD-карте храниться, либо они не зашифровываются, в общем, когда к ним есть доступ извне.» Некоторое время назад я писал в Yandex Bug Bounty о подобной проблеме в одном из приложений, но получил ответ, что это больше проблема Android, чем приложения, поэтому это не является уязвимостью. Можно узнать ваше мнение об этом?
+1
Здравствуйте
Здесь имелось в виду что при определенных манипуляциях приложение может сохранить на «sd» карту свои внутренние файлы из /data/data/<app_package>/*
Стоит дополнить, что если ваше приложение поддерживает < Android 6.0, то лучше вообще не принимать со сторонних приложений файлы путь которых начинается с "/data/data/" (потому что там может передаваться hard link, который уже не так просто проверить (но можно) какой это реально файл)
С Android 6.0 сторонние приложения не имеют возможности создавать hard link, поэтому тут достаточно проверять путь file.getCanonicalPath()
Я надеюсь что в ближайшее время (месяц-полтора) мы с коллегой подготовим более обширное исследование по этой теме
Здесь имелось в виду что при определенных манипуляциях приложение может сохранить на «sd» карту свои внутренние файлы из /data/data/<app_package>/*
Стоит дополнить, что если ваше приложение поддерживает < Android 6.0, то лучше вообще не принимать со сторонних приложений файлы путь которых начинается с "/data/data/" (потому что там может передаваться hard link, который уже не так просто проверить (но можно) какой это реально файл)
С Android 6.0 сторонние приложения не имеют возможности создавать hard link, поэтому тут достаточно проверять путь file.getCanonicalPath()
Я надеюсь что в ближайшее время (месяц-полтора) мы с коллегой подготовим более обширное исследование по этой теме
+1
Добрый день.
Большое спасибо за развернутый ответ. Можно ли еще один вопрос: как вы относитесь к хранению данных пользователя в External Storage? Насколько это опасно, учитывая возможный доступ со стороны других приложений?
Большое спасибо за развернутый ответ. Можно ли еще один вопрос: как вы относитесь к хранению данных пользователя в External Storage? Насколько это опасно, учитывая возможный доступ со стороны других приложений?
0
На мой взгляд это не очень хорошая практика когда данные хранятся в открытом виде, например так делают многие приложения Telegram, Whatsapp, Yahoo, Viber и тд.
Поэтому надо быть осторожным передавая что-то важное во вложениях)
Поэтому надо быть осторожным передавая что-то важное во вложениях)
+1
С позицией согласен, а вот с выводом — не очень. Не так давно решил попробовать приложение Яндекс.Диска для Android, Скачал, запустил, все удобно. А потом заметил, что оно пишет все файлы на SD карту. Получается, что на Диске нельзя хранить ничего важного?)
+1
Прошу прощения, что поднимаю вопрос, но не могли бы вы ответить на мой комментарий выше?
0
По-моему Яндекс.Диск не скачивает все директории на девайс, он скачивает только по запросу. Те если на телефоне есть какие-то сомнительные приложения, которым есть повод не доверять в их порядочности, я бы просто не скачивал важную информацию с Диска.
Поэтому хранить важную информацию можно:)
Поэтому хранить важную информацию можно:)
0
Насколько я понимаю, тут вопрос примерно такой:
С точки зрения простого пользователя, я не понимаю, почему при использовании сайта на девайсе все данные остаются недоступными для других приложений, а если я открыл приложение, то открытые там изображения доступны любым приложениям, хотя в явном виде меня об этом не предупреждали.
Касательно непорядочных приложений: если правильно разрабатывать приложения с учетом рекомендации Google и OWASP, то данные будут в безопасности. На бытовом уровне это выглядит так, вы купили сейф, в котором что-то храните, но из соседнего ящика можно достать вещи из сейфа сквозь стенку.
С точки зрения простого пользователя, я не понимаю, почему при использовании сайта на девайсе все данные остаются недоступными для других приложений, а если я открыл приложение, то открытые там изображения доступны любым приложениям, хотя в явном виде меня об этом не предупреждали.
Касательно непорядочных приложений: если правильно разрабатывать приложения с учетом рекомендации Google и OWASP, то данные будут в безопасности. На бытовом уровне это выглядит так, вы купили сейф, в котором что-то храните, но из соседнего ящика можно достать вещи из сейфа сквозь стенку.
0
Вот так читаешь статью и вроде бы сначала думаешь — да, круто. Безопасность. А потом вспоминаешь, что все это почему-то не работает в самом Яндексе, в тех самых мобильных приложениях. Пример — бесплатные +50Gb в диске. Типа:
merged = headers['X-Install-DeviceId']
merged = merged + headers['X-Install-SerialNumber']
merged = merged + headers['X-Install-Manufacturer']
merged = merged + headers['X-Install-Product']
headers['X-Install-Yms'] = hashlib.sha256(merged).hexdigest()
Потом читаешь статью от Яндекса по алгоритмам, обработке бигдата, туда-сюда. И вроде все красиво, а потом смотришь в Яндекс.Карты — и видишь на месте гор море. Такие вот алгоритмы.
Уныние.
merged = headers['X-Install-DeviceId']
merged = merged + headers['X-Install-SerialNumber']
merged = merged + headers['X-Install-Manufacturer']
merged = merged + headers['X-Install-Product']
headers['X-Install-Yms'] = hashlib.sha256(merged).hexdigest()
Потом читаешь статью от Яндекса по алгоритмам, обработке бигдата, туда-сюда. И вроде все красиво, а потом смотришь в Яндекс.Карты — и видишь на месте гор море. Такие вот алгоритмы.
Уныние.
+4
Это сильно отличается от модели доверия, на которой построены десктопы. Можно её критиковать, но лично мне очень некомфортно находиться за компьютером, на котором нормой считается наличие ПО с злоумышлением. Современный десктоп, в котором приложения полагаются доверенными, куда комфортнее.
Потому что если я всерьёз начинаю считать используемое ПО потенциально-вредоносным, то это же страх и ужас, а не жизнь. Зачем такой компьютер, который «пермишеннами только» спасаем от того, чтобы мне навредить?
Потому что если я всерьёз начинаю считать используемое ПО потенциально-вредоносным, то это же страх и ужас, а не жизнь. Зачем такой компьютер, который «пермишеннами только» спасаем от того, чтобы мне навредить?
+1
А за счёт чего современный десктоп считается по-умолчанию защищенным? Немалая (может даже бОльшая) часть десктопных пользователей сидит под Windows, под админской учёткой, с отключенным контролем учетных записей и отвечает «ОК» на любой непонятный запрос прав или доступов. Под маком — аналогично, пользователи с удовольствием всё сами разрешат. Не вижу большой разницы.
0
Пользователи, отвечающие «ок» на что попало — это совсем другой класс угроз.
Windows-desktop имеет очень дурную безопасность, потому что все привыкли грузить и запускать soft-install.exe.
Появление app store (или как оно там у ms называется) должно было чуть-чуть улучшить ситуацию.
Но даже в этих дурных условиях, в целом модель доверия софту, всё-таки комфортнее. Я не изолирую свой текстовый редактор от своего фоторедактора — я доверяю им обоим. Если я их начинаю друг от друга изолировать, это это неудобно раз, и безнадёжно, два.
Windows-desktop имеет очень дурную безопасность, потому что все привыкли грузить и запускать soft-install.exe.
Появление app store (или как оно там у ms называется) должно было чуть-чуть улучшить ситуацию.
Но даже в этих дурных условиях, в целом модель доверия софту, всё-таки комфортнее. Я не изолирую свой текстовый редактор от своего фоторедактора — я доверяю им обоим. Если я их начинаю друг от друга изолировать, это это неудобно раз, и безнадёжно, два.
+1
Как-то даже расстроили. Открывал и ожидал увидеть что-то интересное — про реверс, MitM, уязвимости самой системы, а тут… Вьювер манифеста, интенты, SQL инъекции, а как вишенка на торте — опасность яваскрипта в вебвьювах, про которую даже Android Studio скажет несколько раз.
Хотя сильнее всего убило вот это
Oh really?
Хотя сильнее всего убило вот это
После того, как у вас есть jar-файлы, вы можете взять Java Decompiler и сконвертировать их в более удобный вид — в вид классов. Понятно, что их нельзя будет запустить
Oh really?
0
А в примере со Slack что мешает злоумышленнику создать свое приложение с applicationId "com.Slack"
и получать явный интент?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Безопасность Android-приложений. Лекция в Яндексе