Join our Newsletter — 33% off our NHI Course
Foundations & NHI Taxonomy

String Pool

← Back to Glossary
By NHI Mgmt Group Updated November 3, 2026 Domain: Foundations & NHI Taxonomy

A string pool is a shared table of string values stored once and referenced by index from elsewhere in a file or binary structure. In Android resource files, it reduces duplication and lets resource entries point to repeated text efficiently.

What a string pool is

A string pool is a storage pattern, not a security control: repeated text is written once, then other structures reference it by index. That makes file or binary formats smaller and faster to parse, because a loader can resolve repeated labels, names, or resource text without duplicating the bytes each time.

The idea is common in compiled assets and structured containers where many entries reuse the same strings. In Android resource files, for example, the pool helps resource entries point to shared text efficiently instead of embedding the same literal over and over.

Why formats use string pools

String pools solve a practical data-layout problem. Any format with repeated identifiers, UI text, schema names, or metadata fields can waste space if it stores each occurrence separately. A pool centralises those values, which usually improves compactness and can simplify deduplication during build or packaging steps.

This is especially useful in binary formats because offsets and indexes are cheaper to store than many duplicated string blobs. The trade-off is that every consumer of the file must understand the pool structure and resolve references correctly before it can interpret the rest of the content.

How string pools affect parsing and structure

When a parser reads a pooled format, it usually loads the shared string table first, then interprets the rest of the file by following indexes into that table. That means the string pool becomes a foundational part of the file’s internal grammar: if the pool is malformed, every downstream reference may resolve incorrectly.

Because the referenced values are shared, a single string can influence many records at once. That design is efficient, but it also means corruption or tampering in the pool can have broad effects on display text, metadata interpretation, or resource resolution.

Security and integrity considerations for pooled strings

String pools are not inherently risky, but they can become an attack surface when a parser trusts offsets, lengths, or indexes too much. A malformed pool can trigger out-of-bounds reads, crashes, confused parsing, or unexpected string substitution if validation is weak.

In security-sensitive tooling, the main concern is not the existence of pooling itself, but whether the implementation treats the shared table as untrusted input and enforces strict bounds checks before dereferencing it.

Failure mechanism: A parser accepts an invalid index, length, or offset and reads the wrong string data, steps outside the buffer, or misinterprets the surrounding structure.

Impact: The result can range from application failure to data corruption, incorrect resource display, or exploitable memory-safety issues in vulnerable parsers.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

NIST SP 800-53 Rev 5, OWASP ASVS and CIS Controls v8 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
NIST SP 800-53 Rev 5SI-10 — Information Input ValidationString pools rely on safe parsing of indexes, lengths and offsets.
Recommendation — Validate every pooled-string reference before dereferencing it.
OWASP ASVSV5 — File HandlingPooled strings appear in structured files that must be parsed safely.
Recommendation — Apply strict file parsing checks to pooled string tables and their references.
CIS Controls v8CIS-16 — Application Software SecurityApplications that parse binary or resource files need secure handling of shared string tables.
Recommendation — Harden parsers that consume pooled string data and reject malformed structures.

Practitioner Guidance

What to watch for: Treat pooled-string structures as a parsing boundary. Any code that resolves string indexes should validate counts, offsets, and lengths before use, because the pool is a shared dependency for many records, not a self-healing lookup table.

Practitioner takeaway: If you work with binary or resource-file parsers, the safest assumption is that pooled strings are untrusted until every reference has been validated.

Free weekly newsletter

Subscribe to the NHI & AI Identity Journal

The latest on NHI and Agentic AI security – articles, research, breaches, news and events every week.

Bonus 33% off our NHI Course when you subscribe.

NHIMG Editorial Note
Reviewed and updated by the NHIMG editorial team on November 3, 2026.
NHI Mgmt Group — the #1 independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org