Re:The Bugs We Have to Kill [pdf]
by heinrich5991 on Sunday August 16, 2015 @05:22AM
(#10068421)
To the application, there's no such thing as TCP packet length. Is there a TLS packet length?
There's a length field in a TLS record and also one in the heartbeat message itself. Heartbleed happened when the length field of the heartbeat message was longer than the length of the tls record.
If multiple copies of the same redundant information are not identical, then that is definitely a case of invalid input.
I try to address this class of parser vulnerability with my Nail parser generator (OSDI '14 , github.com/jbangert/nail ), which is inspired by Meredith's hammer.