CVE-2025-4090
Overview
Background
- Library base path
- Derived by taking
libmozglue.so’s full path up to the last/; this reveals the app’s native-library install directory on the device. - Android Logcat log levels
Log.i(INFO) is retained and broadly readable from the system log;Log.d(DEBUG) is intended for development and is typically stripped/not emitted in release builds, so DEBUG output is far less exposed.- CWE-532 (information exposure through log files)
- Sensitive values written to logs can be read by other apps or tooling that can access Logcat.
Root Cause Analysis
GeckoLoader computed the native-library base directory and logged it at INFO level: Log.i(LOGTAG, "Library base=" + base);. On Android, INFO-level messages are emitted in shipping builds and can be collected from Logcat, so the device-specific path to Firefox for Android’s native libraries was disclosed to any party able to read the system log. That location can be security-sensitive (it narrows ASLR/layout reconnaissance and reveals install details). The fix simply lowers the log level: Log.i(...) becomes Log.d(...), so the library base path is only produced at DEBUG level and is not exposed in normal release logging.
The change is a one-line log-level downgrade; it does not alter control flow or memory handling. The advisory classes it LogicError/CWE-532, and the diff substantiates exactly that — a sensitive value was logged at too high a verbosity level, and the fix reduces its exposure.
Attack Path
- Attacker Has a means to read Logcat on the victim’s Android device (e.g. a co-installed app with log-reading access on older Android, ADB access, or on-device tooling).
- Victim
Runs Firefox for Android, which calls
GeckoLoaderduring startup. - Leak
Log.i(LOGTAG, "Library base=" + base)writes the native-library base directory to the INFO log. - Collection The attacker reads the log entry and learns the sensitive library path. (primitive: information disclosure of a local filesystem/install location)
Impact Assessment
Files Changed
mobile/android/geckoview/src/main/java/org/mozilla/gecko/mozglue/GeckoLoader.java
Audit Directions
- Other INFO/WARN logs of paths or identifiersGrep GeckoView/Android glue for
Log.i/Log.wstatements that include filesystem paths, URLs, tokens, or user data, and demote or remove them. - Native-library and profile path loggingReview the broader
GeckoLoader/startup code for other places install or profile locations are emitted.
Patch
diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/mozglue/GeckoLoader.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/mozglue/GeckoLoader.java
index e2cbe9eccb1..03ead94beac 100644
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/mozglue/GeckoLoader.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/mozglue/GeckoLoader.java
@@ -211,7 +211,7 @@ public final class GeckoLoader {
throw new IllegalStateException("Invalid library path for libmozglue.so: " + mozglue);
}
final String base = mozglue.substring(0, lastSlash);
- Log.i(LOGTAG, "Library base=" + base);
+ Log.d(LOGTAG, "Library base=" + base);
return base;
}