26
Sereum: Protecting Existing Smart Contracts Against Re-Entrancy Attacks Michael Rodler 1 , Wenting Li 2 , Ghassan O. Karame 2 , Lucas Davi 1 1 University of Duisburg-Essen 2 NEC Laboratories Europe 26th Network and Distributed System Security Symposium (NDSS19)

Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Sereum: Protecting Existing Smart Contracts Against Re-Entrancy Attacks

Michael Rodler 1, Wenting Li 2, Ghassan O. Karame 2, Lucas Davi 1

1 University of Duisburg-Essen2 NEC Laboratories Europe

26th Network and Distributed System Security Symposium (NDSS19)

Page 2: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

The DAO Hack17 June 2016

3.6 Million Ether Stolen

worth $50 Million5% of all available Ether

2

Page 3: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Ethereum Classic ETCEthereum ETH

The DAO Aftermath

3

Hard-Fork

Page 4: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Ξ

splitDAO(…)

The DAO Attack

Check Attacker Balance

Update Attacker Balance

Balance: 1000Attacker Balance: 100

Balance: 0The DAO

Child DAO Attacker

1009008000

1000200100

4

Transfer Amount

Withdraw to Child DAO

Ξ

Re-Entrancy

Vulnerability

Page 5: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Can we automatically detectre-entrancy vulnerabilities?

5

Page 6: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Static analysis

Verification

Runtime CheckingSymbolic execution

Prior Research onBug Finding and Exploitation in Smart Contracts

Oyente[Luu et al., CCS16]

Securify[Tsankov et al., CCS18]

ECFChecker[Grossman et al., POPL18]

TeEther[Krupp+Rossow, USENIX SEC 18]

MAIAN[Nikolic et al., ACSAC18]

ZEUS[Kalra et al., NDSS18]

OSIRIS[Torres et al., ACSAC18]

Manticore(Trail of Bits)

Mythril(ConsenSys)

6 Detects Re-Entrancy

SmartCheck[Tikhomirov et al., CCS18]

Page 7: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Current Bug Finding Tools

7

Do not analyzecombination of

contractsMany falsepositives

No protection of deployed contracts

Cover many vulnerability types

Page 8: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

1. Do existing tools cover all re-entrancy bugs?2. Can we protect deployed contracts?

Our Research Questions:

8

Page 9: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Runtime detection of re-entrancy attacks

Taint tracking engine for EVM bytecode

Our Contributions

Overlooked re-entrancy attack patterns

Sereum – Hardened Ethereum Client

Investigation of root causes for false positives

9

Page 10: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Overlooked re-entrancy problems

10

Page 11: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Attack 1: Cross-Function Re-Entrancy

AMalicious

B

Victim Contract Attacker Contract

11

Page 12: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Attack 2: Delegated Re-Entrancy

AMalicious

B

DELEGATECALL

Victim Contract Attacker Contract

Library Contract12

Page 13: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Attack 3: Create-Based Re-Entrancy

AMalicious

Constructor

CREATE

Newly Created Contract

Victim Contract Attacker Contract

13

Page 14: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Overview on Re-Entrancy DetectionTool Same-

FunctionCross-Function

Delegated Create-based

Oyente[Luu et al., CCS16]

Securify[Tsankov et al., CCS18]

* *

ECFChecker[Grossman et al., POPL18]

Manticore(Trail of Bits)

Mythril(ConsenSys)

* *

14 * Conservative policy with high number of false positives

Sereum

Page 15: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Main Observation

Typically re-entrancy attacks exploit inconsistent state

at the time the vulnerable contract decides whether to take a branch

15

Page 16: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

function withdraw(uint amount)

Sereum Approach

16

if (balance[msg.sender] >= amount)

msg.sender.call.value(amount)("");balance[msg.sender] -= amount;

return;

F T

Mark variables that influence branching decisions as critical

Prevent further updates with write-

locks

Page 17: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Sereum ArchitectureEthereum Virtual Machine (EVM)go-ethereum

Transaction Manager

Taint Engine

Sereum

Bytecode Interpreter

Attack Detector

Enforcement:Transaction roll-back on detected attack

17

Page 18: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

AttackerVictim

Check Balance

Transfer Ether

Attacker Victim(re-entered)

Re-enterA

A

A

Write-lock “attacker balance”

at 0x12345…

18

Check Balance

Transfer Ether

CALL(…,0xA,…)

x = SLOAD(0x12345…)cond = LT(x, …)JUMPI(0x140, cond)

Update Balance

Update Balance

SSTORE(0x12345…, …)

Alert:Write to locked

variable

Mark “attacker balance”

at 0x12345... as critical variable.

ReturnSTOP

SereumWrite Locks

UnlockedLocked0x12345…

Page 19: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Evaluation Results

19

Evaluation on first 4.5 Million Ethereum blocks

Successful detection of The DAO incident

~50k flagged transactions

~2k true attacktransactions

Developers hacked theirown contract

7 days before The DAO incident

New Finding: The curios case of

DSEthToken

Manual reverse-engineering and

analysis of flagged transactions 14 distinct contracts

result in false positive

FP rate:

0.06%

Page 20: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Questions?

Sereum: Protecting Existing Smart Contracts Against Re-Entrancy AttacksMichael Rodler 1, Wenting Li 2, Ghassan O. Karame 2, Lucas Davi 1

1 University Duisburg-Essen2 NEC Laboratories Germany

github.com/uni-due-syssec/eth-reentrancy-attack-patterns @f0rki

Page 21: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Backup Slides

Page 22: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Sereum Performance­ Benchmark: Execute 50 Blocks in Batch (10 000 repetitions)

­ Sereum – mean 2494.5 ms (σ = 174.8 ms)

­ Geth – mean 2277.0 ms (σ = 146.7 ms)­ Mean overhead: 9.6 %

­ Average memory consumption: geth 9252MB, Sereum 9767MB

­ Timings on newer blocks (around block ~6 700 000)­ Average 5 sec to process block with Sereum (about 150 TX)­ New block every ~15 sec

­ Sereum can keep up with network!

22

Page 23: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Evaluation of Sereum1. We verified that Sereum successfully detects the new attack patterns2. Evaluation on the Ethereum blockchain

­ We re-executed all blocks up until block number 4 500 000 (77 987 922 transactions)

­ We detected attacks related to “the DAO”­ Sereum flagged 49 080 transactions as re-entrancy attacks

3. We manually reverse-engineered and analyzed detected contracts/attacks­ We identified 2 337 true attack transactions­ Sereum has an overall false positive rate as low as 0.06%­ We identified 5 major classes of root-causes of false positives

(see details in the paper)23

Page 24: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

False Positive CausesI. Lack of field-sensitivity on the EVM level

­ Small types packed densely into one storage address

II. Storage Deallocation­ Deallocation: overwrite with zero

III. Constructor Callbacks­ Instead of passing data as argument, retrieved

IV. Tight Contract Coupling­ Contract execution passes between two or more contracts

V. Manual Re-Entrancy Locking­ Manual locking is identical to malicious re-entrancy pattern

Page 25: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

Sereum Usage­ Detection mode

­ Developer continuously runs Sereum­ Re-play all public Ethereum transactions, looking for attacks­ Developer reacts to attacks

­ Enforcement mode­ Integrate Sereum into all Ethereum clients­ For example: private blockchain based on Ethereum

25

Page 26: Sereum: Protecting Existing Smart Contracts Against Re ...€¦ · 1.We verified that Sereumsuccessfully detects the new attack patterns 2.Evaluation on the Ethereumblockchain We

References­ L. Luu, D.-H. Chu, H. Olickel, P. Saxena, and A. Hobor, “Making Smart Contracts

Smarter”, ACM CSS 2016­ P. Tsankov, A. Dan, D. D. Cohen, A. Gervais, F. Buenzli, and M. Vechev, “Securify:

Practical Security Analysis of Smart Contracts”, ACM CCS 2018­ S. Kalra, S. Goel, M. Dhawan, and S. Sharma, “ZEUS: Analyzing Safety of Smart

Contracts”, NDSS 2018­ J. Krupp and C. Rossow, “TeEther: Gnawing at Ethereum to Automatically Exploit

Smart Contracts,” USENIX Security 2018­ I. Nikolic, A. Kolluri, I. Sergey, P. Saxena, and A. Hobor, “Finding The Greedy,

Prodigal, and Suicidal Contracts at Scale”, ACSAC 2018­ S. Grossman et al., “Online Detection of Effectively Callback Free Objects with

Applications to Smart Contracts”, POPL 2018.­ S. Tikhomirov, E. Voskresenskaya, I. Ivanitskiy, R. Takhaviev, E. Marchenko, and Y.

Alexandrov, “SmartCheck: Static Analysis of Ethereum Smart Contracts,” 2018.

26