News for hackers. Stuff that matters.
Re:This shouldn't have happened: A vulnerability postmortem by jandrese on Wednesday December 01, 2021 @02:48PM (#29408278)
> - "There is an arbitrary limit of 10000 bytes placed on fuzzed input. There is no such limit within NSS; many structures can exceed this size. This vulnerability demonstrates that errors happen at extremes"

This is the one that seemed short sighted to me. It's a completely arbitrary (and small!) limit that blinded the fuzzer to this very modest sized buffer overflow.

Re:This shouldn't have happened: A vulnerability postmortem by jjoonathan on Wednesday December 01, 2021 @03:06PM (#29408497)
Oh, the fools! If only they'd built it with 6001 hulls! When will they learn?
Re:This shouldn't have happened: A vulnerability postmortem by 6chars on Wednesday December 01, 2021 @03:20PM (#29408658)
Thank you! So many hindsight fortune tellers here.
Re:This shouldn't have happened: A vulnerability postmortem by l33t2328 on Thursday December 02, 2021 @09:30AM (#29416532)
Not using small bounds on your fuzzing size isn’t exactly something you can only know via hindsight.
Re:This shouldn't have happened: A vulnerability postmortem by Terry_Roll on Wednesday December 01, 2021 @09:13PM (#29411716)
Predictable Human Behaviour, you can literally count on it! LOL

Anyway the post mortem analysis is interesting because it gives away peoples knowledge or lack of.

What is it they say? The Devil is in the detail!

Re:This shouldn't have happened: A vulnerability postmortem by js2 on Wednesday December 01, 2021 @02:55PM (#29408368)
The buffer holds 2K, so this limit alone which exceeds the buffer by 8K'ish didn't blind the fuzzer. It's not clear a larger input would've caught anything due to other "what went wrong" items, specifically "each component is fuzzed independently."
Re:This shouldn't have happened: A vulnerability postmortem by a-priori on Wednesday December 01, 2021 @02:56PM (#29408378)
The problem is that the search space grows (exponentially?) as you increase the fuzzer’s limit. So there’s a cost, and likely diminishing returns, to raising that limit.
Re:This shouldn't have happened: A vulnerability postmortem by UncleMeat on Wednesday December 01, 2021 @03:43PM (#29408894)
Coverage-guided fuzzing dramatically mitigates the exponential nature of the search space. It used to be that searching for magic bits was impossible with fuzzing but now it is nearly trivial.
Re:This shouldn't have happened: A vulnerability postmortem by jandrese on Wednesday December 01, 2021 @03:04PM (#29408480)
Are they checking every possible overflow up to the max? Like no overflow at 7377 bytes, lets try 7378...

While I can see targeting near natural boundaries (1025 bytes for example), you should be able to skip over most of the search space and verify that it doesn't blow up on enormous values like 16777216 bytes.

Re:This shouldn't have happened: A vulnerability postmortem by lucb1e on Wednesday December 01, 2021 @03:40PM (#29408865)
It's not that simple though. Single-variable integer overflows can be checked like that, but when the critical byte in a buffer might be at positions 1 through {bufferlength}, you have to do a shotgun approach and see if anything sticks, and at some point the number of possible combinations grows too big even for that.

I'm not an expert on fuzzing myself, but generally I do see the point of having a limit here. Why, then, that limit was not chosen to be the max size for each of the length-checked inputs, I don't know. That does seem a bit more obvious, but also I just read this article so I can't prove that I wouldn't have made the same mistake.

Re:This shouldn't have happened: A vulnerability postmortem by moring on Thursday December 02, 2021 @12:54AM (#29412991)
Is it possible to feed a fuzzer with information from static analysis to limit the search space? Such as, if you have a check like "someParameter > 0" in the code, have the fuzzer generate a positive, negative, and zero value for someParameter, but not thousands of them -- at least not based on this check alone -- because they will all behave the same.
Re:This shouldn't have happened: A vulnerability postmortem by baby on Thursday December 02, 2021 @01:46AM (#29413247)
There's whitebox fuzzing that's starting to become a thing, when your fuzzer gets stuck you give the non-giving corpus to an SMT solver and it'll try to see if there exists an input that could uncover a new path. I'm really excited about these but haven't really followed the advances.
Re:This shouldn't have happened: A vulnerability postmortem by baby on Thursday December 02, 2021 @01:44AM (#29413239)
If you increase the limit you lose in coverage as you can only do so many exec/s