[
https://issues.apache.org/jira/browse/THRIFT-1643?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13806973#comment-13806973
]
Niraj Tolia commented on THRIFT-1643:
-------------------------------------
[~yavalek]: Looks like the code in TBinaryProtocol to check for lengths got
yanked in commit 2ca9c2028593782621c8876817d8772aa5f46ac7 by [~carlyeks]. The
code looked a little shady to begin with and differed significantly from the
TCompactProtocol checks. We probably want to add something similar to the
TCompactProtocol.checkReadLength() check in TBinaryProtocol too.
> Denial of Service attack in TBinaryProtocol.readString
> ------------------------------------------------------
>
> Key: THRIFT-1643
> URL: https://issues.apache.org/jira/browse/THRIFT-1643
> Project: Thrift
> Issue Type: Bug
> Components: Java - Library
> Affects Versions: 0.6.1, 0.8
> Environment: All
> Reporter: Devesh Parekh
> Assignee: Niraj Tolia
> Priority: Critical
> Labels: security
> Fix For: 0.9
>
> Attachments:
> 0001-Address-denial-of-service-in-TCompactProtocol.patch,
> 0001-Add-test-for-TCompactProtocol-OOM-Denial-of-Service.patch,
> 0002-Add-test-for-TBinaryProtocol-OOM-Denial-of-Service.patch,
> 0003-Cleanup-length-checks-in-TCompactProtocol.patch, Attack.java, Foo.thrift
>
> Original Estimate: 24h
> Remaining Estimate: 24h
>
> In readString, if the string field's size is greater than the number of bytes
> remaining in the byte array to deserialize, libthrift will happily allocate a
> byte array of that size in readStringBody, filling the heap.
--
This message was sent by Atlassian JIRA
(v6.1#6144)