🤖Новая защита от Intent Redirect в Android 16
Начиная с Android 16, система получила усиленную защиту от атак с редиректом Intent – механизма, с помощью которого злоумышленники могли подменять содержимое Intent для запуска приватных компонентов. Благодаря обновлению:
🔒 Защита по умолчанию:
Система автоматически проверяет входящие Intent, снижая риск выполнения недоверенных операций.
🛠 Минимальные изменения для разработчиков:
Большинство приложений, использующих стандартный механизм Intent, продолжат работать без проблем, однако рекомендуется протестировать проекты в новых условиях.
💡 Повышенная безопасность:
Новые меры помогают предотвратить несанкционированный доступ к данным и выполнение привилегированных действий.
#android#android16#безопасность
🤖 Шаринг ключей из Android Keystore с другими приложениями
В Android 16 KeyStoreManager получил возможность поделиться ключами с другими приложениями на устройстве пользователя
fun generateAndShareKey(targetUid: Int) {
// Генерация нового ключа в Android Keystore
val keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore")
val keyGenSpec = KeyGenParameterSpec.Builder(
KEY_ALIAS,
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.build()
keyGenerator.init(keyGenSpec)
val secretKey: SecretKey = keyGenerator.generateKey()
// Предоставление доступа к ключу приложению с заданным UID
val keyStoreManager = KeyStoreManager.getInstance()
val granted = keyStoreManager.grant(KEY_ALIAS, targetUid)
if (granted) {
Log.d(TAG, "Доступ предоставлен UID: $targetUid")
} else {
Log.e(TAG, "Не удалось предоставить доступ UID: $targetUid")
}
}
Пример отзыва доступа к ключу
fun revokeKeyAccess(targetUid: Int) {
// Отзыв доступа к ключу для приложения с заданным UID
val keyStoreManager = KeyStoreManager.getInstance()
val revoked = keyStoreManager.revoke(KEY_ALIAS, targetUid)
if (revoked) {
Log.d(TAG, "Доступ отозван для UID: $targetUid")
} else {
Log.e(TAG, "Не удалось отозвать доступ для UID: $targetUid")
}
}
#android#android16#безопасность