Как установить права доступа к файлу для файла APK, чтобы файл был доступен только для чтения?
У вас нет. Разрешения на файлы, которые являются частью APK, устанавливаются операционной системой во время установки, и вы не имеете прямого контроля над этим поведением. Кроме того, по крайней мере, на один тест, который я сделал, .so
файлы на /data
раздела не принадлежит вам (по крайней мере, на эмуляторе), и, следовательно, не может быть их разрешение биты изменены вами:
[email protected]_x86:/data # ls -al app-lib/com.commonsware.android.passwordbox-1/
-rwxr-xr-x system system 1757156 2014-03-15 13:28 libdatabase_sqlcipher.so
-rwxr-xr-x system system 3491452 2014-03-15 13:28 libsqlcipher_android.so
-rwxr-xr-x system system 526052 2014-03-15 12:28 libstlport_shared.so
Вы» добро пожаловать, чтобы сделать свой собственный анализ этого, если у вас есть корневое устройство, чтобы увидеть, ведет ли он себя иначе, чем эмулятор. Обратите внимание: я не нашел файлы .so
в том месте, где они были, возможно, из-за различий в уровне ОС для тестирования (я пробовал эмулятор 4.3 x86).
Но я предполагаю, что мне нужно сделать это в манифесте или, возможно, в файловой системе машины сборки или что-то еще?
Нет, ничего в этом нет, что имеет какое-либо отношение к битам разрешения на .so
файлах на устройстве.
Как я уже упоминал в комментарии, аудиторы безопасности должны продемонстрировать, что поведение вашего приложения как-то ненормально. Аудиторы должны быть в состоянии это сделать или признать, что ваше поведение не ненормально, кроме того, что оно использует NDK.
Жулик приложение на устройстве может использовать эту уязвимость для чтения конфиденциальных данных, хранящихся в приложении
Вообще говоря, это не так. .so
, будучи читаемым в мире, не волшебным образом делает «конфиденциальные данные» приложения доступными для чтения. Это все еще контролируется разрешениями на файлы для самих данных.
Попросите аудиторов безопасности предоставить какие-либо доказательства того, что ваше приложение ведет себя ненормально. И наоборот, если все приложения NDK имеют свои файлы .so', которые должны быть удобочитаемыми по всему миру, вероятно, есть причина для этого, и вы не должны беспокоиться. – CommonsWare
@CommonsWare Спасибо. Я понимаю, что, скорее всего, родительские каталоги не читаются, но аудит должен быть удовлетворен для обеспечения контракта. Конкретная проблема заключалась в том, что «приложение-мошенник на устройстве может использовать эту уязвимость для чтения конфиденциальных данных, хранящихся в приложении». Если мы не будем менять разрешения, нам нужно оправдание, почему мы этого не делаем. –
Учитывают ли они контексты selinux? Эти файлы также могут быть изолированы. – Jon