libminikin The Sixth Entry Point

Wednesday, September 09, 2026

The Sixth Entry Point: New Forensic Evidence Confirms STA Remains Unpatched in Android 16

New forensic evidence from a full Android 16 bugreport confirms that Structured Text Amplifica

tion (STA) vectors remain reproducible in Chrome 152 and Edge 2026. A sixth entry point into libminikin has been identified, and the September 2026 Android Security Bulletin contains no patches for the affected paths.


1. Executive Summary

A full Android 16 bugreport (Redmi Note 14 5G, September 6, 2026) provides direct forensic evidence of two distinct failure mechanisms affecting Chromium-based browsers:

  • Text‑layout ANRs involving libminikin::LineBreakOptimizer::computeBreaks() during long-press and address-bar focus.
  • Oversized Binder transactions resulting in TransactionTooLargeException and browser process termination via Share / VIEW workflows.

Both Chrome 152.0.7977.82 and Edge 152.0.4191.53 reproduce the same failures on Android 16 (build BP2A.250605.031.A3 / HyperOS 3.0.301.0).

Key finding: A sixth entry point into libminikin has been identified Paint.measureText() → HarfBuzz shaping, reproduced in Google Docs (com.google.android.apps.docs.editors.docs). This is the first documented entry point that enters libminikin through the glyph shaping path rather than line-breaking.


2. The Sixth Entry Point STA-031

The previously documented entry points into libminikin all pass through line‑breaking algorithms (LineBreakOptimizer::computeBreaks, breakLineOptimal, breakLineGreedy). The new evidence reveals a sixth entry point:

android.graphics.Paint.measureText()
        ↓
libhwui (PaintGlue / MinikinUtils)
        ↓
libminikin (Layout::measureText)
        ↓
Layout::doLayoutRunCached
        ↓
Layout::doLayoutWord
        ↓
LayoutCache::getOrCreate<LayoutAppendFunctor>
        ↓
LayoutPiece::LayoutPiece
        ↓
libharfbuzz_ng (hb_shape_full, _hb_ot_shape)
        ↓
hb_font_t::get_glyph_h_origin_with_fallback
        ↓
Main thread blocked → InputDispatcher timeout → ANR
    

This stack was captured from a production ANR in Google Docs (com.google.android.apps.docs.editors.docs), which was not previously in the catalogue of applications with forensically confirmed libminikin ANRs.

The trigger path passes through AlertDialogLayout.onMeasure, consistent with an oversized structured payload being measured inside a dialog component, the same class of UI surface implicated in other STA vectors.


3. Forensic Evidence STA-003 (Share / Intent Binder Crash)

The bugreport records an ActivityTaskManager transition involving Google Files as the calling package:

19:40:03.713
START u0 {
    act=android.intent.action.VIEW
    dat=content://com.google.android.apps.nbu.files.provider/...
    typ=text/html
    ...
    cmp=com.microsoft.emmx/com.google.android.apps.chrome.IntentDispatcher
}
    

The Intent is explicitly reported as (has extras). Although the actual extra contents are redacted by the bugreport, in controlled reproduction the variable content supplied through this workflow is the crafted STA pattern.

3.1. Large Bundles

For Edge, the bugreport records:

Large Bundle: length=1531092
Large Bundle: length=1532640
    

3.2. Binder Transaction Failure

Immediately before the crash:

Binder transaction failure
ID: 12562575
error: -28 (No space left on device)

Large outgoing transaction of 1533260 bytes
interface descriptor: android.app.IActivityTaskManager
code 1
    

3.3. TransactionTooLargeException

android.os.TransactionTooLargeException:
data parcel size 1533260 bytes

android.app.Instrumentation.execStartActivity
android.app.Activity.startActivityForResult
org.chromium.ui.base.WindowAndroid
android.app.IActivityTaskManager$Stub$Proxy.startActivity
android.os.BinderProxy.transact
    

3.4. Process Termination

wm_finish_activity:
com.microsoft.emmx/...ChromeTabbedActivity, force-crash

am_proc_died:
com.microsoft.emmx
    

3.5. Chrome Confirmation

The same phenomenon is reproduced in Chrome:

TransactionTooLargeException:
data parcel size 1533240 bytes

wm_finish_activity:
com.android.chrome/...ChromeTabbedActivity, force-crash

am_proc_died:
com.android.chrome
    

The two Chromium implementations fail at almost exactly the same serialized transaction size:

  • Chrome: 1,533,240 bytes
  • Edge: 1,533,260 bytes
  • Difference: only 20 bytes

This is particularly significant because both browsers reach the same Chromium Activity-start path and both fail at the Android Binder boundary.


4. STA-017 / STA-020 Text-Layout ANRs

The same bugreport contains multiple ANR reports in which Chrome and Edge enter the Android text-layout stack:

TextView
StaticLayout
LineBreaker
libhwui
libminikin
minikin::LineBreakOptimizer::computeBreaks
breakLineOptimal
android::nComputeLineBreaks
    

In Chrome, the stack includes:

minikin::getPrevWordBreakForCache
StyleRun::getLineMetrics
MeasuredText::getLineMetrics
LineBreakOptimizer::computeBreaks
breakLineOptimal
android::nComputeLineBreaks
TextView.onMeasure
    

The ANR reason is an input dispatch timeout:

ChromeTabbedActivity is not responding.
Waited 5000ms for MotionEvent(action=DOWN)
    

The Activity is subsequently force-finished by the system. This demonstrates that the problem is not specific to a single Chromium implementation. The same Android text-layout subsystem is reached by both browsers.

4.1. STA-020 — Address Bar / Omnibox ANR

A separate reproduction occurs when the crafted URL is present in browser history and the address bar is subsequently focused. The omnibox suggestion rendering path again reaches Android's text measurement and libminikin line-breaking implementation:

OmniboxSuggestionsContainer.onMeasure
RecyclerView.onMeasure
TextView.onMeasure
StaticLayout.generate
libhwui
libminikin
LineBreakOptimizer::computeBreaks
    

This provides a second independent entry point into the same native text-layout subsystem.


5. Chromium Patches — Not Enough

The Chromium-specific mitigations introduced in 2026 do not address the underlying Android text-processing paths involved in these reproductions.

Patch Mechanism Covers STA-003? Covers STA-017/020?
SelectionUtils / 100 KB Truncates PDF selection text ❌ No ❌ No
LargePayloadSupport (FD) File descriptors for large IPC ❌ No ❌ No
SharedMemory (Union) Redesigns Native Messaging transport ❌ No ❌ No
Oversized Clipboard (ContentProvider) Redirects large clipboard payloads ❌ No ❌ No
PdfView anchors Replaces SelectionModel with placeholders ❌ No ❌ No

The root cause is not in Chromium. It is in Android's libminikin.so text layout engine, which lacks a global length gate before entering expensive paths like LineBreakOptimizer::computeBreaks() and Layout::measureText().


6. September 2026 Android Security Bulletin

The September 2026 Android Security Bulletin (published September 8) contains no patches for libminikin, Binder, SavedState, TransactionTooLargeException, or any of the STA vectors documented in this research.

A search of the bulletin reveals zero mentions of:

  • libminikin
  • Binder
  • SavedState
  • TransactionTooLarge
  • StaticLayout, TextView, LineBreakOptimizer

This confirms that the architectural gap in libminikin remains publicly unpatched.


7. The Bigger Picture

The evidence now supports the following conclusions:

Finding Status
Sixth entry point to libminikin (HarfBuzz shaping) ✅ Confirmed (Google Docs)
STA-003 (Share crash) — Edge and Chrome ✅ Reproducible in 2026
STA-017 (Long-press ANR) — Edge and Chrome ✅ Reproducible in 2026
STA-020 (Focus ANR) — Edge and Chrome ✅ Reproducible in 2026
Chromium patches ❌ Do not cover STA-003/017/020
September 2026 bulletin ❌ No patches for libminikin
Xiaomi STA-015b ✅ Patched (no CVE public)

8. Conclusion

New forensic evidence from a full Android 16 bugreport confirms that Structured Text Amplification (STA) vectors remain reproducible in the latest versions of Chromium-based browsers.

A sixth entry point into libminikin has been identified Paint.measureText() → HarfBuzz shaping, reproduced in Google Docs. This demonstrates that the problem is not confined to line-breaking; it also affects glyph shaping and text measurement paths.

Despite multiple Chromium patches in 2026 (LargePayloadSupport, SharedMemory, 100 KB selection limits, etc.), none of them address the underlying Android text-processing paths involved in STA-003, STA-017, and STA-020.

The September 2026 Android Security Bulletin contains no patches for libminikin, Binder, SavedState, or TransactionTooLargeException.

The evidence indicates a platform-level resource-exhaustion gap: Android text-processing entry points do not enforce a sufficiently early global length limit before entering expensive operations such as line breaking, shaping and measurement.

This indicates that the issue is not browser-specific and cannot be fully addressed through Chromium-only patches. A platform-level fix in AOSP appears necessary


 

Browse

About:Me

My blog:http://lostmon.blogspot.com
Mail:Lostmon@gmail.com
Lostmon Google group
Lostmon@googlegroups.com

La curiosidad es lo que hace
mover la mente...

Friends