Mi sof谩 mi laboratorio y refugio

Thursday, August 20, 2026

Este es mi laboratorio real. 馃泲️馃摫馃捇

M谩s que una oficina o un simple sal贸n, esto es un Entorno de Investigaci贸n Integrado (EII) con amortiguaci贸n ac煤stica. Mi sof谩 negro no es un mueble cualquiera: es la herramienta de depuraci贸n m谩s avanzada del mercado. Tiene soporte para el m贸vil (la mesita), ventilaci贸n natural inteligente, y un sistema de respaldo de emergencia para cuando el cerebro se satura de c贸digo AOSP (aka, la siesta estrat茅gica de alta recuperaci贸n neurol贸gica).

Te juro que este coj铆n ha visto m谩s de la mitad del c贸digo fuente de Android dando vueltas en la cabeza de alguien que ya lo tiene casi memorizado. Cuando aparece algo “raro”, no hace falta conectar un adb, ni abrir Android Studio, ni siquiera encender el PC de la mesa. El framework entero se pone a girar solo en la mente, se conectan las capas de abstracci贸n y, de repente, el fallo se visualiza en 3D. Solo hace falta un m贸vil, este sof谩, y la capacidad casi m铆stica de ver el sistema desde dentro.

El ambiente, por supuesto, est谩 meticulosamente optimizado para detectar esos patrones que los ingenieros de Google en sus oficinas corporativas pasan por alto:

  • Ukelele para los momentos en los que el cerebro necesita respirar y despejar las cadenas de llamadas.
  • Altavoz gigante para mantener el foco mental mientras se reconstruyen los flujos de datos de forma abstracta.
  • Luces enredadas + Budas para preservar el zen cuando un input estructurado atraviesa demasiadas capas de Android y empieza a parecer magia negra.

Est谩 emp铆ricamente demostrado que los hallazgos m谩s interesantes (ya sean de STA, de arquitectura o de comportamiento del propio sistema) salen a las 2 de la madrugada. Es el pico m谩ximo de productividad del software engineer nocturno: en pijama, con los pies en el sof谩 y el AOSP dando vueltas en la cabeza como un torbellino. La documentaci贸n formal y los informes de bug, por supuesto, se dejan para el d铆a siguiente, donde la noche y el sue帽o, se encargan de pulir el lenguaje t茅cnico para que los reportes queden claros, precisos y listos para producci贸n.

Si los de Mountain View supieran que se puede mapear y memorizar medio framework, encontrar amplificaciones arquitect贸nicas y deducir por qu茅 crashea un servicio sin tocar un solo cable de depuraci贸n... dejar铆an sus sillas de oficina de un plumazo y vendr铆an todos a casa.

Y, cuando llegaran, se pelear铆an sin piedad por este sof谩. 馃槀馃幐

El trono negro no miente. Y el c贸digo, hoy, se rinde.

CDN Tsunami and STA: The same amplification pattern in two different worlds

CDN Tsunami and STA: The same amplification pattern in two different worlds

Structured Text Amplification — External Corroboration

馃搶 Important distinction: CDN Tsunami is not an Android vulnerability and is not being presented as evidence of a direct relationship with any Android component. It is presented as an independent external example of the same higher-level architectural phenomenon: disproportionate resource amplification across a data transformation boundary.

On August 20, 2026, The Hacker News published an article titled "CDN Tsunami Attack Abuses HTTP/3 to Amplify Traffic 350x".

The attack describes how an HTTP/3 request with compressed headers (QPACK) can be amplified up to 350 times when translated to HTTP/1.1 by a CDN. A small input (less than 500 Kbps) becomes a massive output (more than 100 Mbps) that saturates the origin server.

And as I read it, I realized something:

"This is exactly what I have been documenting in Android for the past four years."

It is not the same domain, not the same mechanism, but it is the same architectural pattern. And that pattern I have defined as Structured Text Amplification (STA).

The complete STA research, with 32 documented vectors, is available in the whitepaper v6.


1. What is the "CDN Tsunami" attack?

The attack, documented by security researchers, exploits how CDNs translate HTTP/3 to HTTP/1.1:

Attacker sends HTTP/3 request with compressed headers (QPACK)
       ↓
CDN receives the request
       ↓
CDN translates HTTP/3 → HTTP/1.1
       ↓
Compressed headers are decompressed and expanded
       ↓
Origin server receives a massive request (up to 350x)
       ↓
Origin server is saturated → Denial of Service

Amplification factor: up to 350×

Impact: a request of less than 500 Kbps can generate more than 100 Mbps of traffic toward the origin server.

Affected vendors: Alibaba, Baidu, Tencent (which support the dynamic QPACK table).

Source: The Hacker News — "CDN Tsunami Attack Abuses HTTP/3 to Amplify Traffic 350x"


2. The parallel with STA

The "CDN Tsunami" attack and the STA vectors share a structurally analogous pattern:

Aspect CDN Tsunami Attack STA (Android)
Input HTTP/3 with compressed headers (QPACK) Structured text/URL
Amplification layer HTTP/3 → HTTP/1.1 translation Android framework / application serialization and processing layers
Mechanism QPACK decompression/expansion UTF-16 serialization, O(n²), Bundle serialization
Amplification factor Up to 350× Up to 20.6× (WhatsApp, STA-005)
Impact Origin server saturation (DoS) ANR, crash loops, SystemUI crash
Mitigation principle Limit header size, validate before translation Limit text/URL size, validate before serialization

The pattern is structurally analogous:

Small, legitimate input
       ↓
Translation / serialization layer
       ↓
Massive output (amplification)
       ↓
Resource exhaustion → Denial of Service

3. The defensive principle is the same

What makes this parallel even more interesting is that the defensive principle is the same, even if the implementations differ:

Defensive principle Application in CDN Application in STA (Android)
Limit before amplification Limit QPACK header size before translation Limit text/URL size before entering libminikin
Validate before crossing layers Validate payload before forwarding to origin Validate Bundle before crossing Binder
Reject excessive thresholds Reject requests exceeding maximum size Reject state before persisting in TaskPersister

"Measure and limit before the amplification occurs, not after."


4. What this corroborates

The "CDN Tsunami" attack provides independent evidence that the amplification pattern described by STA also occurs outside the Android ecosystem.

This strengthens the hypothesis that STA describes a broader architectural failure pattern rather than an Android-specific phenomenon.

The common structure appears when:

  • A small input crosses a translation or serialization layer.
  • The layer has no defensive limits.
  • The output is amplified and exhausts a resource.

This is exactly what I have documented in STA:

The "CDN Tsunami" attack is STA in the networking world.


5. What this means for the STA research

This external corroboration has important implications:

  1. The STA model is strengthened. The amplification pattern I have documented in Android appears in other domains (CDN, HTTP/3) with the same mechanism and the same defensive principles.
  2. The proposed mitigation strategy is viable. The defensive principles described for the CDN scenario closely parallel those proposed in STA: limits before amplification, validation before crossing layers.
  3. The problem is architectural, not app-specific. It is not a bug in WhatsApp or Chrome. It is a fragile design pattern that appears in multiple systems.
  4. STA is a generalizable model. It is not just for Android. It is a pattern that can be applied to any system where data crosses translation or serialization layers without adequate resource bounds.

This does not prove that every amplification vulnerability belongs to STA. It demonstrates that the architectural pattern described by STA can independently emerge in unrelated systems when data crosses a transformation or serialization boundary without adequate resource bounds.


6. References


7. Conclusion

The "CDN Tsunami" attack is an external corroboration of the STA model. It is not the same domain, not the same mechanism, but it is the same architectural pattern.

And that is what makes STA a model, not a list of bugs. A model that explains how amplification occurs when data crosses translation or serialization layers without defensive limits.

When a CDN attack and an Android investigation share the same pattern and the same defensive principles, it provides independent evidence that this class of amplification pattern can arise across unrelated systems and technology domains.

"The CDN Tsunami is not just a CDN attack. It is a manifestation of STA in the networking world. And that demonstrates that the STA model is applicable beyond Android."


Complete whitepaper: Resilience Gaps in Android IPC, SavedState and Text Layout — v6 (August 2026)


馃搶 About this series
This post is part of a series documenting the 32 vectors of Structured Text Amplification (STA).

Published:
STA-017 — Cross-Engine ANR
STA — Google Drive → SystemUI
STA-005 — WhatsApp

Whitepaper: Resilience Gaps in Android IPC, SavedState and Text Layout - v5


Lostmon · lostmon.blogspot.com

WhatsApp: When a large draft becomes a persistent crash loop in App

Monday, August 17, 2026

STA-005 WhatsApp: When a large draft becomes a persistent crash loop in a APP

Structured Text Amplification — Vector 005

This post is part of the series documenting the 32 vectors of Structured Text Amplification (STA). The complete whitepaper, version v5, covers the research, methodology, evidence, and full vector catalog.

If you read STA-001 and STA-002, you saw how oversized URLs can affect interaction surfaces like context menus and share dialogs. STA-005 is different: it's not about a UI surface, it's about persistent state amplification that can lock the entire application.

⚠️ Severity: STA-005 is one of the most severe Class A vectors. A single oversized text pasted into a WhatsApp chat can cause a persistent crash loop that typically resolves only by deleting the conversation or clearing app data.


1. The scenario

The scenario is deceptively simple:

User pastes large text into WhatsApp chat compose field
       ↓
WhatsApp stores the draft in a Fragment (SavedState)
       ↓
FragmentManager attempts to restore the oversized state
       ↓
The serialized activity state subsequently crosses the Binder boundary
       ↓
State exceeds the Binder transaction budget used in the observed reproduction
       ↓
TransactionTooLargeException results in process termination in the observed reproduction
       ↓
WhatsApp crashes
       ↓
The contaminated state remains persisted to disk
       ↓
WhatsApp crashes again on next launch when restoring the same state
       ↓
PERSISTENT CRASH LOOP — user may be unable to open the app until the contaminated state is removed
       ↓
Recovery: delete conversation via adb or clear app data

The user does nothing malicious. They paste a large text — perhaps from a document, a long URL, or a generated payload — and the app becomes persistently unusable until the corrupted state is removed.


2. The amplification mechanism

STA-005 is a textbook example of Class A amplification:

Structured input (text draft)
       ↓
Fragment state (SavedState)
       ↓
Bundle serialization
       ↓
Parcel (Binder transaction)
       ↓
Exceeds Binder transaction budget
       ↓
TransactionTooLargeException → crash
       ↓
State remains persisted → loop on next restore

The key architectural failure is not that the Bundle exceeds the Binder budget. The failure is that the system has no safe degradation mechanism at this boundary:

  • It does not catch TransactionTooLargeException
  • It does not discard oversized state
  • It does not fall back to a clean start
  • Instead, it crashes, and the same contaminated state is restored on the next launch

The interesting property is not that Android has a 1 MB Binder limit. The interesting property is that a relatively small, valid piece of application data can become substantially larger state as it crosses framework boundaries, and that failure at the boundary can become persistent application state rather than a recoverable error.


3. The stack trace and Bundle analysis

The following log output was captured from a production device (WhatsApp, Android 15) after pasting an 80,484-byte draft.

W/Bundle: childFragmentManager [L1]  size=1,636,412
W/Bundle: childFragmentManager [L2]  size=1,614,072
W/Bundle: childFragmentManager [L3]  size=1,603,852
W/Bundle: registryState             size=  479,948
W/Bundle: compose_text (origin)     size=   80,484  ← input data
W/Bundle: TOTAL                     size=1,661,088  ← +58% over the observed Binder budget

Amplification factor

The input was 80,484 bytes of text. The total Bundle size was 1,661,088 bytes.

Measured amplification factor: ×20.6

The analysis indicates that encoding (UTF-16) and framework serialization overhead contribute to this expansion, but the factor should be treated as an empirical measurement rather than as the sum of two fixed multipliers.

Stack trace

The exception occurs when the serialized activity state crosses the Binder boundary. The following excerpt is abbreviated; irrelevant frames and build-specific details have been omitted:

android.os.TransactionTooLargeException: data parcel size 1661088 bytes
    at android.os.BinderProxy.transactNative(Native Method)
    at android.os.BinderProxy.transact(BinderProxy.java)
    at android.app.ActivityManagerProxy.activityStopped(ActivityManagerProxy.java)
    at android.app.ActivityThread.handleStopActivity(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java)
    at android.os.Handler.dispatchMessage(Handler.java)
    at android.os.Looper.loop(Looper.java)
    at android.app.ActivityThread.main(ActivityThread.java)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java)

Note: The frames above are shown without line numbers to avoid presenting build-specific line numbers as authoritative. They are intended to illustrate the code path, not to serve as an exact reconstruction of the original stack trace. The exception results in process termination in the observed reproduction.


4. Variants

STA-005b — WhatsApp Business (shared inbox)

When a conversation's SavedState becomes contaminated in WhatsApp Business, the crash loop can affect ALL agents in a shared inbox simultaneously.

  • All agents may see the same crash loop
  • No agent can access the conversation
  • The only recovery (deleting the conversation) destroys the entire communication history with that client

Impact: Potential business continuity impact. A single oversized message can lock an entire customer service team out of a conversation.

STA-005c — WhatsApp + Meta AI

An oversized draft in a Meta AI chat within WhatsApp can lock the entire application persistently.

  • The draft is stored in the AI chat's SavedState
  • Same amplification mechanism
  • Recovery typically requires clearing the entire app data

STA-005d — WhatsApp deep link (api.whatsapp.com/send?text=[payload])

A potential one-click delivery path: an attacker can craft a deep link that opens WhatsApp with a pre-filled text field containing an oversized payload:

https://api.whatsapp.com/send?text=[OVERSIZED_PAYLOAD]
  • The user clicks the link
  • WhatsApp opens with the text pre-filled
  • If the text is persisted as a draft (depending on WhatsApp's draft persistence behaviour), the state becomes contaminated
  • If the user sends the message, the state is also contaminated through the normal message flow

Note: The exact conditions under which the payload contaminates the state without the user sending the message depend on WhatsApp's draft persistence implementation. This is documented as a potential delivery path rather than a guaranteed one-click vector.


5. Affected apps and devices

Confirmed apps:

  • WhatsApp — reproducible on the tested versions across Android 13–16
  • WhatsApp Business — reproducible on the tested versions (shared inbox)
  • WhatsApp + Meta AI chat — reproducible on the tested versions
  • Threads (STA-012, similar mechanism)
  • Other apps with similar SavedState/Binder patterns (Bing, Opera, DuckDuckGo, Firefox)

Devices tested:

  • Xiaomi Redmi Note 14 5G (HyperOS 3.0 / Android 16)
  • Google Pixel 7 (Android 13–15)
  • OPPO A78 (ColorOS, Android 14)
  • OnePlus 11 (OxygenOS, Android 14)
  • Samsung Galaxy series (One UI, Android 14–15)

Reproducibility: 100% on all tested devices.


6. Persistence

Persistence: YES

The contaminated state is written to disk. The crash loop persists across:

  • App restarts
  • Device reboots
  • App updates (if the state is preserved)

Recovery typically requires:

  • Deleting the contaminated conversation (via adb or app settings if accessible)
  • Clearing the entire app data (loses all conversations)
  • Reinstalling the app (loses all data)

7. Why this matters

STA-005 is not just a crash. It is a persistent denial of service with potential data loss implications:

  • For individual users: They lose access to the app until they clear data, losing all chat history
  • For businesses (WhatsApp Business): An entire customer service team can be locked out of a client conversation
  • For the platform: This is a single point of failure in the state restoration mechanism

A sufficiently small structured input can, through state amplification, produce a serialized state large enough to trigger the crash condition. The measured amplification factor (×20.6) demonstrates that this transformation is not merely theoretical.


8. Relationship to other STA vectors

Vector Relationship
STA-012 Same mechanism (Threads deep link → Fragment args → SavedState → Binder)
STA-015-DL Same amplification mechanism, escalated to SystemUI via TaskPersister
STA-022 Same mechanism (DuckDuckGo Fragment args → Parcel → Binder)
STA-028 UTF-16 encoding amplification is a contributing factor to the measured ×20.6

9. Vendor status

Vendor Status
Meta (WhatsApp/Threads) ❌ Reported in March 2026 — no response as of 17 August 2026
Google (Android VRP) ✅ A-477279924 — $250 reward, open triage
Google (AndroidX) ✅ savedstate 1.5.0 (May 2026) decouples SavedState from Binder for AndroidX consumers — but does not fix FragmentManager or SystemUI

Note: Updating to androidx.savedstate 1.5.0 does not protect against STA-005. WhatsApp must update their own state handling, and FragmentManager.restoreAllState() itself remains unpatched.


10. Recommended mitigation

For WhatsApp and other apps:

  • Truncate text input in chat compose fields (max 8–16 KB)
  • Validate draft size before saving to SavedState
  • Catch TransactionTooLargeException in state restoration and fall back to clean start

For the Android framework:

  • FragmentManager.restoreAllState() should catch TransactionTooLargeException and discard oversized state
  • TaskPersister should validate state size before persisting
  • SystemUI should treat corrupted task state as transient and degrade gracefully

馃搶 The fundamental fix: State restoration must be resilient. A single oversized Bundle should not make the entire app persistently unusable.


11. Methodological note

STA-005 is Tier A — Confirmed. Full stack trace and Bundle analysis have been captured from production devices. The amplification factor (×20.6) is empirically measured.

This vector is one of the most severe in the STA catalog because of its persistence, potential data loss implications, and impact on business users (WhatsApp Business).


Complete whitepaper: Resilience Gaps in Android IPC, SavedState and Text Layout — v5 (August 2026)


馃搶 About this series
This post is part of a series documenting the 32 vectors of Structured Text Amplification (STA).

Published:
STA-005 — WhatsApp (this post)

Coming next:
⬜ STA-012 — Threads
⬜ STA-015-DL — Google Drive → SystemUI
⬜ STA-017 — Cross-engine ANR

Whitepaper: Resilience Gaps in Android IPC, SavedState and Text Layout — v5


Lostmon · lostmon.blogspot.com

Upstream Android and Chromium Changes in 2026: Converging with the STA Model

Friday, August 14, 2026

Upstream Android and Chromium Changes in 2026: Converging with the STA Model

Structured Text Amplification — Upstream Correlation Analysis

This post analyses changes made in Chromium and AOSP/AndroidX during 2026 that intersect with the surfaces studied by Structured Text Amplification (STA).

The analysis is organised around the 32 vectors documented in the STA whitepaper v5, correlating each with upstream commits or architectural changes where a relationship exists.

Methodological note: This is a correlation analysis, not a claim that any referenced change was caused by the STA research. The goal is to identify whether the same architectural boundaries that STA studies — text selection, context menus, Intent/IPC transfer, UTF-16 serialization — are being modified by Android and Chromium engineers with explicit size limits, policy checks, or allocation controls.


1. The full correlation matrix: STA vectors ↔ upstream changes

Each vector is classified using four levels:

  • Direct - The change modifies precisely the surface or mechanism of the vector.
  • Strong — Same boundary/mechanism, though the commit does not say it fixes STA.
  • Architectural — Evidence that Android/Chromium is working on that class of problem.
  • None — No sufficiently specific upstream change found in this review.
STA Description Upstream change Level
001 Chrome — long-press context menu 0065224e — ShowContextMenu IPC / kLongPress (11 Jun 2026) Direct
002 Context menu (long-press) 0065224e — same commit; documents long-press → ShowContextMenu IPC path Direct
003 Share link 84b615a0 — SelectionUtils, Share/Web Search/Translate, MAX_SHARE_QUERY_LENGTH=100000 (5 May 2026) Direct
004 Google Maps — oversized geo: URI Intent/URI → Binder boundary (architecture) Architectural
005 WhatsApp — large text → SavedState crash loop androidx.savedstate 1.5.0; LargePayloadSupport (AOSP CL 3989977) Strong
005b WhatsApp Business — shared inbox Same SavedState/Binder boundary Strong
005c WhatsApp + Meta AI Same SavedState/Binder boundary Strong
005d WhatsApp deep link Deep link → Intent → Binder (architecture) Strong
006 Google App — Select text → Translate 84b615a0 — ACTION_TRANSLATE added to selection menu Direct
007 Google Drive — PDF → Translate 84b615a0 — PDF viewer selection menu with Translate action Direct
008 System services — sync IPC + oversized payload General Binder/IPC architecture Architectural
009 Google Drive — DOCX → Print Preview Print Service → Bundle → Binder → SystemUI (architecture) Strong
010 Drive → Print Service → SystemUI Print Service → Binder boundary (architecture) Strong
010b Drive → cloud printer Same Print Service/Binder boundary Strong
011 Clipboard → assisted paste → SystemUI ClipData → IPC → SystemUI (architecture) Architectural
012 Threads — deep link /search?q=[payload] Deep link → Fragment args → SavedState → Binder (architecture) Strong
012e Threads via WhatsApp — WebView → deep link Same Intent/SavedState/Binder boundary Strong
013 Microsoft Bing — address-bar history crash Chromium omnibox/history pipeline (architecture) Architectural
015 SystemUI — RecentTasksController TaskPersister → SystemUI → Binder (architecture) Strong
015b HyperOS — OEM Task State Interactor Same TaskPersister/SystemUI boundary Strong
015-DL Google Drive → Browser → SystemUI crash loop Browser → TaskPersister → SystemUI (architecture) Strong
016 Opera — onResume RuntimeException Chromium/Binder architecture Architectural
017 Cross-engine libminikin ANR No public 2026 commit found introducing length limits in LineBreakOptimizer None
018 Drive + Print Service + SystemUI Print/SystemUI/Binder architecture Strong
019a-d Firefox — address bar, ClipboardManager, Compose TextLayout No public 2026 commit found — libminikin lacks structural length limits None
020 Chrome + Edge — address-bar history ANR Chromium Omnibox/history pipeline activity (2026) Strong
021 Brave — address bar ANR Chromium/Omnibox architecture (inherited) Architectural
022 DuckDuckGo — 920 KB URL → 965 KB Parcel 8882927e — PdfView "Fix transaction too large crashes" (Jul 2026) Direct
022b DuckDuckGo — history suggestion ANR No public 2026 commit found — libminikin/history pipeline lacks limits None
023 Samsung Internet — Share crash Chromium Share/Intent architecture Architectural
023b Samsung Internet — tab group freeze Chromium tab/UI architecture Architectural
023c Samsung Internet — address bar ANR Chromium Omnibox/history pipeline Strong
027 Edge Ask Copilot — initialText NavGraph crash Edge/Chromium deep link surface (no public Chromium fix found) Architectural
028 UTF-16 serialization density AOSP Parcel::writeUtf8AsUtf16(); Chromium native UTF-16 size handling Direct

2. Three upstream convergences worth highlighting

馃敼 Convergence 1: Selection → Intent — STA-003 / 006 / 007

Chromium has explicitly created SelectionUtils, added Share/Web Search/Translate to the selection menu, and introduced a size limit (MAX_SHARE_QUERY_LENGTH = 100000) to prevent large selections from crossing the Intent boundary directly.

selected text
     ↓
SelectionUtils
     ↓
Share / Web Search / Translate
     ↓
Intent.EXTRA_TEXT / ACTION_TRANSLATE
     ↓
Binder / IPC boundary

Why this matters: This is an independent validation that the surface STA-003/006/007 studies is considered sensitive enough for explicit defensive limits.

馃敼 Convergence 2: SavedState → Binder → TransactionTooLargeException — Class A

AndroidX commit 8882927e (July 2026) is titled "Fix transaction too large crashes". The cause: a 1.2 MB SelectionModel serialized via onSaveInstanceState.

1.2 MB SelectionModel
       ↓
onSaveInstanceState
       ↓
Binder transaction
       ↓
TransactionTooLargeException
       ↓
CRASH

The fix avoids serializing the full object, keeping only lightweight anchors (~44 bytes) and reconstructing asynchronously.

Why this matters: This is an upstream mitigation of exactly the architectural pattern Class A STA vectors describe — oversized state crossing Binder.

Limitation: It does not fix FragmentManager.restoreAllState() or TaskPersister. Those remain unpatched.

馃敼 Convergence 3: UTF-8 → UTF-16 → allocation — STA-028

AOSP's Parcel::writeUtf8AsUtf16() explicitly calculates UTF-16 length and allocates (utf16Len + 1) * sizeof(char16_t).

UTF-8 input
     ↓
utf8_to_utf16_length()
     ↓
UTF-16 code-unit count
     ↓
(utf16Len + 1) * sizeof(char16_t)
     ↓
Parcel storage allocation

The reverse path similarly calculates size before conversion. Chromium also uses std::u16string / UTF-16 representation for size decisions in selection paths.

Why this matters: This provides direct experimental grounding for STA-028: equal code-point counts can produce different UTF-16 footprints, and those footprints affect allocation decisions.


3. The asymmetry that matters: Class A vs Class B

⚠️ A striking pattern emerges from this review:

  • Class A (IPC / SavedState / Binder) — upstream mitigations are appearing: LargePayloadSupport, PdfView fix, AOSP Intent handling. These boundaries are receiving active defensive work.
  • Class B (libminikin / UI thread)no public 2026 commit introduces structural length limits in LineBreakOptimizer::computeBreaks, breakLineOptimal, or breakLineGreedy. The pipeline remains without a global defensive limit.

This aligns with the STA whitepaper's observation that libminikin's line-breaking paths have not been structurally hardened, despite the existence of historical CVEs (e.g., CVE-2017-0755) and documented ANR behaviour across multiple Android versions.

Conclusion: The upstream evidence confirms that Class A is being addressed, while Class B remains an open gap.


4. What this analysis does — and does not — validate

Supported:

Upstream Android and Chromium changes increasingly introduce defensive boundaries around the same text, IPC and state-propagation surfaces identified by STA.

Not supported by this analysis:

  • That any referenced change was caused by STA research
  • That all STA vectors share one root cause
  • That Class B has been structurally fixed (it has not)

5. The next experiment

STA-028 now has a particularly clear experimental question:

Can the same observed threshold be reached with fewer Unicode code points by changing the UTF-16 representation of the payload?

Record:

  • Code points
  • UTF-16 units
  • UTF-16 bytes
  • UTF-8 bytes
  • Device
  • Android version
  • Observed threshold/outcome

Only after correlating the threshold with representation should the research attribute causality to a particular serialization or IPC layer.


6. Conclusion

The most interesting result of this review is not a single commit, but convergence around the same architectural boundaries:

Selection
   |
   +--> Context menu (STA-002) — direct upstream change
   |
   +--> Share / ProcessText (STA-003) — direct upstream change
   |
   +--> Web Search / Translate (STA-006/007) — direct upstream change
   |
   +--> Intent / IPC (STA-028, Class A) — upstream mitigations emerging
   |
   +--> UTF-16 representation (STA-028) — AOSP allocation evidence
   |
   +--> libminikin / UI thread (STA-017/019) — NO public upstream fix found

STA was created to study what happens when structured input crosses these kinds of boundaries and its effective processing cost changes along the way.

The 2026 Chromium and Android changes do not prove the STA model on their own, but they provide useful external evidence that:

  • These boundaries are real engineering constraints
  • They are areas of active defensive work
  • The specific surfaces studied by STA are exactly the surfaces being modified with limits and policy checks
  • Class A is being addressed; Class B is not

For STA-028 in particular, the combination of the AOSP Parcel conversion path and Chromium's native UTF-16 size handling makes serialization density a hypothesis worth testing rigorously.


Complete whitepaper: Resilience Gaps in Android IPC, SavedState and Text Layout — v6 (August 2026)


馃搶 About this series
This post is part of a series documenting the 32 vectors of Structured Text Amplification (STA).

Published:
Upstream Android and Chromium Changes in 2026 (this post)

Coming next:
⬜ STA-005 — WhatsApp
⬜ STA-015-DL — Google Drive → SystemUI
⬜ STA-017 — Cross-engine ANR

Whitepaper: Resilience Gaps in Android IPC, SavedState and Text Layout — v5


Lostmon · lostmon.blogspot.com

 

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