🛠 Практики DevSecOps для Android
Салют,
Во-первых у нас с тобой классная стата роста, а именно нас уже 200 подписчиков. Я очень рад этому. Спасибо тебе, что отслеживаешь материалы в канале 🙏
Во-вторых, сегодня я хочу поделиться практическим опытом работы с платформой Android и практик DevSecOps для нее.
Думаю вот это точно пригодится тебе и будут аспекты, на которые ты не обращал внимания ранее. Аналогичным образом ты увидишь некоторые аспекты, с которыми можешь быть не согласен, но все же это выжимка.
Практики для Andriod
- Следует исключать возможность хранения конфиденциальной информации во внешних хранилищах: /sdcard, /mnt/sdcard и тд, так как она может быть изменена или прочитана другим приложением, включая внешнее устройство
- При использовании класса ContentProvider должен быть реализован механизм контроля доступа
- Если обмен данными с другими приложениями не требуется, то следует объявить android:exported=”false” в файле манифеста
- export для компонента должен быть помечен как false в файле манифеста, включая ограничение доступа к нему
- Разрешение для ответа вызывающему приложению следует реализовать с использованием методов Context.checkCallingPermission() и Context.enforceCallingPermission()
- Любой URL, полученный через intent, вне доверенной зоны должен быть проверен перед его отображением в WebView
- Для предотвращения возможности перехвата или отказа в обслуживании получатели широковещательных intent должны быть ограничены, а именно:
-- вместо явных intent, следует использовать указание на конкретный компонент, используя setComponent(ComponentName или класс setClass(Context, Class)
-- ограничение трансляции одним приложением с помощью параметра Intent.setPackage() и процессом через Context.sendBroadcast(Intent)
-- после отладки атрибуту android:debuggable должно быть присвоено значение false, чтобы исключить возможность отладки приложения пользователем
-- необходимо исключить предоставление доступа к методу addJavascriptInterface в WebView из-за предполагаемого вредоносного контента
- Метод onGeolocationPermissionsShowPrompt() для геолокации должен запрашивать разрешение
- В SDK необходимо указывать разрешения, так как выходные файлы по умолчанию создаются с правами на чтение
- Необходимо исключить использование loopback при обработке конфиденциальных данных путем использования HttpsURLConnectionclass или SSLSocketclass
- Рекомендуется использовать App Security Practices из документации Android Developers
Итого: если ты будешь частично придерживаться этих методов, то ты сможешь сократить значительное количество проблем для себя и своей команды разработки, потому что такой концепт достаточно снижает уровень рисков ИБ для проекта/ продукта.
#appsec #devsecops #reco #specialty #pmcases
