[ 
https://issues.apache.org/jira/browse/TIKA-4826?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tim Allison reassigned TIKA-4826:
---------------------------------

    Assignee: Tim Allison

> MimeTypes.forName interns unknown media types into an unbounded map (slow 
> memory growth on untrusted-input paths)
> -----------------------------------------------------------------------------------------------------------------
>
>                 Key: TIKA-4826
>                 URL: https://issues.apache.org/jira/browse/TIKA-4826
>             Project: Tika
>          Issue Type: Bug
>            Reporter: Dominik Schmidt
>            Assignee: Tim Allison
>            Priority: Major
>
> MimeTypes.forName(String) (tika-core, MimeTypes.java:351) is called during 
> content detection to turn a type hint into a MimeType: MimeTypes.detect runs 
> applyHint, which calls forName(typeName) for the caller's Content-Type. For a 
> syntactically valid but unknown type, forName creates a new MimeType and 
> registers it via add(mime) / types.put(...) into an internal map that is 
> never bounded or evicted (lines 359-369).
> A caller that can influence the type string reaching detection can therefore 
> drive slow, unbounded memory growth by sending a stream of unique, 
> syntactically-valid, unknown media types (for example 
> application/x-<random>). This is reachable today from the tika-server request 
> Content-Type on the direct endpoints, and TIKA-4825 adds the tika-pipes 
> FetchEmitTuple path as another route to the same lookup.
> Severity is low (it needs many requests with distinct crafted types, and 
> growth is slow), but it is an avoidable footgun on an untrusted-input path, 
> and it is a shared/static registry so growth persists for the JVM lifetime.
> Proposed fix: use a non-registering lookup in the detection path. applyHint 
> only needs to know whether the hinted type equals or specializes a known 
> type; it does not need to intern unknown types. Either add a 
> MimeTypes.detect/applyHint variant that resolves a hint against the existing 
> registry without adding, or bound/evict the registration map.
> Note: discovered during review of TIKA-4825 (apache/tika#3039); flagged there 
> as pre-existing and out of scope for that PR.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to