SlideShare a Scribd company logo
1 of 81
Download to read offline
Scalable and Effective Fuzzing
of Google Chrome Browser
Positive Hack Days VI
Moscow, 17-18 May 2016
Max Moroz, Google
● Google Chrome Security team, Bugs--
● BalalaikaCr3w, LC↯BC
● CTF, BugBounty, etc
Bio
2
1. ClusterFuzz overview
2. Memory Debugging Tools
3. LibFuzzer
4. Bugs statistics
5. Vulnerability Reward Program
6. Get some $$$ with ClusterFuzz
Agenda
3
A software testing technique, often
automated or semi-automated,
that involves passing invalid,
unexpected or random input to a
program and monitor result for
crashes, failed assertions, races,
leaks, etc.
Definition: Fuzzing
4
The Big 3s in Fuzzing
5
Fuzzers Memory Tools Scale
Know
WHERE
to
reach
Know
WHEN
you
reached
Know
HOW
to
reach
FASTER
6
ClusterFuzz overview
Suppliers of Chrome vulns
7
ClusterFuzz
8
BackendFrontend
Bots
Builder Bots
1. Trunk (Release (-
O2+-O1), Debug)
2. Stable, Beta
Sync Bots using
GlusterFS
1. Fuzzer Data
bundles
2. Build Cache
3. Code Coverage
Local Storage
1. Tests
2. Fuzzers
3. Some Fuzzer
Data Bundles
4. Builds
Google Cloud
Storage
Blobstore
1. Custom Binaries
2. Crash testcases
3. User uploaded testcases
4. Fuzzers
5. Small data bundles
Task Pull
Queue
High replication datastore
All the metadata - Jobs, Crash
List, Crash Stats, Fuzzers, Bot
tasks, Bot heartbeats, etc
Tasks
1. Fuzz
2. Minimize
3. Impact
4. Regression
5. Fixed
6. Sheriff
7. Coverage
ClusterFuzz
UI
Appengine Google Compute Engine and Chrome Lab
1. Automated crash detection, analysis and management
2. Fully reproducible and minimized testcases
3. Real-time regression and fixed testing
ClusterFuzz: Goals
9
ClusterFuzz: Goals
10
ClusterFuzz: Life of a Crash
11
Find Actionable, Reproducible and Minimized Tests
Verify
Test Deduplication, Regresse, Production ImpactAnalyze
Fixed, Merged, Released
Prevent Regressions
12
Goal 1:
Crash automation & management
Fuzzer Types
13
Generation Based
Generate from scratch with
no prior state
Example
https://bugs.webkit.org/show_bug.cgi?id=60831
<script>
document.body = document.createElement(‘iframe’);
</script>
Fuzzer Types
14
Mutation Based
Mutate existing state
based on some rules
Example
crbug.com/552046
--- orig.pdf
+++ crash.pdf
@@ -57,7 +57,7 @@
/DecodeParms [null 8 0 R]
/Type /XObject
/Width 1760
-/Filter [/FlateDecode /DCTDecode]
+/Filter [/JBIG2Decode /DCTDecode]
/Height 1248
/Length 2277
Fuzzer Types
15
Evolutionary
Generation or mutation
based or both, in-process
with code coverage
feedback
Example
crbug.com/575205
SELECT'xef(xfb;
DSx1aLEETABLxfeES'REGEXP';0ttC LE|A*
(xc8*.+!*)*h*00x0b$T''&'
● Setup build {trunk}, run application with test
● Choose params
● Gestures, tool settings, timeout multiplier, window
location+size, etc.
● Figure out resource dependencies
● Test for reproducibility
● Test for duplicates
● Store crash, coverage, stats, etc
Infrastructure
16
● Disable inline frames (-inlining in llvm-symbolizer)
● Crash_type - e.g. “Heap-buffer-overflow READ 2”
● Crash_state - top 3 frames
● +namespaces, -line_numbers
● E.g.
● WebCore::SVGDocumentExtensions::removeAnimationElement
● WebCore::SVGSMILElement::removedFrom
● WebCore::ContainerNode::removeChild
● security_flag
Testcase Duplication Check
17
Code Coverage: Aggregate View Sample
18
Scale, Scale and Scale (in cores)
19
12k
5k
Linux
4k
Android x86
200+
Android devices
3k
Windows
20
Mac
{wip}
iOS
20
Goal 2:
Fully reproducible and minimized
testcases
● Same bot configuration as crash
● Multi-threaded minimization based on Delta Debugging
● Custom minimizers for some file types
● + Gesture minimization
● + Resource minimization
● + Tool settings correction (redzone {asan}, history size
{tsan}, origins {msan}, etc)
Fully reproducible & minimized tests
21
● Tokenize the input
● Generate hypotheses that certain groups of tokens are not
required for the crash
● Test hypotheses by running the test with the tokens from the
hypothesis removed
● If it crashes, removing them was fine
● If not, try breaking it into smaller groups
How does the minimizer work?
22
● Stack trace with default redzone (128)
==9485== ERROR: AddressSanitizer heap-use-after-free on address
0x7f8f653ff11e at
pc 0x7f8f849fbb10 bp 0x7f8f5514a0a0 sp 0x7f8f5514a098
READ of size 2 at 0x7f8f653ff11e thread T14
#0 0x7f8f849fbb10 in WTF::charactersToIntStrict(unsigned short const*,
unsigned long, bool*, int)
#1 0x7f8f8589d863 in WebCore::InlineTextBox::isLineBreak() const
#2 0x7f8f858a771d in WebCore::InlineTextBox::containsCaretOffset(int)
● Actual stack trace with bigger redzone (1024 / 2048)
==14334== ERROR: AddressSanitizer heap-buffer-overflow on address
0x7f7e42b9b81c
at pc 0x7f7e8f79a6ca bp 0x7f7e3cc30040 sp 0x7f7e3cc30038
READ of size 2 at 0x7f7e42b9b81c thread T15
#0 0x7f7e8f79a6ca in WebCore::InlineTextBox::isLineBreak() const
#1 0x7f7e8f7abddd in WebCore::InlineTextBox::containsCaretOffset(int)
const
#2 0x7f7e8e06b19d in WebCore::Position::inRenderedText() const
Tools Settings Correction: ASAN example
crbug.com/118662
23
24
Goal 3:
Real-time regression and fixed testing
● Use LKGR builds archived on Google Cloud
● Account for bad builds / startup crashes
● Use a LOOK_BEHIND_WINDOW
● If previous step failed, then use binary bisect
● Use FindIt to find culprit changelist
Real-time regression and fixed testing
25
● Manual owner triage is usually …
● Slow
● Inaccurate
● Complex
● From factors such as refactorings, size of regression range, etc
FindIt: Culprit CL Finder
26
1. Parse the stacktrace
FindIt: How it works
27
2. Parse the changelog(s) in the regression range
FindIt: How it works
28
3. Generate a list of suspected CLs, and sort / filter the results
FindIt: How it works
29
4. Show blame information if no results are available
FindIt: How it works
30
FindIt: How it works
31
32
ClusterFuzz: Sample
Testcase Report
33
FindIt: Culprit CL Finder
34
Filed bug: crbug.com/430925
35
Patched + Verified: < 1 day
36
Or not patched...
37
38
Memory Debugging Tools
Memory Debugging Tools
39
Tool  OS Android Chrome OS Linux OS X Windows
ASan + + + + +
MSan +
UBSan +
TSan +
LSan +
CFI +
SyzyASAN +
DrFuzz +
DrMemory +
● AddressSanitizer (aka ASan)
● Detects use-after-free, buffer overflows (heap, stack, globals),
stack-use-after-return, container-overflow
● Cpu: 2x, memory 1.5x-3x
● ThreadSanitizer (aka TSan)
● Detects data races, esp on use-after-frees. Object vtpr
● Cpu: 4x-10x, memory: 5x-8x
Memory Debugging Tools
40
● MemorySanitizer (aka MSan)
● Detects uninitialized memory reads
● Cpu: 3x, memory: 2x
● Special mode: origins
● UndefinedBehaviorSanitizer (aka UBSan)
● Detects several classes of bugs (19?), esp on type confusion,
signed-integer-overflow, undefined shift, etc.
● Cpu: 10-50%
● Memory: ~1x (no allocator, no shadow)
Memory Debugging Tools
41
● Others
● SyzyASAN
● DrFuzz
● DrMemory
Memory Debugging Tools
42
● Container-overflow (ASan):
#include <vector>
#include <assert.h>
typedef long T;
int main() {
std::vector<T> v;
v.push_back(0);
v.push_back(1);
v.push_back(2);
assert(v.capacity() >= 4);
assert(v.size() == 3);
T *p = &v[0];
// Here the memory is accessed inside a heap-allocated buffer
// but outside of the region `[v.begin(), v.end())`.
return p[3]; // OOPS.
}
Memory Debugging Tools: Examples
43
44
LibFuzzer
● Fuzzing very wide scope
● Cannot fuzz specific function
● Hard to fuzz network protocols
● Speed of regular fuzzers (html, css, dom, etc mutators):
● From ~30K to ~2.5M testcases per week
● Regular fuzzers are great, but not enough...
Problems of regular fuzzing of browsers
45
● More granulated fuzzing
● Faster fuzzing
● Smarter fuzzing
● Easier fuzzer writing
Goals
46
● In-process guided fuzz testing
● Very effective at function / protocol level
● It’s easy not hard to write a “target function”
● Can be checked along with unit-tests
● Maintained by Googlers :)
LibFuzzer
47
libFuzzer example [code]
48
#include <stdint.h>
#include "third_party/icu/source/i18n/unicode/regex.h"
// Entry point for LibFuzzer.
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
UParseError pe = { 0 };
UErrorCode status = U_ZERO_ERROR;
URegularExpression* re = uregex_open(reinterpret_cast<const UChar*>(data),
static_cast<int>(size) / sizeof(UChar),
0, &pe, &status);
if (re)
uregex_close(re);
return 0;
}
libFuzzer example [crash]
49
==19494==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x4d306d in icu_54::RegexCompile::doParseActions(int)
third_party/icu/source/i18n/regexcmp.cpp:1702:13
#1 0x4a1f3c in icu_54::RegexCompile::compile(UText*, UParseError&,
UErrorCode&) third_party/icu/source/i18n/regexcmp.cpp:228:13
#2 0x5fc98e in icu_54::RegexPattern::compile(UText*, unsigned int,
UParseError&, UErrorCode&) third_party/icu/source/i18n/repattrn.cpp:357:5
#3 0x601be7 in uregex_open_54 third_party/icu/source/i18n/uregex.cpp:155:20
#4 0x49dc3f in LLVMFuzzerTestOneInput
testing/libfuzzer/fuzzers/icu_uregex_open_fuzzer.cc:13:28
Uninitialized value was created by an allocation of compiler in the stack frame
of function _ZN6icu_5412RegexPattern7compileEP5UTextjR11UParseErrorR10UErrorCode
#0 0x5fc220 in icu_54::RegexPattern::compile(UText*, unsigned int,
UParseError&, UErrorCode&) third_party/icu/source/i18n/repattrn.cpp:325
● Dictionaries
● Seed corpus
● Custom mutators
● Coverage visualisation
Ways to improve a libFuzzer
50
● dictionary and custom options for ICU uregex_open() fuzzer:
○ coverage ↑ 25+%
● dictionary for libxml fuzzer:
○ 5 new security bugs
● dictionary and seed corpus for libpng fuzzer:
○ coverage ↑↑↑ 70+%
Dictionaries are awesome!
51
52
53
54
55
● Timeout (DoS)
● Heap-buffer-overflow
● Use-of-uninitialized-value
● Heap-buffer-overflow
● Heap-buffer-overflow
sqlite3 fuzzer with dictionary at ClusterFuzz
56
● ASan, MSan, UBSan builds
● Corpus Synchronization with Google Cloud Storage
● Support for dictionaries and custom runtime options
● Automated exploitability scoring for crashes
● Statistics dashboard
LibFuzzer & ClusterFuzz
57
● ~85 target functions for Chromium
● 88 bugs filed
○ 46 security bugs
● 700 GCE bots running target functions at ClusterFuzz 24/7
● ~310 billion testcases daily
● ~8,000 corpus synchronization jobs daily
● From ~200k to ~800k corpus files
● Best coverage: 100.00% of funcs, 89.32% of edges
Numbers
58
● 200+ bugs in third party, Google, other software
● http://llvm.org/docs/LibFuzzer.html#trophies:
Trophies of LibFuzzer outside of Chrome
59
● Slow inputs and timeouts
● Out-of-memory with valid inputs
● You have to improve / refresh some fuzzers
● Stuck at easy crashes
Problems
60
Example: 10 lines fuzzer
61
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
{
auto var = xxxxxxxxxxxxxx(data, size, NULL, 0);
if (var) {
xxxxxxxxxx_Free(var);
}
return 0;
}
Example: 10 lines fuzzer ⇨ 10+ bugs
62
● Memory leak
● 7 × Heap-buffer-overflow
● Timeout (DoS)
● Heap-based buffer-underreads
● Heap-based buffer overread
● Undesired side effects
Self-fuzzing!
63
WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x56b2594 in fuzzer::Fuzzer::AlarmCallback()
third_party/llvm/lib/Fuzzer/FuzzerLoop.cpp:138:7
<...>
#9 0x56abbb7 in fuzzer::FileToVector() third_party/llvm/lib/Fuzzer/FuzzerIO.cpp:
65:3
<...>
#14 0x56a08a8 in main third_party/llvm/lib/Fuzzer/FuzzerMain.cpp:25:10
Uninitialized value was created by an allocation of 'F.i' in the stack frame of
function '_ZN6fuzzer12FuzzerDriverEiPPcPFiPKhmE'
#0 0x56a1040 in fuzzer::FuzzerDriver()
third_party/llvm/lib/Fuzzer/FuzzerDriver.cpp:395
64
● The same target function
● Shared corpus:
● Need to be pruned or minimized on regular basis
● Different mutations:
● When one fuzzer got stuck, another one may help
● PoC is ready:
● https://github.com/llvm-mirror/llvm/blob/master/lib/Fuzzer/afl/afl_driver.cpp
● Work in progress
Multiple fuzzing engines approach
65
66
return 0;
67
Bugs statistics
Bugs statistics
68
69
Bugs statistics
70
Bugs statistics
71
Vulnerability Reward Program
● Reporter submits a bug on crbug.com
● Bug gets fixed
● Reward panel determines reward based on table and precedent
● Reporter gets cash money
Chromium VRP: high level process
72
Reward amounts
73 https://www.google.com/about/appsecurity/chrome-rewards/index.html
Recent updates
74 https://www.google.com/about/appsecurity/chrome-rewards/index.html
● Max reward: $50,000 ⇨ $100,000:
● compromise a Chromebook or Chromebox with device persistence in guest
mode (i.e. guest to guest persistence with interim reboot, delivered via a web page)
● Download Protection bypass (i.e. SafeBrowsing) *:
● Baseline: $0 - $500
● High-quality report: $1,000
* Landing a blacklisted test binary on disk where a typical user could execute it, on Mac
or Windows. The file type on disk must lead to non-sandboxed code execution after
minimal user interaction with the file.
Chromium VRP stats
75
● Over $500,000 paid out last year
● More than $2,500,000 in rewards since 2010
● Median payment went from $2,000 to $3,000
● Top 0x05 reporters take ~70% of the earnings
76
Trusted Researcher Program
ClusterFuzz’s first days...
77
ClusterFuzz now
78
● Invitation-only
● Skilled fuzzer developers
● Fuzz at Google scale
● Get 100% of the reward for bugs + $500 bonus:
● Bugs shouldn’t be found by our* fuzzers within 48 hours
● *our - written by Googlers
● Target functions for LibFuzzer are also in scope!
How to get an invite?
● Submit at least one bug found by one of your fuzzers
● mailto:mmoroz@chromium.org
Trusted Researcher program
79
https://www.google.com/about/appsecurity/chrome-rewards/index.html
http://www.chromium.org/Home/chromium-security/bugs/developing-fuzzers-for-clusterfuzz
● More than $120,000 paid out for 2014-2015
● Rewards in range: $500 - $4,500
Stats
80
Thank you
Contacts
● email: mmoroz@chromium.org
● twitter: @dor3s
● telegram: @dor1s
Q & A
81

More Related Content

What's hot

CrySys guest-lecture: Virtual machine introspection on modern hardware
CrySys guest-lecture: Virtual machine introspection on modern hardwareCrySys guest-lecture: Virtual machine introspection on modern hardware
CrySys guest-lecture: Virtual machine introspection on modern hardwareTamas K Lengyel
 
Hacktivity2014: Virtual Machine Introspection to Detect and Protect
Hacktivity2014: Virtual Machine Introspection to Detect and ProtectHacktivity2014: Virtual Machine Introspection to Detect and Protect
Hacktivity2014: Virtual Machine Introspection to Detect and ProtectTamas K Lengyel
 
Virtual Machine Introspection with Xen
Virtual Machine Introspection with XenVirtual Machine Introspection with Xen
Virtual Machine Introspection with XenTamas K Lengyel
 
OffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with XenOffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with XenTamas K Lengyel
 
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)Shota Shinogi
 
Crash dump analysis - experience sharing
Crash dump analysis - experience sharingCrash dump analysis - experience sharing
Crash dump analysis - experience sharingJames Hsieh
 
Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2Luis Grangeia
 
Sheila Ayelen Berta - The Art of Persistence: "Mr. Windows… I don’t wanna go ...
Sheila Ayelen Berta - The Art of Persistence: "Mr. Windows… I don’t wanna go ...Sheila Ayelen Berta - The Art of Persistence: "Mr. Windows… I don’t wanna go ...
Sheila Ayelen Berta - The Art of Persistence: "Mr. Windows… I don’t wanna go ...RootedCON
 
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...Igor Korkin
 
Security research over Windows #defcon china
Security research over Windows #defcon chinaSecurity research over Windows #defcon china
Security research over Windows #defcon chinaPeter Hlavaty
 
Csw2017 bazhaniuk exploring_yoursystemdeeper_updated
Csw2017 bazhaniuk exploring_yoursystemdeeper_updatedCsw2017 bazhaniuk exploring_yoursystemdeeper_updated
Csw2017 bazhaniuk exploring_yoursystemdeeper_updatedCanSecWest
 
syzbot and the tale of million kernel bugs
syzbot and the tale of million kernel bugssyzbot and the tale of million kernel bugs
syzbot and the tale of million kernel bugsDmitry Vyukov
 
Cloud Security with LibVMI
Cloud Security with LibVMICloud Security with LibVMI
Cloud Security with LibVMITamas K Lengyel
 
[CB16] COFI break – Breaking exploits with Processor trace and Practical cont...
[CB16] COFI break – Breaking exploits with Processor trace and Practical cont...[CB16] COFI break – Breaking exploits with Processor trace and Practical cont...
[CB16] COFI break – Breaking exploits with Processor trace and Practical cont...CODE BLUE
 
Pitfalls of virtual machine introspection on modern hardware
Pitfalls of virtual machine introspection on modern hardwarePitfalls of virtual machine introspection on modern hardware
Pitfalls of virtual machine introspection on modern hardwareTamas K Lengyel
 
Automated Malware Analysis and Cyber Security Intelligence
Automated Malware Analysis and Cyber Security IntelligenceAutomated Malware Analysis and Cyber Security Intelligence
Automated Malware Analysis and Cyber Security IntelligenceJason Choi
 
Shall we play a game?
Shall we play a game?Shall we play a game?
Shall we play a game?Maciej Lasyk
 
We shall play a game....
We shall play a game....We shall play a game....
We shall play a game....Sadia Textile
 

What's hot (20)

CrySys guest-lecture: Virtual machine introspection on modern hardware
CrySys guest-lecture: Virtual machine introspection on modern hardwareCrySys guest-lecture: Virtual machine introspection on modern hardware
CrySys guest-lecture: Virtual machine introspection on modern hardware
 
Hacktivity2014: Virtual Machine Introspection to Detect and Protect
Hacktivity2014: Virtual Machine Introspection to Detect and ProtectHacktivity2014: Virtual Machine Introspection to Detect and Protect
Hacktivity2014: Virtual Machine Introspection to Detect and Protect
 
Virtual Machine Introspection with Xen
Virtual Machine Introspection with XenVirtual Machine Introspection with Xen
Virtual Machine Introspection with Xen
 
OffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with XenOffensiveCon2022: Case Studies of Fuzzing with Xen
OffensiveCon2022: Case Studies of Fuzzing with Xen
 
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
Introduction of ShinoBOT (Black Hat USA 2013 Arsenal)
 
Crash dump analysis - experience sharing
Crash dump analysis - experience sharingCrash dump analysis - experience sharing
Crash dump analysis - experience sharing
 
Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2Reverse Engineering the TomTom Runner pt. 2
Reverse Engineering the TomTom Runner pt. 2
 
Sheila Ayelen Berta - The Art of Persistence: "Mr. Windows… I don’t wanna go ...
Sheila Ayelen Berta - The Art of Persistence: "Mr. Windows… I don’t wanna go ...Sheila Ayelen Berta - The Art of Persistence: "Mr. Windows… I don’t wanna go ...
Sheila Ayelen Berta - The Art of Persistence: "Mr. Windows… I don’t wanna go ...
 
ShinoBOT Suite
ShinoBOT SuiteShinoBOT Suite
ShinoBOT Suite
 
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
 
Security research over Windows #defcon china
Security research over Windows #defcon chinaSecurity research over Windows #defcon china
Security research over Windows #defcon china
 
Csw2017 bazhaniuk exploring_yoursystemdeeper_updated
Csw2017 bazhaniuk exploring_yoursystemdeeper_updatedCsw2017 bazhaniuk exploring_yoursystemdeeper_updated
Csw2017 bazhaniuk exploring_yoursystemdeeper_updated
 
syzbot and the tale of million kernel bugs
syzbot and the tale of million kernel bugssyzbot and the tale of million kernel bugs
syzbot and the tale of million kernel bugs
 
Cloud Security with LibVMI
Cloud Security with LibVMICloud Security with LibVMI
Cloud Security with LibVMI
 
[CB16] COFI break – Breaking exploits with Processor trace and Practical cont...
[CB16] COFI break – Breaking exploits with Processor trace and Practical cont...[CB16] COFI break – Breaking exploits with Processor trace and Practical cont...
[CB16] COFI break – Breaking exploits with Processor trace and Practical cont...
 
Pitfalls of virtual machine introspection on modern hardware
Pitfalls of virtual machine introspection on modern hardwarePitfalls of virtual machine introspection on modern hardware
Pitfalls of virtual machine introspection on modern hardware
 
Automated Malware Analysis and Cyber Security Intelligence
Automated Malware Analysis and Cyber Security IntelligenceAutomated Malware Analysis and Cyber Security Intelligence
Automated Malware Analysis and Cyber Security Intelligence
 
Shall we play a game?
Shall we play a game?Shall we play a game?
Shall we play a game?
 
Shall we play a game?
Shall we play a game?Shall we play a game?
Shall we play a game?
 
We shall play a game....
We shall play a game....We shall play a game....
We shall play a game....
 

Viewers also liked

Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...Positive Hack Days
 
Fuzzing: The New Unit Testing
Fuzzing: The New Unit TestingFuzzing: The New Unit Testing
Fuzzing: The New Unit TestingDmitry Vyukov
 
Discovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitDiscovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitAbhisek Datta
 
Ковбой Энди, Рик Декард и другие охотники за наградой
Ковбой Энди, Рик Декард и другие охотники за наградойКовбой Энди, Рик Декард и другие охотники за наградой
Ковбой Энди, Рик Декард и другие охотники за наградойPositive Hack Days
 
Flash умер. Да здравствует Flash!
Flash умер. Да здравствует Flash!Flash умер. Да здравствует Flash!
Flash умер. Да здравствует Flash!Positive Hack Days
 
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Positive Hack Days
 
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...Positive Hack Days
 
Сообщество DevOpsHQ: идеология и инструменты | Александр Паздников
Сообщество DevOpsHQ: идеология и инструменты | Александр ПаздниковСообщество DevOpsHQ: идеология и инструменты | Александр Паздников
Сообщество DevOpsHQ: идеология и инструменты | Александр ПаздниковPositive Hack Days
 
Экспресс-анализ вредоносов / Crowdsourced Malware Triage
Экспресс-анализ вредоносов / Crowdsourced Malware TriageЭкспресс-анализ вредоносов / Crowdsourced Malware Triage
Экспресс-анализ вредоносов / Crowdsourced Malware TriagePositive Hack Days
 
Fingerprinting and Attacking a Healthcare Infrastructure
Fingerprinting and Attacking a Healthcare InfrastructureFingerprinting and Attacking a Healthcare Infrastructure
Fingerprinting and Attacking a Healthcare InfrastructurePositive Hack Days
 
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПОВосток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПОPositive Hack Days
 
Аспекты деятельности инсайдеров на предприятии
Аспекты деятельности инсайдеров на предприятииАспекты деятельности инсайдеров на предприятии
Аспекты деятельности инсайдеров на предприятииPositive Hack Days
 
Janitor to CISO in 360 Seconds: Exploiting Mechanical Privilege Escalation
Janitor to CISO in 360 Seconds: Exploiting Mechanical Privilege EscalationJanitor to CISO in 360 Seconds: Exploiting Mechanical Privilege Escalation
Janitor to CISO in 360 Seconds: Exploiting Mechanical Privilege EscalationPositive Hack Days
 
Эксплуатируем неэксплуатируемые уязвимости SAP
Эксплуатируем неэксплуатируемые уязвимости SAPЭксплуатируем неэксплуатируемые уязвимости SAP
Эксплуатируем неэксплуатируемые уязвимости SAPPositive Hack Days
 
Боремся с читингом в онлайн-играх
Боремся с читингом в онлайн-играхБоремся с читингом в онлайн-играх
Боремся с читингом в онлайн-играхPositive Hack Days
 
NFC: Naked Fried Chicken / Пентест NFC — вот что я люблю
NFC: Naked Fried Chicken / Пентест NFC — вот что я люблюNFC: Naked Fried Chicken / Пентест NFC — вот что я люблю
NFC: Naked Fried Chicken / Пентест NFC — вот что я люблюPositive Hack Days
 
Magic Box, или Как пришлось сломать банкоматы, чтобы их спасти
Magic Box, или Как пришлось сломать банкоматы, чтобы их спастиMagic Box, или Как пришлось сломать банкоматы, чтобы их спасти
Magic Box, или Как пришлось сломать банкоматы, чтобы их спастиPositive Hack Days
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptPositive Hack Days
 
DNS как линия защиты/DNS as a Defense Vector
DNS как линия защиты/DNS as a Defense VectorDNS как линия защиты/DNS as a Defense Vector
DNS как линия защиты/DNS as a Defense VectorPositive Hack Days
 

Viewers also liked (20)

Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
Если нашлась одна ошибка — есть и другие. Один способ выявить «наследуемые» у...
 
Fuzzing: The New Unit Testing
Fuzzing: The New Unit TestingFuzzing: The New Unit Testing
Fuzzing: The New Unit Testing
 
Discovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and ProfitDiscovering Vulnerabilities For Fun and Profit
Discovering Vulnerabilities For Fun and Profit
 
Ковбой Энди, Рик Декард и другие охотники за наградой
Ковбой Энди, Рик Декард и другие охотники за наградойКовбой Энди, Рик Декард и другие охотники за наградой
Ковбой Энди, Рик Декард и другие охотники за наградой
 
Flash умер. Да здравствует Flash!
Flash умер. Да здравствует Flash!Flash умер. Да здравствует Flash!
Flash умер. Да здравствует Flash!
 
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
 
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
 
Сообщество DevOpsHQ: идеология и инструменты | Александр Паздников
Сообщество DevOpsHQ: идеология и инструменты | Александр ПаздниковСообщество DevOpsHQ: идеология и инструменты | Александр Паздников
Сообщество DevOpsHQ: идеология и инструменты | Александр Паздников
 
Tapping into the core
Tapping into the coreTapping into the core
Tapping into the core
 
Экспресс-анализ вредоносов / Crowdsourced Malware Triage
Экспресс-анализ вредоносов / Crowdsourced Malware TriageЭкспресс-анализ вредоносов / Crowdsourced Malware Triage
Экспресс-анализ вредоносов / Crowdsourced Malware Triage
 
Fingerprinting and Attacking a Healthcare Infrastructure
Fingerprinting and Attacking a Healthcare InfrastructureFingerprinting and Attacking a Healthcare Infrastructure
Fingerprinting and Attacking a Healthcare Infrastructure
 
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПОВосток — дело тонкое, или Уязвимости медицинского и индустриального ПО
Восток — дело тонкое, или Уязвимости медицинского и индустриального ПО
 
Аспекты деятельности инсайдеров на предприятии
Аспекты деятельности инсайдеров на предприятииАспекты деятельности инсайдеров на предприятии
Аспекты деятельности инсайдеров на предприятии
 
Janitor to CISO in 360 Seconds: Exploiting Mechanical Privilege Escalation
Janitor to CISO in 360 Seconds: Exploiting Mechanical Privilege EscalationJanitor to CISO in 360 Seconds: Exploiting Mechanical Privilege Escalation
Janitor to CISO in 360 Seconds: Exploiting Mechanical Privilege Escalation
 
Эксплуатируем неэксплуатируемые уязвимости SAP
Эксплуатируем неэксплуатируемые уязвимости SAPЭксплуатируем неэксплуатируемые уязвимости SAP
Эксплуатируем неэксплуатируемые уязвимости SAP
 
Боремся с читингом в онлайн-играх
Боремся с читингом в онлайн-играхБоремся с читингом в онлайн-играх
Боремся с читингом в онлайн-играх
 
NFC: Naked Fried Chicken / Пентест NFC — вот что я люблю
NFC: Naked Fried Chicken / Пентест NFC — вот что я люблюNFC: Naked Fried Chicken / Пентест NFC — вот что я люблю
NFC: Naked Fried Chicken / Пентест NFC — вот что я люблю
 
Magic Box, или Как пришлось сломать банкоматы, чтобы их спасти
Magic Box, или Как пришлось сломать банкоматы, чтобы их спастиMagic Box, или Как пришлось сломать банкоматы, чтобы их спасти
Magic Box, или Как пришлось сломать банкоматы, чтобы их спасти
 
Waf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScriptWaf.js: как защищать веб-приложения с использованием JavaScript
Waf.js: как защищать веб-приложения с использованием JavaScript
 
DNS как линия защиты/DNS as a Defense Vector
DNS как линия защиты/DNS as a Defense VectorDNS как линия защиты/DNS as a Defense Vector
DNS как линия защиты/DNS as a Defense Vector
 

Similar to Масштабируемый и эффективный фаззинг Google Chrome

How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...bugcrowd
 
DEFCON 23 - Jason Haddix - how do i shot web
DEFCON 23 - Jason Haddix - how do i shot webDEFCON 23 - Jason Haddix - how do i shot web
DEFCON 23 - Jason Haddix - how do i shot webFelipe Prado
 
Kettunen, miaubiz fuzzing at scale and in style
Kettunen, miaubiz   fuzzing at scale and in styleKettunen, miaubiz   fuzzing at scale and in style
Kettunen, miaubiz fuzzing at scale and in styleDefconRussia
 
Using Guided Missiles in Drive-bys: Automatic Browser Fingerprinting and Expl...
Using Guided Missiles in Drive-bys: Automatic Browser Fingerprinting and Expl...Using Guided Missiles in Drive-bys: Automatic Browser Fingerprinting and Expl...
Using Guided Missiles in Drive-bys: Automatic Browser Fingerprinting and Expl...egypt
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone CivettaCocoaHeads France
 
Fluent 2018: When third parties stop being polite... and start getting real
Fluent 2018: When third parties stop being polite... and start getting realFluent 2018: When third parties stop being polite... and start getting real
Fluent 2018: When third parties stop being polite... and start getting realAkamai Developers & Admins
 
When Third Parties Stop Being Polite... and Start Getting Real
When Third Parties Stop Being Polite... and Start Getting RealWhen Third Parties Stop Being Polite... and Start Getting Real
When Third Parties Stop Being Polite... and Start Getting RealNicholas Jansma
 
Black hat dc-2010-egypt-uav-slides
Black hat dc-2010-egypt-uav-slidesBlack hat dc-2010-egypt-uav-slides
Black hat dc-2010-egypt-uav-slidesBakry3
 
Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016bugcrowd
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the CloudJim Driscoll
 
When third parties stop being polite... and start getting real
When third parties stop being polite... and start getting realWhen third parties stop being polite... and start getting real
When third parties stop being polite... and start getting realCharles Vazac
 
Headless browser: puppeteer and git client : GitKraken
Headless browser: puppeteer and git client : GitKrakenHeadless browser: puppeteer and git client : GitKraken
Headless browser: puppeteer and git client : GitKrakenSheikhMoonwaraAnjumM
 
Unmanned Aerial Vehicles: Exploit Automation with the Metasploit Framework
Unmanned Aerial Vehicles: Exploit Automation with the Metasploit FrameworkUnmanned Aerial Vehicles: Exploit Automation with the Metasploit Framework
Unmanned Aerial Vehicles: Exploit Automation with the Metasploit Frameworkegypt
 
Become a GC Hero
Become a GC HeroBecome a GC Hero
Become a GC HeroTier1app
 
What’s eating python performance
What’s eating python performanceWhat’s eating python performance
What’s eating python performancePiotr Przymus
 
I got 99 trends and a # is all of them
I got 99 trends and a # is all of themI got 99 trends and a # is all of them
I got 99 trends and a # is all of themRoberto Suggi Liverani
 
25 Million Flows Later – Large-scale Detection of DOM-based XSS
25 Million Flows Later – Large-scale Detection of DOM-based XSS25 Million Flows Later – Large-scale Detection of DOM-based XSS
25 Million Flows Later – Large-scale Detection of DOM-based XSSBen Stock
 
Eko10 Workshop Opensource Database Auditing
Eko10  Workshop Opensource Database AuditingEko10  Workshop Opensource Database Auditing
Eko10 Workshop Opensource Database AuditingJuan Berner
 
Eko10 workshop - OPEN SOURCE DATABASE MONITORING
Eko10 workshop - OPEN SOURCE DATABASE MONITORINGEko10 workshop - OPEN SOURCE DATABASE MONITORING
Eko10 workshop - OPEN SOURCE DATABASE MONITORINGPablo Garbossa
 
Post-Mortem Debugging and Web Development
Post-Mortem Debugging and Web DevelopmentPost-Mortem Debugging and Web Development
Post-Mortem Debugging and Web DevelopmentAlessandro Molina
 

Similar to Масштабируемый и эффективный фаззинг Google Chrome (20)

How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
How to Shot Web - Jason Haddix at DEFCON 23 - See it Live: Details in Descrip...
 
DEFCON 23 - Jason Haddix - how do i shot web
DEFCON 23 - Jason Haddix - how do i shot webDEFCON 23 - Jason Haddix - how do i shot web
DEFCON 23 - Jason Haddix - how do i shot web
 
Kettunen, miaubiz fuzzing at scale and in style
Kettunen, miaubiz   fuzzing at scale and in styleKettunen, miaubiz   fuzzing at scale and in style
Kettunen, miaubiz fuzzing at scale and in style
 
Using Guided Missiles in Drive-bys: Automatic Browser Fingerprinting and Expl...
Using Guided Missiles in Drive-bys: Automatic Browser Fingerprinting and Expl...Using Guided Missiles in Drive-bys: Automatic Browser Fingerprinting and Expl...
Using Guided Missiles in Drive-bys: Automatic Browser Fingerprinting and Expl...
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
 
Fluent 2018: When third parties stop being polite... and start getting real
Fluent 2018: When third parties stop being polite... and start getting realFluent 2018: When third parties stop being polite... and start getting real
Fluent 2018: When third parties stop being polite... and start getting real
 
When Third Parties Stop Being Polite... and Start Getting Real
When Third Parties Stop Being Polite... and Start Getting RealWhen Third Parties Stop Being Polite... and Start Getting Real
When Third Parties Stop Being Polite... and Start Getting Real
 
Black hat dc-2010-egypt-uav-slides
Black hat dc-2010-egypt-uav-slidesBlack hat dc-2010-egypt-uav-slides
Black hat dc-2010-egypt-uav-slides
 
Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the Cloud
 
When third parties stop being polite... and start getting real
When third parties stop being polite... and start getting realWhen third parties stop being polite... and start getting real
When third parties stop being polite... and start getting real
 
Headless browser: puppeteer and git client : GitKraken
Headless browser: puppeteer and git client : GitKrakenHeadless browser: puppeteer and git client : GitKraken
Headless browser: puppeteer and git client : GitKraken
 
Unmanned Aerial Vehicles: Exploit Automation with the Metasploit Framework
Unmanned Aerial Vehicles: Exploit Automation with the Metasploit FrameworkUnmanned Aerial Vehicles: Exploit Automation with the Metasploit Framework
Unmanned Aerial Vehicles: Exploit Automation with the Metasploit Framework
 
Become a GC Hero
Become a GC HeroBecome a GC Hero
Become a GC Hero
 
What’s eating python performance
What’s eating python performanceWhat’s eating python performance
What’s eating python performance
 
I got 99 trends and a # is all of them
I got 99 trends and a # is all of themI got 99 trends and a # is all of them
I got 99 trends and a # is all of them
 
25 Million Flows Later – Large-scale Detection of DOM-based XSS
25 Million Flows Later – Large-scale Detection of DOM-based XSS25 Million Flows Later – Large-scale Detection of DOM-based XSS
25 Million Flows Later – Large-scale Detection of DOM-based XSS
 
Eko10 Workshop Opensource Database Auditing
Eko10  Workshop Opensource Database AuditingEko10  Workshop Opensource Database Auditing
Eko10 Workshop Opensource Database Auditing
 
Eko10 workshop - OPEN SOURCE DATABASE MONITORING
Eko10 workshop - OPEN SOURCE DATABASE MONITORINGEko10 workshop - OPEN SOURCE DATABASE MONITORING
Eko10 workshop - OPEN SOURCE DATABASE MONITORING
 
Post-Mortem Debugging and Web Development
Post-Mortem Debugging and Web DevelopmentPost-Mortem Debugging and Web Development
Post-Mortem Debugging and Web Development
 

More from Positive Hack Days

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesPositive Hack Days
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesPositive Hack Days
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive Hack Days
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQubePositive Hack Days
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Positive Hack Days
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для ApproofPositive Hack Days
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Positive Hack Days
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложенийPositive Hack Days
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложенийPositive Hack Days
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application SecurityPositive Hack Days
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летPositive Hack Days
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиPositive Hack Days
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОPositive Hack Days
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Hack Days
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CorePositive Hack Days
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опытPositive Hack Days
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterPositive Hack Days
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиPositive Hack Days
 

More from Positive Hack Days (20)

Инструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release NotesИнструмент ChangelogBuilder для автоматической подготовки Release Notes
Инструмент ChangelogBuilder для автоматической подготовки Release Notes
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Использование анализатора кода SonarQube
Использование анализатора кода SonarQubeИспользование анализатора кода SonarQube
Использование анализатора кода SonarQube
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
Методика определения неиспользуемых ресурсов виртуальных машин и автоматизаци...
 
Автоматизация построения правил для Approof
Автоматизация построения правил для ApproofАвтоматизация построения правил для Approof
Автоматизация построения правил для Approof
 
Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»Мастер-класс «Трущобы Application Security»
Мастер-класс «Трущобы Application Security»
 
Формальные методы защиты приложений
Формальные методы защиты приложенийФормальные методы защиты приложений
Формальные методы защиты приложений
 
Эвристические методы защиты приложений
Эвристические методы защиты приложенийЭвристические методы защиты приложений
Эвристические методы защиты приложений
 
Теоретические основы Application Security
Теоретические основы Application SecurityТеоретические основы Application Security
Теоретические основы Application Security
 
От экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 летОт экспериментального программирования к промышленному: путь длиной в 10 лет
От экспериментального программирования к промышленному: путь длиной в 10 лет
 
Уязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на граблиУязвимое Android-приложение: N проверенных способов наступить на грабли
Уязвимое Android-приложение: N проверенных способов наступить на грабли
 
Требования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПОТребования по безопасности в архитектуре ПО
Требования по безопасности в архитектуре ПО
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Механизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET CoreМеханизмы предотвращения атак в ASP.NET Core
Механизмы предотвращения атак в ASP.NET Core
 
SOC для КИИ: израильский опыт
SOC для КИИ: израильский опытSOC для КИИ: израильский опыт
SOC для КИИ: израильский опыт
 
Honeywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services CenterHoneywell Industrial Cyber Security Lab & Services Center
Honeywell Industrial Cyber Security Lab & Services Center
 
Credential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атакиCredential stuffing и брутфорс-атаки
Credential stuffing и брутфорс-атаки
 

Recently uploaded

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 

Масштабируемый и эффективный фаззинг Google Chrome

  • 1. Scalable and Effective Fuzzing of Google Chrome Browser Positive Hack Days VI Moscow, 17-18 May 2016 Max Moroz, Google
  • 2. ● Google Chrome Security team, Bugs-- ● BalalaikaCr3w, LC↯BC ● CTF, BugBounty, etc Bio 2
  • 3. 1. ClusterFuzz overview 2. Memory Debugging Tools 3. LibFuzzer 4. Bugs statistics 5. Vulnerability Reward Program 6. Get some $$$ with ClusterFuzz Agenda 3
  • 4. A software testing technique, often automated or semi-automated, that involves passing invalid, unexpected or random input to a program and monitor result for crashes, failed assertions, races, leaks, etc. Definition: Fuzzing 4
  • 5. The Big 3s in Fuzzing 5 Fuzzers Memory Tools Scale Know WHERE to reach Know WHEN you reached Know HOW to reach FASTER
  • 8. ClusterFuzz 8 BackendFrontend Bots Builder Bots 1. Trunk (Release (- O2+-O1), Debug) 2. Stable, Beta Sync Bots using GlusterFS 1. Fuzzer Data bundles 2. Build Cache 3. Code Coverage Local Storage 1. Tests 2. Fuzzers 3. Some Fuzzer Data Bundles 4. Builds Google Cloud Storage Blobstore 1. Custom Binaries 2. Crash testcases 3. User uploaded testcases 4. Fuzzers 5. Small data bundles Task Pull Queue High replication datastore All the metadata - Jobs, Crash List, Crash Stats, Fuzzers, Bot tasks, Bot heartbeats, etc Tasks 1. Fuzz 2. Minimize 3. Impact 4. Regression 5. Fixed 6. Sheriff 7. Coverage ClusterFuzz UI Appengine Google Compute Engine and Chrome Lab
  • 9. 1. Automated crash detection, analysis and management 2. Fully reproducible and minimized testcases 3. Real-time regression and fixed testing ClusterFuzz: Goals 9
  • 11. ClusterFuzz: Life of a Crash 11 Find Actionable, Reproducible and Minimized Tests Verify Test Deduplication, Regresse, Production ImpactAnalyze Fixed, Merged, Released Prevent Regressions
  • 13. Fuzzer Types 13 Generation Based Generate from scratch with no prior state Example https://bugs.webkit.org/show_bug.cgi?id=60831 <script> document.body = document.createElement(‘iframe’); </script>
  • 14. Fuzzer Types 14 Mutation Based Mutate existing state based on some rules Example crbug.com/552046 --- orig.pdf +++ crash.pdf @@ -57,7 +57,7 @@ /DecodeParms [null 8 0 R] /Type /XObject /Width 1760 -/Filter [/FlateDecode /DCTDecode] +/Filter [/JBIG2Decode /DCTDecode] /Height 1248 /Length 2277
  • 15. Fuzzer Types 15 Evolutionary Generation or mutation based or both, in-process with code coverage feedback Example crbug.com/575205 SELECT'xef(xfb; DSx1aLEETABLxfeES'REGEXP';0ttC LE|A* (xc8*.+!*)*h*00x0b$T''&'
  • 16. ● Setup build {trunk}, run application with test ● Choose params ● Gestures, tool settings, timeout multiplier, window location+size, etc. ● Figure out resource dependencies ● Test for reproducibility ● Test for duplicates ● Store crash, coverage, stats, etc Infrastructure 16
  • 17. ● Disable inline frames (-inlining in llvm-symbolizer) ● Crash_type - e.g. “Heap-buffer-overflow READ 2” ● Crash_state - top 3 frames ● +namespaces, -line_numbers ● E.g. ● WebCore::SVGDocumentExtensions::removeAnimationElement ● WebCore::SVGSMILElement::removedFrom ● WebCore::ContainerNode::removeChild ● security_flag Testcase Duplication Check 17
  • 18. Code Coverage: Aggregate View Sample 18
  • 19. Scale, Scale and Scale (in cores) 19 12k 5k Linux 4k Android x86 200+ Android devices 3k Windows 20 Mac {wip} iOS
  • 20. 20 Goal 2: Fully reproducible and minimized testcases
  • 21. ● Same bot configuration as crash ● Multi-threaded minimization based on Delta Debugging ● Custom minimizers for some file types ● + Gesture minimization ● + Resource minimization ● + Tool settings correction (redzone {asan}, history size {tsan}, origins {msan}, etc) Fully reproducible & minimized tests 21
  • 22. ● Tokenize the input ● Generate hypotheses that certain groups of tokens are not required for the crash ● Test hypotheses by running the test with the tokens from the hypothesis removed ● If it crashes, removing them was fine ● If not, try breaking it into smaller groups How does the minimizer work? 22
  • 23. ● Stack trace with default redzone (128) ==9485== ERROR: AddressSanitizer heap-use-after-free on address 0x7f8f653ff11e at pc 0x7f8f849fbb10 bp 0x7f8f5514a0a0 sp 0x7f8f5514a098 READ of size 2 at 0x7f8f653ff11e thread T14 #0 0x7f8f849fbb10 in WTF::charactersToIntStrict(unsigned short const*, unsigned long, bool*, int) #1 0x7f8f8589d863 in WebCore::InlineTextBox::isLineBreak() const #2 0x7f8f858a771d in WebCore::InlineTextBox::containsCaretOffset(int) ● Actual stack trace with bigger redzone (1024 / 2048) ==14334== ERROR: AddressSanitizer heap-buffer-overflow on address 0x7f7e42b9b81c at pc 0x7f7e8f79a6ca bp 0x7f7e3cc30040 sp 0x7f7e3cc30038 READ of size 2 at 0x7f7e42b9b81c thread T15 #0 0x7f7e8f79a6ca in WebCore::InlineTextBox::isLineBreak() const #1 0x7f7e8f7abddd in WebCore::InlineTextBox::containsCaretOffset(int) const #2 0x7f7e8e06b19d in WebCore::Position::inRenderedText() const Tools Settings Correction: ASAN example crbug.com/118662 23
  • 24. 24 Goal 3: Real-time regression and fixed testing
  • 25. ● Use LKGR builds archived on Google Cloud ● Account for bad builds / startup crashes ● Use a LOOK_BEHIND_WINDOW ● If previous step failed, then use binary bisect ● Use FindIt to find culprit changelist Real-time regression and fixed testing 25
  • 26. ● Manual owner triage is usually … ● Slow ● Inaccurate ● Complex ● From factors such as refactorings, size of regression range, etc FindIt: Culprit CL Finder 26
  • 27. 1. Parse the stacktrace FindIt: How it works 27
  • 28. 2. Parse the changelog(s) in the regression range FindIt: How it works 28
  • 29. 3. Generate a list of suspected CLs, and sort / filter the results FindIt: How it works 29
  • 30. 4. Show blame information if no results are available FindIt: How it works 30
  • 31. FindIt: How it works 31
  • 34. FindIt: Culprit CL Finder 34
  • 36. Patched + Verified: < 1 day 36
  • 39. Memory Debugging Tools 39 Tool OS Android Chrome OS Linux OS X Windows ASan + + + + + MSan + UBSan + TSan + LSan + CFI + SyzyASAN + DrFuzz + DrMemory +
  • 40. ● AddressSanitizer (aka ASan) ● Detects use-after-free, buffer overflows (heap, stack, globals), stack-use-after-return, container-overflow ● Cpu: 2x, memory 1.5x-3x ● ThreadSanitizer (aka TSan) ● Detects data races, esp on use-after-frees. Object vtpr ● Cpu: 4x-10x, memory: 5x-8x Memory Debugging Tools 40
  • 41. ● MemorySanitizer (aka MSan) ● Detects uninitialized memory reads ● Cpu: 3x, memory: 2x ● Special mode: origins ● UndefinedBehaviorSanitizer (aka UBSan) ● Detects several classes of bugs (19?), esp on type confusion, signed-integer-overflow, undefined shift, etc. ● Cpu: 10-50% ● Memory: ~1x (no allocator, no shadow) Memory Debugging Tools 41
  • 42. ● Others ● SyzyASAN ● DrFuzz ● DrMemory Memory Debugging Tools 42
  • 43. ● Container-overflow (ASan): #include <vector> #include <assert.h> typedef long T; int main() { std::vector<T> v; v.push_back(0); v.push_back(1); v.push_back(2); assert(v.capacity() >= 4); assert(v.size() == 3); T *p = &v[0]; // Here the memory is accessed inside a heap-allocated buffer // but outside of the region `[v.begin(), v.end())`. return p[3]; // OOPS. } Memory Debugging Tools: Examples 43
  • 45. ● Fuzzing very wide scope ● Cannot fuzz specific function ● Hard to fuzz network protocols ● Speed of regular fuzzers (html, css, dom, etc mutators): ● From ~30K to ~2.5M testcases per week ● Regular fuzzers are great, but not enough... Problems of regular fuzzing of browsers 45
  • 46. ● More granulated fuzzing ● Faster fuzzing ● Smarter fuzzing ● Easier fuzzer writing Goals 46
  • 47. ● In-process guided fuzz testing ● Very effective at function / protocol level ● It’s easy not hard to write a “target function” ● Can be checked along with unit-tests ● Maintained by Googlers :) LibFuzzer 47
  • 48. libFuzzer example [code] 48 #include <stdint.h> #include "third_party/icu/source/i18n/unicode/regex.h" // Entry point for LibFuzzer. extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { UParseError pe = { 0 }; UErrorCode status = U_ZERO_ERROR; URegularExpression* re = uregex_open(reinterpret_cast<const UChar*>(data), static_cast<int>(size) / sizeof(UChar), 0, &pe, &status); if (re) uregex_close(re); return 0; }
  • 49. libFuzzer example [crash] 49 ==19494==WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x4d306d in icu_54::RegexCompile::doParseActions(int) third_party/icu/source/i18n/regexcmp.cpp:1702:13 #1 0x4a1f3c in icu_54::RegexCompile::compile(UText*, UParseError&, UErrorCode&) third_party/icu/source/i18n/regexcmp.cpp:228:13 #2 0x5fc98e in icu_54::RegexPattern::compile(UText*, unsigned int, UParseError&, UErrorCode&) third_party/icu/source/i18n/repattrn.cpp:357:5 #3 0x601be7 in uregex_open_54 third_party/icu/source/i18n/uregex.cpp:155:20 #4 0x49dc3f in LLVMFuzzerTestOneInput testing/libfuzzer/fuzzers/icu_uregex_open_fuzzer.cc:13:28 Uninitialized value was created by an allocation of compiler in the stack frame of function _ZN6icu_5412RegexPattern7compileEP5UTextjR11UParseErrorR10UErrorCode #0 0x5fc220 in icu_54::RegexPattern::compile(UText*, unsigned int, UParseError&, UErrorCode&) third_party/icu/source/i18n/repattrn.cpp:325
  • 50. ● Dictionaries ● Seed corpus ● Custom mutators ● Coverage visualisation Ways to improve a libFuzzer 50
  • 51. ● dictionary and custom options for ICU uregex_open() fuzzer: ○ coverage ↑ 25+% ● dictionary for libxml fuzzer: ○ 5 new security bugs ● dictionary and seed corpus for libpng fuzzer: ○ coverage ↑↑↑ 70+% Dictionaries are awesome! 51
  • 52. 52
  • 53. 53
  • 54. 54
  • 55. 55
  • 56. ● Timeout (DoS) ● Heap-buffer-overflow ● Use-of-uninitialized-value ● Heap-buffer-overflow ● Heap-buffer-overflow sqlite3 fuzzer with dictionary at ClusterFuzz 56
  • 57. ● ASan, MSan, UBSan builds ● Corpus Synchronization with Google Cloud Storage ● Support for dictionaries and custom runtime options ● Automated exploitability scoring for crashes ● Statistics dashboard LibFuzzer & ClusterFuzz 57
  • 58. ● ~85 target functions for Chromium ● 88 bugs filed ○ 46 security bugs ● 700 GCE bots running target functions at ClusterFuzz 24/7 ● ~310 billion testcases daily ● ~8,000 corpus synchronization jobs daily ● From ~200k to ~800k corpus files ● Best coverage: 100.00% of funcs, 89.32% of edges Numbers 58
  • 59. ● 200+ bugs in third party, Google, other software ● http://llvm.org/docs/LibFuzzer.html#trophies: Trophies of LibFuzzer outside of Chrome 59
  • 60. ● Slow inputs and timeouts ● Out-of-memory with valid inputs ● You have to improve / refresh some fuzzers ● Stuck at easy crashes Problems 60
  • 61. Example: 10 lines fuzzer 61 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { auto var = xxxxxxxxxxxxxx(data, size, NULL, 0); if (var) { xxxxxxxxxx_Free(var); } return 0; }
  • 62. Example: 10 lines fuzzer ⇨ 10+ bugs 62 ● Memory leak ● 7 × Heap-buffer-overflow ● Timeout (DoS) ● Heap-based buffer-underreads ● Heap-based buffer overread ● Undesired side effects
  • 63. Self-fuzzing! 63 WARNING: MemorySanitizer: use-of-uninitialized-value #0 0x56b2594 in fuzzer::Fuzzer::AlarmCallback() third_party/llvm/lib/Fuzzer/FuzzerLoop.cpp:138:7 <...> #9 0x56abbb7 in fuzzer::FileToVector() third_party/llvm/lib/Fuzzer/FuzzerIO.cpp: 65:3 <...> #14 0x56a08a8 in main third_party/llvm/lib/Fuzzer/FuzzerMain.cpp:25:10 Uninitialized value was created by an allocation of 'F.i' in the stack frame of function '_ZN6fuzzer12FuzzerDriverEiPPcPFiPKhmE' #0 0x56a1040 in fuzzer::FuzzerDriver() third_party/llvm/lib/Fuzzer/FuzzerDriver.cpp:395
  • 64. 64
  • 65. ● The same target function ● Shared corpus: ● Need to be pruned or minimized on regular basis ● Different mutations: ● When one fuzzer got stuck, another one may help ● PoC is ready: ● https://github.com/llvm-mirror/llvm/blob/master/lib/Fuzzer/afl/afl_driver.cpp ● Work in progress Multiple fuzzing engines approach 65
  • 72. ● Reporter submits a bug on crbug.com ● Bug gets fixed ● Reward panel determines reward based on table and precedent ● Reporter gets cash money Chromium VRP: high level process 72
  • 74. Recent updates 74 https://www.google.com/about/appsecurity/chrome-rewards/index.html ● Max reward: $50,000 ⇨ $100,000: ● compromise a Chromebook or Chromebox with device persistence in guest mode (i.e. guest to guest persistence with interim reboot, delivered via a web page) ● Download Protection bypass (i.e. SafeBrowsing) *: ● Baseline: $0 - $500 ● High-quality report: $1,000 * Landing a blacklisted test binary on disk where a typical user could execute it, on Mac or Windows. The file type on disk must lead to non-sandboxed code execution after minimal user interaction with the file.
  • 75. Chromium VRP stats 75 ● Over $500,000 paid out last year ● More than $2,500,000 in rewards since 2010 ● Median payment went from $2,000 to $3,000 ● Top 0x05 reporters take ~70% of the earnings
  • 79. ● Invitation-only ● Skilled fuzzer developers ● Fuzz at Google scale ● Get 100% of the reward for bugs + $500 bonus: ● Bugs shouldn’t be found by our* fuzzers within 48 hours ● *our - written by Googlers ● Target functions for LibFuzzer are also in scope! How to get an invite? ● Submit at least one bug found by one of your fuzzers ● mailto:mmoroz@chromium.org Trusted Researcher program 79 https://www.google.com/about/appsecurity/chrome-rewards/index.html http://www.chromium.org/Home/chromium-security/bugs/developing-fuzzers-for-clusterfuzz
  • 80. ● More than $120,000 paid out for 2014-2015 ● Rewards in range: $500 - $4,500 Stats 80
  • 81. Thank you Contacts ● email: mmoroz@chromium.org ● twitter: @dor3s ● telegram: @dor1s Q & A 81