Andrey Fedotov · @anfedotoff
72 followers · 121 posts · Server infosec.exchange

My blog post about project golang/image: github.com/ispras/oss-sydr-fuz
0. Changing existing fuzz target to find new bugs.
1. Creating target for symbolic execution.
2. Approach for code coverage collection after fuzzing with go-fuzz libFuzzer.
3. Go panic triage with .
4. Fix: github.com/golang/image/pull/1

#fuzzing #go #casr

Last updated 1 year ago

Andrey Fedotov · @anfedotoff
65 followers · 108 posts · Server infosec.exchange

New casr 2.4.0 is available!
github.com/ispras/casr/release
casr-cli now provides a joint statistics all over reports!
casr-afl now copies crashes next to reports, produces casr reports in parallel and prints casr-cli joint statistics!

#casr #aflplusplus

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
62 followers · 102 posts · Server infosec.exchange

Today is a good day! I decided to postpone my preparation for lectures and do more interesting things like . Several weeks ago, I finished the language crash course at . I couldn't say I'm a Go developer now, but LinkedIn has already offered some job vacancies (that's looks funny as for me🤣). But this story is about Go fuzzing. Before the new year, I succeeded in building libFuzzer target with go-fuzz for go-toml, but I failed in building target for symbolic executor. This target just needs to read raw file and feed it to FuzzToml function. I know, it sounds simple, but not for me, the person who only wrote Go code in browser:). But today, I have managed to build a target and start hybrid fuzzing with libFuzzer and Sydr! Now I want to find a victim: some some project that is not being fuzzed hard. I need to get some crashes to test our crash triage tool. How it deals with Go projects. If you have an idea about such a project, please let me know:).

#fuzzing #go #exercism #casr

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
61 followers · 100 posts · Server infosec.exchange

Just played a bit with Atheris. Looks very familiar, because I used libFuzzer before a lot. was as always helpful (400+ crashes narrowed down to 8 clusters). Some details of my experiments could be found here: github.com/ispras/oss-sydr-fuz
P.S. Do we have something similar to Atheris but based on @aflplusplus or ?

#casr #libafl #fuzzing #python

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
61 followers · 98 posts · Server infosec.exchange

@insanitybit I use @aflplusplus as fuzzer, sometimes libfuzzer. We have Sydr - a dynamic symbolic execution tool, and we have sydr-fuzz that provides integration between AFL++ and Sydr, but Sydr isn't open source (we have some research papers about Sydr and sydr-fuzz). From open source DSE, I'll recommend Fuzzolic. It's fast and has integration with AFL++. For crash triaging, I use github.com/ispras/casr. It also has integration with AFL++.

#casr

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
58 followers · 79 posts · Server infosec.exchange

I found out that using ‐C panic=abort for fuzz targets with @aflplusplus, for example, could produce more accurate and compact stacktraces for further triaging with .

#fuzzing #rust #casr

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
51 followers · 72 posts · Server infosec.exchange

Checkout new 2.3.0 release!!!
github.com/ispras/casr
- rust panic support in casr-san/casr-gdb
- c++ exceptions support in casr-san/casr-gdb
- casr-python for creating CASR reports from python crashes🔥​

P. S. Merry Christmas! ❄️​❄️​❄️​

#casr #fuzzing #afl #aflplusplus #python

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
33 followers · 35 posts · Server infosec.exchange

At last, new casr 2.2.0 release with casr-afl!!!
Triaging crashes found by @aflplusplus as simple as it could be:
$ cargo install casr
$ casr-afl -i afl-out -o casr-out
$ casr-cli casr-out/cl1/<report_name>

github.com/ispras/casr

#casr #fuzzing #afl #aflplusplus

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
33 followers · 35 posts · Server infosec.exchange

I just read paper. I'm so excited! @andreafioraldi @dmnk @aflplusplus @thc It's awesome! I also have already played with baby_fuzzers, so nice:)).
I definitely need to go deeper and build my own fuzzer! Also, I'm thinking about opportunities in integration with (github.com/ispras/casr).

#libafl #casr #fuzzing #rust

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
33 followers · 35 posts · Server infosec.exchange

I've just finished my work on casr-afl! Now it's possible to create casr crash reports from @aflplusplus output directory! Awaiting review, @VishnyaSweet ;). Here are some pics!
github.com/ispras/casr/pull/17

#casr #fuzzing #afl

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
33 followers · 35 posts · Server infosec.exchange

A little bit late for , but anyway:).
Hi! I'm a computer scientist interested in developing software analysis tools, programming languages and algorithms, dynamic symbolic execution and fuzzing, crash analysis and severity estimation of software bugs.
I work for the Compiler Technology Department at ISP RAS as a research team lead. I with my incredible team work on dynamic analysis tools (Sydr, sydr-fuzz) and crash triage tool github.com/ispras/casr . Also, we applying hybrid fuzzing approaches to open source software and found 80+ bugs already (github.com/ispras/oss-sydr-fuz).
My Ph.D thesis is dedicated to automated exploit generation using dynamic symbolic execution, but now I focused on hybrid fuzzing:).
My first steps in computer science (it was at school) I made due to cracking tutorials by Ricardo Narvaja (they are awesome!).

#introduction #casr

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
14 followers · 16 posts · Server infosec.exchange

About half a year ago we began our work in improving security for machine learning frameworks (TensorFlow, PyTorch) by applying static and dynamic analysis. We managed to fix some warnings generated by Svace static analyzer:
github.com/tensorflow/tensorfl
github.com/pytorch/pytorch/pul
There are still a lot of warrings awaiting to be analyzed, but this work is going on step by step.
Applying dynamic analysis (fuzzing) to machine learning frameworks it is not an easy task. There are many nice fuzz targets in TensorFlow, and it is already well fuzzed by github.com/google/oss-fuzz. We applied successfully -fuzz to TensorFlow. It was very nice to see that DSE helps fuzzer on a such complex target. After several runs of fuzzing in our CI system, we managed to find an interesting infinite loop: github.com/tensorflow/tensorfl.
I couldn't say was it due to dynamic symbolic execution or we were just so highly motivated:).
Applying hybrid fuzzing to PyTorch, we had to develop fuzz targets from scratch. Of course, new fuzz targets produce lots of crashes. Thanks to (github.com/ispras/casr) we managed to convert them into several bugs (github.com/ispras/oss-sydr-fuz). Lot's of interesting parsing that could be fuzzed is located in torchvision. We focused on image parsing (github.com/pytorch/vision/pull). All fuzz targets for PyTorch and TorchVision could be find here: github.com/ispras/oss-sydr-fuz.
We are open for some new ideas about fuzzing TensorFlow and PyTorch!

#sydr #casr #fuzzing #machinelearning #tensorflow #pytorch

Last updated 2 years ago

Andrey Fedotov · @anfedotoff
14 followers · 16 posts · Server infosec.exchange

Two years ago we started to develop our dynamic analysis tools: Sydr (Dynamic symbolic executor), sydr-fuzz (hybrid fuzzer), CASR (crash triage tool, open-sourced). At first we needed to answer an important question: which program language to choose?
Sydr is based on Triton (c++), and DynamoRIO (C), so the answer was easy, we chose C++ and a little bit C. But what is about sydr-fuzz & CASR? This tools are written from scratch.
My colleague and friend told me about Rust. He was very found of this language and already used it in his work. Rust attracted me from the beginning. And I decided that sydr-fuzz and CASR would be written in Rust. Although it was hard decision, because neither me nor my team haven't been familiar with this language. But it was the right choice!
Rust provide not only safety and performance, but very cool std and core libs, that have many useful APIs. Very powerful package manager : cargo, with linters (cargo clippy), formater (cargo fmt), or even fuzzers (cargo fuzz). When you write code in Rust, you spend less time for debugging it. As the result you get working tools faster and they are still safe and stable!

#rust #fuzzing #casr

Last updated 2 years ago