[ 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)