SlideShare a Scribd company logo
Master Canary Forging
A new exploitation method to bypass stack canaries
Who am I?
● 小池 悠生(Koike Yuki)
○ a 16-year-old student
● I had been fascinated with CTF
○ DEF CON 2014 Finalist
○ CODEGATE Junior 2015 Winner
○ now focusing on real world bug hunting and
exploitation techniques
Agenda
● Motivation
● Stack Canary
● Previous Bypass Techniques
● Master Canary Forging
● Evaluation and Countermeasures
Agenda
● Motivation
● Stack Canary
● Previous Bypass Techniques
● Master Canary Forging
● Evaluation and Countermeasures
Motivation
● I love ROP
○ so I love Stack Based Buffer Overflows
○ and hate Stack Canaries
● Stack Canaries can be strong protection
○ It is worth finding ways to bypass them
○ Are there any good methods?
Agenda
● Motivation
● Stack Canary
● Previous Bypass Techniques
● Master Canary Forging
● Evaluation and Countermeasures
Stack Canary
● For preventing BOF attacks
○ Detect if the return address was overwritten
■ Kill the process if it has been tampered
○ Design an “indicator”
■ The value of it should be changed before
and after BOF occurred
Stack Canary
return address
frame pointer
local variables
● Append an “indicator” to a stack frame
Stack Canary
return address
frame pointer
canary
0xdeadbeef
local variables
● When BOF occurs...
Stack Canary
canary
overwritten
● The attack will be detected since the value changed
Stack Canary
modified
0x41414141
● The attack will be detected since the value changed
Stack Canary
modified
0x41414141
Not 0xdeadbeef
Attack Detected
Stack Canary
● For preventing BOF attacks
○ Detect if the return address was overwritten
■ Kill the process if it has been tampered
○ Design a “indicator”
■ The value of it should be changed before
and after BOF occurred
Stack Canary
● For preventing BOF attacks
○ Detect if the return address was overwritten
■ Kill the process if it has been tampered
○ Design a “indicator”
■ The value of it should be changed
before and after BOF occurred
● Can this be ensured??
● The attack won’t be detected unless the value changed
Stack Canary
modified
0xdeadbeef
● The attack won’t be detected unless the value changed
Stack Canary
modified
0xdeadbeef
return address
becomes any value
● The attack won’t be detected unless the value changed
Stack Canary
⇒ACE(Arbitrary Code
Execution)
Stack Canary
● Types of Stack Canaries
○ Random
■ hide the original value from attackers
■ randomly generate values when the
program starts
○ Terminator
■ should include something like ‘0’.
■ It is hard for attackers to fit the
overwritten value to the original value.
Stack Canary
● Comparing a master canary and a canary on a stack
Agenda
● Motivation
● Stack Canary
● Previous Bypass Techniques
● Master Canary Forging
● Evaluation and Countermeasures
● ex1.c
method #1: avoid __stack_chk_fail
#include <stdio.h>
void bof(int (*print)(const char *)) {
char buf[16];
scanf("%s", buf);
print(buf);
}
int main(void) {
bof(puts);
}
● ex1.c
#include <stdio.h>
void bof(int (*print)(const char *)) {
char buf[16];
scanf("%s", buf);
print(buf);
}
int main(void) {
bof(puts);
}
method #1: avoid __stack_chk_fail
return address
frame pointer
canary
local variables
arguments
● ex1.c
method #1: avoid __stack_chk_fail
overwritten
arguments
#include <stdio.h>
void bof(int (*print)(const char *)) {
char buf[16];
scanf("%s", buf);
print(buf);
}
int main(void) {
bof(puts);
}
● ex1.c
method #1: avoid __stack_chk_fail
overwritten
arguments
#include <stdio.h>
void bof(int (*print)(const char *)) {
char buf[16];
scanf("%s", buf);
print(buf);
}
int main(void) {
bof(puts);
}
a function pointer && an argument
● ex2.c
method #2: leak a canary
#include <stdio.h>
int main(void) {
char buf[16];
scanf("%s", buf);
printf(buf);
fread(buf, sizeof(char), 32, stdin);
}
● ex2.c
method #2: leak a canary
#include <stdio.h>
int main(void) {
char buf[16];
scanf("%s", buf);
printf(buf);
fread(buf, sizeof(char), 32, stdin);
}
format string bug
method #2: leak a canary
$ gdb ./ex2 -q
(gdb) b 4
Breakpoint 1 at 0x8048532: file ex2.c, line 4.
(gdb) r
Breakpoint 1, main () at ex2.c:4
4 scanf("%s", buf);
(gdb) x/12xw $esp
0xffffce60: 0xffffd129 0x0000002f 0x0804a000 0x080485e2
0xffffce70: 0x00000001 0xffffcf34 0xffffcf3c 0xf7e3539d
0xffffce80: 0xf7faa3c4 0xf7ffd000 0x0804859b 0x48d09200
(gdb) c
%11$x
48d09200
● Where do canaries fail in these methods?
○ method #1: avoid __stack_chk_fail
■ when detecting or terminating attacks
○ method #2: leak a canary
■ the canary value on the stack
The essence of bypass methods
● Where do canaries fail in these methods?
○ method #1: avoid __stack_chk_fail
■ when detecting or terminating attacks
○ method #2: leak a canary
■ the canary value on the stack
○ method #3: overwrite the master canary
■ the original value(master canary)
The essence of bypass methods
Agenda
● Motivation
● Stack Canary
● Previous Bypass Techniques
● Master Canary Forging
● Evaluation and Countermeasures
● Following assumption:
■ Linux Kernel 3.19
■ glibc 2.21
■ ASLR enabled
Master Canary Forging
● Where is the master canary located?
○ Let’s read glibc
Master Canary Forging
static void
security_init (void)
{
/* Set up the stack checker's canary. */
uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random);
#ifdef THREAD_SET_STACK_GUARD
THREAD_SET_STACK_GUARD (stack_chk_guard);
#else
__stack_chk_guard = stack_chk_guard;
#endif
● Where is the master canary located?
○ Let’s read glibc
Master Canary Forging
static void
security_init (void)
{
/* Set up the stack checker's canary. */
uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random);
#ifdef THREAD_SET_STACK_GUARD
THREAD_SET_STACK_GUARD (stack_chk_guard);
#else
__stack_chk_guard = stack_chk_guard;
#endif
Being assigned here
● Where is the master canary located?
○ Let’s read glibc
Master Canary Forging
static void
security_init (void)
{
/* Set up the stack checker's canary. */
uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random);
#ifdef THREAD_SET_STACK_GUARD
THREAD_SET_STACK_GUARD (stack_chk_guard);
#else
__stack_chk_guard = stack_chk_guard;
#endif
● Where is the master canary located?
○ THREAD_SET_STACK_GUARD
■ defined in 7 architectures
■ stores the canary in TLS(thread local storage)
■ If not defined, the canary is stored in .bss
Master Canary Forging
● To overwrite the master canary
○ When it lies in .bss
■ It is just “Arbitrary Memory Write”
Master Canary Forging
● To overwrite the master canary
○ When it lies in .bss
■ It is just “Arbitrary Memory Write”
○ Then, how about when it lies in TLS?
Master Canary Forging
● To overwrite the master canary
○ When it lies in .bss
■ It is just “Arbitrary Memory Write”
○ Then, how about when it lies in TLS?
■ In the first place, where is TLS allocated?
Master Canary Forging
● Where is TLS?
○ Let’s read glibc
Master Canary Forging
void * internal_function _dl_allocate_tls_storage (void)
{
void *result;
size_t size = GL(dl_tls_static_size);
#if TLS_DTV_AT_TP
size += (TLS_PRE_TCB_SIZE + GL(dl_tls_static_align) - 1)
& ~(GL(dl_tls_static_align) - 1);
#endif
/* Allocate a correctly aligned chunk of memory. */
result = __libc_memalign (GL(dl_tls_static_align), size);
● Where is TLS?
○ _dl_allocate_tls_storage is responsible for allocation
■ Inside, __libc_memalign is called
● __libc_memalign calls mmap
○ So in brief, TLS is created somewhere by mmap
■ ASLR makes it difficult to overwrite that area
Master Canary Forging
● One of the characterics of areas allocated by mmap:
○ The areas are always adjacent to some region
Master Canary Forging
● Mapped Area Based Buffer Overflow
Master Canary Forging
target area
● Mapped Area Based Buffer Overflow
○ create a new area by invoking mmap
○ The new area and the target should be successive
Master Canary Forging
mapped area
target area
● Mapped Area Based Buffer Overflow
○ create a new area by invoking mmap
○ The new area and the target should be successive
○ cause BOF in the new area
○ With enough size of BOF, the target area can be
overwritten
Master Canary Forging
overwritten
● Mapped Area Based Buffer Overflow
○ This seems to be able to overwrite the master canary
○ Wait, can attackers invoke mmap?
Master Canary Forging
● Mapped Area Based Buffer Overflow
○ This seems to be able to overwrite the master canary
○ Wait, can attackers invoke mmap?
■ YES
Master Canary Forging
● Mapped Area Based Buffer Overflow
○ This seems to be able to overwrite the master canary
○ Wait, can attackers invoke mmap?
■ YES
■ malloc
Master Canary Forging
● Mapped Area Based Buffer Overflow
○ This seems to be able to overwrite the master canary
○ Wait, can attackers invoke mmap?
■ YES
■ malloc
■ “When allocating blocks of memory larger than
MMAP_THRESHOLD bytes, the glibc malloc()
implementation allocates the memory as a private
anonymous mapping using mmap(2).”
Master Canary Forging
● Mapped Area Based Buffer Overflow
○ following 2 conditions required:
■ Attackers can control allocation
■ Heap Based BOF occurs
Master Canary Forging
1. Overwrite the master canary
a. When it is located in .bss
i. Use an “Arbitrary Memory Write”
b. When it is located in TLS
i. Use a mapped area based BOF
2. Cause a stack based BOF
Master Canary Forging
Agenda
● Motivation
● Stack Canary
● Previous Bypass Techniques
● Master Canary Forging
● Evaluation and Countermeasures
● Evaluation
○ NOT so useful
■ It requires 2 types of vulnerabilities
■ Heap Based BOF is usually sufficient for ACE
○ Mapped Area Based BOF itself is useful
■ Sometimes a function pointer array is in TLS
Evaluation and Countermeasures
● Countermeasures
○ Use random XOR canaries
■ canary = master canary ^ stack pointer
○ Establish a guard page
Evaluation and Countermeasures
https://github.com/potetisensei/
MasterCanaryForging-PoC/
PoC
Thank you for listening
Please ask me anything

More Related Content

What's hot

Play with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniquePlay with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit Technique
Angel Boy
 
Ruby on Rails Penetration Testing
Ruby on Rails Penetration TestingRuby on Rails Penetration Testing
Ruby on Rails Penetration Testing
3S Labs
 
Pwning in c++ (basic)
Pwning in c++ (basic)Pwning in c++ (basic)
Pwning in c++ (basic)
Angel Boy
 
The Game of Bug Bounty Hunting - Money, Drama, Action and Fame
The Game of Bug Bounty Hunting - Money, Drama, Action and FameThe Game of Bug Bounty Hunting - Money, Drama, Action and Fame
The Game of Bug Bounty Hunting - Money, Drama, Action and Fame
Abhinav Mishra
 
Forging Trusts for Deception in Active Directory
Forging Trusts for Deception in Active DirectoryForging Trusts for Deception in Active Directory
Forging Trusts for Deception in Active Directory
Nikhil Mittal
 
aclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHoundaclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHound
DirkjanMollema
 
Introduction to API Security - Intergalactic
Introduction to API Security - IntergalacticIntroduction to API Security - Intergalactic
Introduction to API Security - Intergalactic
Postman
 
IDA Vulnerabilities and Bug Bounty  by Masaaki Chida
IDA Vulnerabilities and Bug Bounty  by Masaaki ChidaIDA Vulnerabilities and Bug Bounty  by Masaaki Chida
IDA Vulnerabilities and Bug Bounty  by Masaaki Chida
CODE BLUE
 
Pentest with Metasploit
Pentest with MetasploitPentest with Metasploit
Pentest with Metasploit
M.Syarifudin, ST, OSCP, OSWP
 
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and BeyondScylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
ScyllaDB
 
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
confluent
 
Red Team Revenge - Attacking Microsoft ATA
Red Team Revenge - Attacking Microsoft ATARed Team Revenge - Attacking Microsoft ATA
Red Team Revenge - Attacking Microsoft ATA
Nikhil Mittal
 
Threat hunting on the wire
Threat hunting on the wireThreat hunting on the wire
Threat hunting on the wire
InfoSec Addicts
 
Nmap(network mapping)
Nmap(network mapping)Nmap(network mapping)
Nmap(network mapping)
shwetha mk
 
Exploring MongoDB & Elasticsearch: Better Together
Exploring MongoDB & Elasticsearch: Better TogetherExploring MongoDB & Elasticsearch: Better Together
Exploring MongoDB & Elasticsearch: Better Together
ObjectRocket
 
Sigma and YARA Rules
Sigma and YARA RulesSigma and YARA Rules
Sigma and YARA Rules
Lionel Faleiro
 
Bsides 2019 - Intelligent Threat Hunting
Bsides 2019 - Intelligent Threat HuntingBsides 2019 - Intelligent Threat Hunting
Bsides 2019 - Intelligent Threat Hunting
Dhruv Majumdar
 
CNIT 126: 10: Kernel Debugging with WinDbg
CNIT 126: 10: Kernel Debugging with WinDbgCNIT 126: 10: Kernel Debugging with WinDbg
CNIT 126: 10: Kernel Debugging with WinDbg
Sam Bowne
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELK
YoungHeon (Roy) Kim
 
[若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures [若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures
Aj MaChInE
 

What's hot (20)

Play with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit TechniquePlay with FILE Structure - Yet Another Binary Exploit Technique
Play with FILE Structure - Yet Another Binary Exploit Technique
 
Ruby on Rails Penetration Testing
Ruby on Rails Penetration TestingRuby on Rails Penetration Testing
Ruby on Rails Penetration Testing
 
Pwning in c++ (basic)
Pwning in c++ (basic)Pwning in c++ (basic)
Pwning in c++ (basic)
 
The Game of Bug Bounty Hunting - Money, Drama, Action and Fame
The Game of Bug Bounty Hunting - Money, Drama, Action and FameThe Game of Bug Bounty Hunting - Money, Drama, Action and Fame
The Game of Bug Bounty Hunting - Money, Drama, Action and Fame
 
Forging Trusts for Deception in Active Directory
Forging Trusts for Deception in Active DirectoryForging Trusts for Deception in Active Directory
Forging Trusts for Deception in Active Directory
 
aclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHoundaclpwn - Active Directory ACL exploitation with BloodHound
aclpwn - Active Directory ACL exploitation with BloodHound
 
Introduction to API Security - Intergalactic
Introduction to API Security - IntergalacticIntroduction to API Security - Intergalactic
Introduction to API Security - Intergalactic
 
IDA Vulnerabilities and Bug Bounty  by Masaaki Chida
IDA Vulnerabilities and Bug Bounty  by Masaaki ChidaIDA Vulnerabilities and Bug Bounty  by Masaaki Chida
IDA Vulnerabilities and Bug Bounty  by Masaaki Chida
 
Pentest with Metasploit
Pentest with MetasploitPentest with Metasploit
Pentest with Metasploit
 
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and BeyondScylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
 
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
KSQL and Security: The Current State of Affairs (Victoria Xia, Confluent) Kaf...
 
Red Team Revenge - Attacking Microsoft ATA
Red Team Revenge - Attacking Microsoft ATARed Team Revenge - Attacking Microsoft ATA
Red Team Revenge - Attacking Microsoft ATA
 
Threat hunting on the wire
Threat hunting on the wireThreat hunting on the wire
Threat hunting on the wire
 
Nmap(network mapping)
Nmap(network mapping)Nmap(network mapping)
Nmap(network mapping)
 
Exploring MongoDB & Elasticsearch: Better Together
Exploring MongoDB & Elasticsearch: Better TogetherExploring MongoDB & Elasticsearch: Better Together
Exploring MongoDB & Elasticsearch: Better Together
 
Sigma and YARA Rules
Sigma and YARA RulesSigma and YARA Rules
Sigma and YARA Rules
 
Bsides 2019 - Intelligent Threat Hunting
Bsides 2019 - Intelligent Threat HuntingBsides 2019 - Intelligent Threat Hunting
Bsides 2019 - Intelligent Threat Hunting
 
CNIT 126: 10: Kernel Debugging with WinDbg
CNIT 126: 10: Kernel Debugging with WinDbgCNIT 126: 10: Kernel Debugging with WinDbg
CNIT 126: 10: Kernel Debugging with WinDbg
 
MySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELKMySQL Slow Query log Monitoring using Beats & ELK
MySQL Slow Query log Monitoring using Beats & ELK
 
[若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures [若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures
 

Similar to Master Canary Forging by Yuki Koike - CODE BLUE 2015

Semtex.c [CVE-2013-2094] - A Linux Privelege Escalation
Semtex.c [CVE-2013-2094] - A Linux Privelege EscalationSemtex.c [CVE-2013-2094] - A Linux Privelege Escalation
Semtex.c [CVE-2013-2094] - A Linux Privelege Escalation
Kernel TLV
 
Address/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerAddress/Thread/Memory Sanitizer
Address/Thread/Memory Sanitizer
Platonov Sergey
 
Introduction to Parallelization and performance optimization
Introduction to Parallelization and performance optimizationIntroduction to Parallelization and performance optimization
Introduction to Parallelization and performance optimization
CSUC - Consorci de Serveis Universitaris de Catalunya
 
A taste of GlobalISel
A taste of GlobalISelA taste of GlobalISel
A taste of GlobalISel
Igalia
 
Cryptography 202
Cryptography 202Cryptography 202
Cryptography 202
UTD Computer Security Group
 
Diagnosing HotSpot JVM Memory Leaks with JFR and JMC
Diagnosing HotSpot JVM Memory Leaks with JFR and JMCDiagnosing HotSpot JVM Memory Leaks with JFR and JMC
Diagnosing HotSpot JVM Memory Leaks with JFR and JMC
Mushfekur Rahman
 
The Silence of the Canaries
The Silence of the CanariesThe Silence of the Canaries
The Silence of the Canaries
Kernel TLV
 
A New Age of JVM Garbage Collectors (Clojure Conj 2019)
A New Age of JVM Garbage Collectors (Clojure Conj 2019)A New Age of JVM Garbage Collectors (Clojure Conj 2019)
A New Age of JVM Garbage Collectors (Clojure Conj 2019)
Alexander Yakushev
 
Valgrind
ValgrindValgrind
Valgrind
aidanshribman
 
Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)
Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)
Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)
James Titcumb
 
Caching in (DevoxxUK 2013)
Caching in (DevoxxUK 2013)Caching in (DevoxxUK 2013)
Caching in (DevoxxUK 2013)
RichardWarburton
 
WCTF 2018 binja Editorial
WCTF 2018 binja EditorialWCTF 2018 binja Editorial
WCTF 2018 binja Editorial
Charo_IT
 
MySafe
MySafeMySafe
MySafe
Serkan Özal
 
Cryptography For The Average Developer
Cryptography For The Average DeveloperCryptography For The Average Developer
Cryptography For The Average Developer
Anthony Ferrara
 
Unsafe Java
Unsafe JavaUnsafe Java
Unsafe Java
Misha Kozik
 
[Blackhat EU'14] Attacking the Linux PRNG on Android and Embedded Devices
[Blackhat EU'14] Attacking the Linux PRNG on Android and Embedded Devices[Blackhat EU'14] Attacking the Linux PRNG on Android and Embedded Devices
[Blackhat EU'14] Attacking the Linux PRNG on Android and Embedded Devices
srkedmi
 
[DSC] Introduction to Binary Exploitation
[DSC] Introduction to Binary Exploitation[DSC] Introduction to Binary Exploitation
[DSC] Introduction to Binary Exploitation
Florian Müller
 
Advanced Linux Game Programming
Advanced Linux Game ProgrammingAdvanced Linux Game Programming
Advanced Linux Game Programming
Leszek Godlewski
 
printf tricks
printf tricksprintf tricks
printf tricks
Shaun Colley
 

Similar to Master Canary Forging by Yuki Koike - CODE BLUE 2015 (20)

Semtex.c [CVE-2013-2094] - A Linux Privelege Escalation
Semtex.c [CVE-2013-2094] - A Linux Privelege EscalationSemtex.c [CVE-2013-2094] - A Linux Privelege Escalation
Semtex.c [CVE-2013-2094] - A Linux Privelege Escalation
 
Address/Thread/Memory Sanitizer
Address/Thread/Memory SanitizerAddress/Thread/Memory Sanitizer
Address/Thread/Memory Sanitizer
 
Caching in
Caching inCaching in
Caching in
 
Introduction to Parallelization and performance optimization
Introduction to Parallelization and performance optimizationIntroduction to Parallelization and performance optimization
Introduction to Parallelization and performance optimization
 
A taste of GlobalISel
A taste of GlobalISelA taste of GlobalISel
A taste of GlobalISel
 
Cryptography 202
Cryptography 202Cryptography 202
Cryptography 202
 
Diagnosing HotSpot JVM Memory Leaks with JFR and JMC
Diagnosing HotSpot JVM Memory Leaks with JFR and JMCDiagnosing HotSpot JVM Memory Leaks with JFR and JMC
Diagnosing HotSpot JVM Memory Leaks with JFR and JMC
 
The Silence of the Canaries
The Silence of the CanariesThe Silence of the Canaries
The Silence of the Canaries
 
A New Age of JVM Garbage Collectors (Clojure Conj 2019)
A New Age of JVM Garbage Collectors (Clojure Conj 2019)A New Age of JVM Garbage Collectors (Clojure Conj 2019)
A New Age of JVM Garbage Collectors (Clojure Conj 2019)
 
Valgrind
ValgrindValgrind
Valgrind
 
Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)
Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)
Practical Message Queuing Using RabbitMQ (PHPem, 3rd July 2014)
 
Caching in (DevoxxUK 2013)
Caching in (DevoxxUK 2013)Caching in (DevoxxUK 2013)
Caching in (DevoxxUK 2013)
 
WCTF 2018 binja Editorial
WCTF 2018 binja EditorialWCTF 2018 binja Editorial
WCTF 2018 binja Editorial
 
MySafe
MySafeMySafe
MySafe
 
Cryptography For The Average Developer
Cryptography For The Average DeveloperCryptography For The Average Developer
Cryptography For The Average Developer
 
Unsafe Java
Unsafe JavaUnsafe Java
Unsafe Java
 
[Blackhat EU'14] Attacking the Linux PRNG on Android and Embedded Devices
[Blackhat EU'14] Attacking the Linux PRNG on Android and Embedded Devices[Blackhat EU'14] Attacking the Linux PRNG on Android and Embedded Devices
[Blackhat EU'14] Attacking the Linux PRNG on Android and Embedded Devices
 
[DSC] Introduction to Binary Exploitation
[DSC] Introduction to Binary Exploitation[DSC] Introduction to Binary Exploitation
[DSC] Introduction to Binary Exploitation
 
Advanced Linux Game Programming
Advanced Linux Game ProgrammingAdvanced Linux Game Programming
Advanced Linux Game Programming
 
printf tricks
printf tricksprintf tricks
printf tricks
 

More from CODE BLUE

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
CODE BLUE
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl
CODE BLUE
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
CODE BLUE
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
CODE BLUE
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
CODE BLUE
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
CODE BLUE
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
CODE BLUE
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
CODE BLUE
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
CODE BLUE
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
CODE BLUE
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
CODE BLUE
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
CODE BLUE
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
CODE BLUE
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
CODE BLUE
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
CODE BLUE
 

More from CODE BLUE (20)

[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...[cb22] Hayabusa  Threat Hunting and Fast Forensics in Windows environments fo...
[cb22] Hayabusa Threat Hunting and Fast Forensics in Windows environments fo...
 
[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl[cb22] Tales of 5G hacking by Karsten Nohl
[cb22] Tales of 5G hacking by Karsten Nohl
 
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...[cb22]  Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
[cb22] Your Printer is not your Printer ! - Hacking Printers at Pwn2Own by A...
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(4) by 板橋 博之
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(3) by Lorenzo Pupillo
 
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...[cb22]  ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
[cb22] ”The Present and Future of Coordinated Vulnerability Disclosure” Inte...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman [cb22]  「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション(2)by Allan Friedman
 
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
[cb22] "The Present and Future of Coordinated Vulnerability Disclosure" Inter...
 
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by  高橋 郁夫
[cb22] 「協調された脆弱性開示の現在と未来」国際的なパネルディスカッション (1)by 高橋 郁夫
 
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
[cb22] Are Embedded Devices Ready for ROP Attacks? -ROP verification for low-...
 
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka [cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
[cb22] Wslinkのマルチレイヤーな仮想環境について by Vladislav Hrčka
 
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
[cb22] Under the hood of Wslink’s multilayered virtual machine en by Vladisla...
 
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
[cb22] CloudDragon’s Credential Factory is Powering Up Its Espionage Activiti...
 
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...[cb22]  From Parroting to Echoing:  The Evolution of China’s Bots-Driven Info...
[cb22] From Parroting to Echoing: The Evolution of China’s Bots-Driven Info...
 
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...[cb22]  Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
[cb22] Who is the Mal-Gopher? - Implementation and Evaluation of “gimpfuzzy”...
 
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
[cb22] Mal-gopherとは?Go系マルウェアの分類のためのgimpfuzzy実装と評価 by 澤部 祐太, 甘粕 伸幸, 野村 和也
 
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
[cb22] Tracking the Entire Iceberg - Long-term APT Malware C2 Protocol Emulat...
 
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
[cb22] Fight Against Malware Development Life Cycle by Shusei Tomonaga and Yu...
 

Recently uploaded

Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
IES VE
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
vrstrong314
 

Recently uploaded (20)

Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
top nidhi software solution freedownload
top nidhi software solution freedownloadtop nidhi software solution freedownload
top nidhi software solution freedownload
 

Master Canary Forging by Yuki Koike - CODE BLUE 2015

  • 1. Master Canary Forging A new exploitation method to bypass stack canaries
  • 2. Who am I? ● 小池 悠生(Koike Yuki) ○ a 16-year-old student ● I had been fascinated with CTF ○ DEF CON 2014 Finalist ○ CODEGATE Junior 2015 Winner ○ now focusing on real world bug hunting and exploitation techniques
  • 3. Agenda ● Motivation ● Stack Canary ● Previous Bypass Techniques ● Master Canary Forging ● Evaluation and Countermeasures
  • 4. Agenda ● Motivation ● Stack Canary ● Previous Bypass Techniques ● Master Canary Forging ● Evaluation and Countermeasures
  • 5. Motivation ● I love ROP ○ so I love Stack Based Buffer Overflows ○ and hate Stack Canaries ● Stack Canaries can be strong protection ○ It is worth finding ways to bypass them ○ Are there any good methods?
  • 6. Agenda ● Motivation ● Stack Canary ● Previous Bypass Techniques ● Master Canary Forging ● Evaluation and Countermeasures
  • 7. Stack Canary ● For preventing BOF attacks ○ Detect if the return address was overwritten ■ Kill the process if it has been tampered ○ Design an “indicator” ■ The value of it should be changed before and after BOF occurred
  • 8. Stack Canary return address frame pointer local variables
  • 9. ● Append an “indicator” to a stack frame Stack Canary return address frame pointer canary 0xdeadbeef local variables
  • 10. ● When BOF occurs... Stack Canary canary overwritten
  • 11. ● The attack will be detected since the value changed Stack Canary modified 0x41414141
  • 12. ● The attack will be detected since the value changed Stack Canary modified 0x41414141 Not 0xdeadbeef Attack Detected
  • 13. Stack Canary ● For preventing BOF attacks ○ Detect if the return address was overwritten ■ Kill the process if it has been tampered ○ Design a “indicator” ■ The value of it should be changed before and after BOF occurred
  • 14. Stack Canary ● For preventing BOF attacks ○ Detect if the return address was overwritten ■ Kill the process if it has been tampered ○ Design a “indicator” ■ The value of it should be changed before and after BOF occurred ● Can this be ensured??
  • 15. ● The attack won’t be detected unless the value changed Stack Canary modified 0xdeadbeef
  • 16. ● The attack won’t be detected unless the value changed Stack Canary modified 0xdeadbeef return address becomes any value
  • 17. ● The attack won’t be detected unless the value changed Stack Canary ⇒ACE(Arbitrary Code Execution)
  • 18. Stack Canary ● Types of Stack Canaries ○ Random ■ hide the original value from attackers ■ randomly generate values when the program starts ○ Terminator ■ should include something like ‘0’. ■ It is hard for attackers to fit the overwritten value to the original value.
  • 19. Stack Canary ● Comparing a master canary and a canary on a stack
  • 20. Agenda ● Motivation ● Stack Canary ● Previous Bypass Techniques ● Master Canary Forging ● Evaluation and Countermeasures
  • 21. ● ex1.c method #1: avoid __stack_chk_fail #include <stdio.h> void bof(int (*print)(const char *)) { char buf[16]; scanf("%s", buf); print(buf); } int main(void) { bof(puts); }
  • 22. ● ex1.c #include <stdio.h> void bof(int (*print)(const char *)) { char buf[16]; scanf("%s", buf); print(buf); } int main(void) { bof(puts); } method #1: avoid __stack_chk_fail return address frame pointer canary local variables arguments
  • 23. ● ex1.c method #1: avoid __stack_chk_fail overwritten arguments #include <stdio.h> void bof(int (*print)(const char *)) { char buf[16]; scanf("%s", buf); print(buf); } int main(void) { bof(puts); }
  • 24. ● ex1.c method #1: avoid __stack_chk_fail overwritten arguments #include <stdio.h> void bof(int (*print)(const char *)) { char buf[16]; scanf("%s", buf); print(buf); } int main(void) { bof(puts); } a function pointer && an argument
  • 25. ● ex2.c method #2: leak a canary #include <stdio.h> int main(void) { char buf[16]; scanf("%s", buf); printf(buf); fread(buf, sizeof(char), 32, stdin); }
  • 26. ● ex2.c method #2: leak a canary #include <stdio.h> int main(void) { char buf[16]; scanf("%s", buf); printf(buf); fread(buf, sizeof(char), 32, stdin); } format string bug
  • 27. method #2: leak a canary $ gdb ./ex2 -q (gdb) b 4 Breakpoint 1 at 0x8048532: file ex2.c, line 4. (gdb) r Breakpoint 1, main () at ex2.c:4 4 scanf("%s", buf); (gdb) x/12xw $esp 0xffffce60: 0xffffd129 0x0000002f 0x0804a000 0x080485e2 0xffffce70: 0x00000001 0xffffcf34 0xffffcf3c 0xf7e3539d 0xffffce80: 0xf7faa3c4 0xf7ffd000 0x0804859b 0x48d09200 (gdb) c %11$x 48d09200
  • 28. ● Where do canaries fail in these methods? ○ method #1: avoid __stack_chk_fail ■ when detecting or terminating attacks ○ method #2: leak a canary ■ the canary value on the stack The essence of bypass methods
  • 29. ● Where do canaries fail in these methods? ○ method #1: avoid __stack_chk_fail ■ when detecting or terminating attacks ○ method #2: leak a canary ■ the canary value on the stack ○ method #3: overwrite the master canary ■ the original value(master canary) The essence of bypass methods
  • 30. Agenda ● Motivation ● Stack Canary ● Previous Bypass Techniques ● Master Canary Forging ● Evaluation and Countermeasures
  • 31. ● Following assumption: ■ Linux Kernel 3.19 ■ glibc 2.21 ■ ASLR enabled Master Canary Forging
  • 32. ● Where is the master canary located? ○ Let’s read glibc Master Canary Forging static void security_init (void) { /* Set up the stack checker's canary. */ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random); #ifdef THREAD_SET_STACK_GUARD THREAD_SET_STACK_GUARD (stack_chk_guard); #else __stack_chk_guard = stack_chk_guard; #endif
  • 33. ● Where is the master canary located? ○ Let’s read glibc Master Canary Forging static void security_init (void) { /* Set up the stack checker's canary. */ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random); #ifdef THREAD_SET_STACK_GUARD THREAD_SET_STACK_GUARD (stack_chk_guard); #else __stack_chk_guard = stack_chk_guard; #endif Being assigned here
  • 34. ● Where is the master canary located? ○ Let’s read glibc Master Canary Forging static void security_init (void) { /* Set up the stack checker's canary. */ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random); #ifdef THREAD_SET_STACK_GUARD THREAD_SET_STACK_GUARD (stack_chk_guard); #else __stack_chk_guard = stack_chk_guard; #endif
  • 35. ● Where is the master canary located? ○ THREAD_SET_STACK_GUARD ■ defined in 7 architectures ■ stores the canary in TLS(thread local storage) ■ If not defined, the canary is stored in .bss Master Canary Forging
  • 36. ● To overwrite the master canary ○ When it lies in .bss ■ It is just “Arbitrary Memory Write” Master Canary Forging
  • 37. ● To overwrite the master canary ○ When it lies in .bss ■ It is just “Arbitrary Memory Write” ○ Then, how about when it lies in TLS? Master Canary Forging
  • 38. ● To overwrite the master canary ○ When it lies in .bss ■ It is just “Arbitrary Memory Write” ○ Then, how about when it lies in TLS? ■ In the first place, where is TLS allocated? Master Canary Forging
  • 39. ● Where is TLS? ○ Let’s read glibc Master Canary Forging void * internal_function _dl_allocate_tls_storage (void) { void *result; size_t size = GL(dl_tls_static_size); #if TLS_DTV_AT_TP size += (TLS_PRE_TCB_SIZE + GL(dl_tls_static_align) - 1) & ~(GL(dl_tls_static_align) - 1); #endif /* Allocate a correctly aligned chunk of memory. */ result = __libc_memalign (GL(dl_tls_static_align), size);
  • 40. ● Where is TLS? ○ _dl_allocate_tls_storage is responsible for allocation ■ Inside, __libc_memalign is called ● __libc_memalign calls mmap ○ So in brief, TLS is created somewhere by mmap ■ ASLR makes it difficult to overwrite that area Master Canary Forging
  • 41. ● One of the characterics of areas allocated by mmap: ○ The areas are always adjacent to some region Master Canary Forging
  • 42. ● Mapped Area Based Buffer Overflow Master Canary Forging target area
  • 43. ● Mapped Area Based Buffer Overflow ○ create a new area by invoking mmap ○ The new area and the target should be successive Master Canary Forging mapped area target area
  • 44. ● Mapped Area Based Buffer Overflow ○ create a new area by invoking mmap ○ The new area and the target should be successive ○ cause BOF in the new area ○ With enough size of BOF, the target area can be overwritten Master Canary Forging overwritten
  • 45. ● Mapped Area Based Buffer Overflow ○ This seems to be able to overwrite the master canary ○ Wait, can attackers invoke mmap? Master Canary Forging
  • 46. ● Mapped Area Based Buffer Overflow ○ This seems to be able to overwrite the master canary ○ Wait, can attackers invoke mmap? ■ YES Master Canary Forging
  • 47. ● Mapped Area Based Buffer Overflow ○ This seems to be able to overwrite the master canary ○ Wait, can attackers invoke mmap? ■ YES ■ malloc Master Canary Forging
  • 48. ● Mapped Area Based Buffer Overflow ○ This seems to be able to overwrite the master canary ○ Wait, can attackers invoke mmap? ■ YES ■ malloc ■ “When allocating blocks of memory larger than MMAP_THRESHOLD bytes, the glibc malloc() implementation allocates the memory as a private anonymous mapping using mmap(2).” Master Canary Forging
  • 49. ● Mapped Area Based Buffer Overflow ○ following 2 conditions required: ■ Attackers can control allocation ■ Heap Based BOF occurs Master Canary Forging
  • 50. 1. Overwrite the master canary a. When it is located in .bss i. Use an “Arbitrary Memory Write” b. When it is located in TLS i. Use a mapped area based BOF 2. Cause a stack based BOF Master Canary Forging
  • 51. Agenda ● Motivation ● Stack Canary ● Previous Bypass Techniques ● Master Canary Forging ● Evaluation and Countermeasures
  • 52. ● Evaluation ○ NOT so useful ■ It requires 2 types of vulnerabilities ■ Heap Based BOF is usually sufficient for ACE ○ Mapped Area Based BOF itself is useful ■ Sometimes a function pointer array is in TLS Evaluation and Countermeasures
  • 53. ● Countermeasures ○ Use random XOR canaries ■ canary = master canary ^ stack pointer ○ Establish a guard page Evaluation and Countermeasures
  • 55. Thank you for listening Please ask me anything