2014-02-20 4 views
0

Мы провели аудит безопасности одного из наших приложений и получили нечетный товар. Он сказал, что права на файлы для некоторых файлов имеют глобальный набор разрешений на чтение. В частности:Тест на проникновение в Android - права доступа к файлам?

Концептуально я понимаю это, потому что Android - это Linux, и в результате он имеет права доступа к файлам. Я не знаю, как установить права доступа к файлу APK-файла, чтобы файл был доступен только для чтения? Эквивалент Linux будет:

chmod 500 ./lib/libcrypto.so 

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

+0

Попросите аудиторов безопасности предоставить какие-либо доказательства того, что ваше приложение ведет себя ненормально. И наоборот, если все приложения NDK имеют свои файлы .so', которые должны быть удобочитаемыми по всему миру, вероятно, есть причина для этого, и вы не должны беспокоиться. – CommonsWare

+0

@CommonsWare Спасибо. Я понимаю, что, скорее всего, родительские каталоги не читаются, но аудит должен быть удовлетворен для обеспечения контракта. Конкретная проблема заключалась в том, что «приложение-мошенник на устройстве может использовать эту уязвимость для чтения конфиденциальных данных, хранящихся в приложении». Если мы не будем менять разрешения, нам нужно оправдание, почему мы этого не делаем. –

+0

Учитывают ли они контексты selinux? Эти файлы также могут быть изолированы. – Jon

ответ

2

Как установить права доступа к файлу для файла 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, будучи читаемым в мире, не волшебным образом делает «конфиденциальные данные» приложения доступными для чтения. Это все еще контролируется разрешениями на файлы для самих данных.

Смежные вопросы