Мне интересно узнать о проблемах безопасности между System.loadLibrary и System.load в Android.Как правильно загрузить загрузочную библиотеку в Android?
static {
System.loadLibrary("mylib");
}
Опираясь на систему вызова, чтобы помочь найти вещи (через метод System.loadLibrary) может привести к системе обеспечения файл, который не был предназначен для загрузки приложением. Если злоумышленник может поместить файл в место, попадающее под поиск, тогда злоумышленник может ввести произвольный код в приложение и выполнить его.
Если указать точный путь, у вас есть возможность защитить загруженный файл через такие вещи, как права доступа к файлам и т.д.
Возникает вопрос: как мы можем указать полный путь к библиотеке НКА в таком что этот путь действителен для каждой версии Android/устройства.
Как мы можем указать полный путь для библиотеки NDK таким образом, чтобы этот путь действителен для каждой версии Android/устройства? –
Отредактировал свой ответ для более подробной информации. – mbrenon
Не совсем - я подозреваю, что System.loadLibrary() будет искать некоторые системные каталоги в дополнение к папке lib приложения. Тем не менее, любой, кто может атаковать их, может, предположительно, атаковать папку lib (или приложение запускается на сильно сломанном устройстве, у которого есть записываемые системные каталоги). Вы вряд ли найдете местоположение более безопасным, чем папка lib вашего собственного приложения, тем более что эта папка не может быть доступна для записи вашим приложением, но где-нибудь еще, что вы могли бы поставить, это должно быть. –