Skip to content

Commit 752900b

Browse files
committed
fix(security): exigir igualdad estricta de certificados en verificación OTA
La lógica any/any pasaba si el APK descargado compartía al menos un cert con el instalado — una clave rotada y comprometida habría seguido siendo válida. Se reemplaza por comparación de conjuntos completos: el set de certs del APK descargado debe ser idéntico al del app instalado. Resuelve N-3 del SECURITY_AUDIT.md.
1 parent 36e5b05 commit 752900b

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

ota/src/main/kotlin/dev/helm/ota/OtaRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ class OtaRepository {
108108
)
109109
val apkCerts = apkInfo.signingInfo?.apkContentsSigners ?: return false
110110
val installedCerts = installedInfo.signingInfo?.apkContentsSigners ?: return false
111-
apkCerts.any { apk -> installedCerts.any { it.toCharsString() == apk.toCharsString() } }
111+
apkCerts.map { it.toCharsString() }.toSet() == installedCerts.map { it.toCharsString() }.toSet()
112112
} catch (e: PackageManager.NameNotFoundException) {
113113
Log.e("OTA", "Signature check failed: ${e::class.simpleName}")
114114
false

0 commit comments

Comments
 (0)