Marcel Böhme👨‍🔬 Profile picture
Sep 16 15 tweets 2 min read Read on X
Keynote by @halvarflake at #FUZZING'24 reflecting on the Reasons for the Unreasonable Success of Fuzzing. Image
Hacking culture in the 90's had very strong values. It had a value system outside of and different from normal society. Fuzzing was for the dumb kids.
"No one can argue with a root shell". Fuzzing was done via Perl scripts and pretty much manually. Bugs where super abundant. Even the CNN website run on a server you could find vulns in within 2 days.
OpenSSH CRC32 compensation CVE-2001-0144.

Michal Zalewski (!) piped random data into OpenSSL for fun and found a crash. Probably the only remotely exploitable OpenSSL bug found via fuzzing.
Going from a fuzzer bug in Acrobat Reader to an actual working exploit took way longer than finding the bug, but I learned so much that I wrote the weird machine paper 6 years later as a consequence.
Programs get more complex, human auditors must get "smarter" but fuzzing doesn't get much slower or less effective.
Fuzzing is embarrassingly parallel that it can exploit Moore's law for horizontal scalability.
Fuzzing is always a winner in the hardware lottery. Program analysis is in software while fuzzing is perf in hardware.
Lack of false positives. This is huge in industry! More important even than "absence of bugs".
AFL had outside impact because it harnessed these strengths. Designed to just work. Smart design decisions better than a dumb strategy.

Also, fuzzers are really simple to implement. Anyone can do it.
Perhaps fuzzing is "the bitter lesson", but applied to program analysis, not ML.
The AI community are all-in on compute now. This seems to be the same in program.analysis. "The two methods that scale arbitrarily are search and fuzzing".
Fuzzing community should look into research in RL. Novelty search.

We should work on our reward functions. Coverage is blind to the state machine. Similar to the RL game-playing issue?
But maybe we need to be faster rather than smarter? Let's look at fuzzer performance bottlenecks. Let's look at dedicated hardware.

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Marcel Böhme👨‍🔬

Marcel Böhme👨‍🔬 Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @mboehme_

Aug 22
Before we announce the exciting keynotes for #FUZZING'24, we found some time to upload the recordings for the last two years by Abhishek Arya (@infernosec), @AndreasZeller, Cristian Cadar (@c_cadar), and Kostya Serebryany (@kayseesee).

//@lszekeres, @baishakhir, @yannicnoller.
FUZZING'22 Keynote by Abhishek Arya (Google) on "The Evolution of Fuzzing in Finding the Unknowns"
FUZZING'22 Keynote by Andreas Zeller (CISPA & Saarland U) on "Fuzzing: A Tale of Two Cultures"
Read 5 tweets
May 29
Surprising facts about #fuzzing. A thread in slides 👇 Image
Whitebox fuzzing is most effective because it can, in principle, *prove* the absence of bugs.

"Partition-based Regression Verification": mboehme.github.io/paper/ICSE13.p…
Image
In contrast, blackbox fuzzing cannot prove anything.

Djikstra's EWD249: cs.utexas.edu/users/EWD/tran…
Image
Read 23 tweets
May 12
Recently modified code and sanitizer instrumentation seem to be among the most effective heuristics for target selection in directed #fuzzing according to this recent SoK by Weissberg et al. LLMs show much promise for target selection, too.

📝 mlsec.org/docs/2024c-asi…
Image
More info about those two heuristics:
🦠 Sanitizer-guided Greybox Fuzzing:
♻️ Regression Greybox Fuzzing: usenix.org/system/files/s…
mboehme.github.io/paper/CCS21.pdf
But in an interesting twist, the authors find that choosing functions by their complexity might be even better at retrieving functions that contained vulnerabilities in the past.
Read 5 tweets
Mar 28, 2023
After oracles for memory-safety, what's next?

- generic correctness prop.
- dataflow based properties
- "unusually large" resource consumptions

* Program-specific vs generic oracles
* One input (e.g., crash) vs distribution (e.g. performance)
* Ref implementation(s)

#Dagstuhl
- Human artifacts (documentation) as oracles.
- How to infer oracles, e.g. from JavaDoc comments? What about false pos? Consider them as signal for user.
- Oracle problem impacts how good deduplication works.
- Metamorphic testing. Explore in other domains, e.g. perf. testing!
- Mine assertions and use them in a fuzzer feedback loop
- Assertions are the best way to build oracles into the code
- hyperproperties are free oracles (differential testing)
- ML to detect vuln patterns. Use as oracles
- Bugs as deviant behavior (Dawson)
Read 5 tweets
Mar 28, 2023
Peter O'Hearn (@PeterOHearn12) on "Hits and Misses from a decade of program analysis in industry".

#Dagstuhl
- Bi-abductive symbolic execution
- Infer ran "symbolic execution" on changed part of every commit/diff
- Post-land analysis versus diff-time analysis changed fix rate from 0% to 70%. Why?
* Cost of context switch
* Relevance to developer
- Deploying a static analysis tool is an interaction with the developers.
- Devs would accept false positives and work with the team to "fit" the tool to the project rather.
- Audience matters!
* Dev vs SecEng
* Speed tolerance
* FP/FN tolerance
Read 5 tweets
Mar 28, 2023
Anna Zaks on "From Bug Detection to Mitigation and Elimination".

- Static and dynamic analysis.
- Hard to ensure coverage at scale!

#Dagstuhl
Security tooling
- ideal solution mitigates entire classes of bugs
- performance is important.
- adoption is critical!
- works with the ecosystem
Rewriting in memory-safe language (e.g. Swift)
- View new code as green islands in a blue ocean of memory-unsafe code.
- Objective: Turn blue to green.
- We need solutions with low adoption cost.
Read 4 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(