24
Konstantinos Karagiannis CTO, Security Consulting @konstanthacker

@konstanthacker Konstantinos Karagiannis

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: @konstanthacker Konstantinos Karagiannis

Konstantinos KaragiannisCTO, Security Consulting@konstanthacker

Page 2: @konstanthacker Konstantinos Karagiannis

ethereum is not bitcoin

“The key component is this idea of a Turing-complete blockchain”--Vitalik Buterin

Page 3: @konstanthacker Konstantinos Karagiannis

smart contracts• Business logic

programs• Semi autonomous• Move value,

enforce agreements

• Creativity the limit

Page 4: @konstanthacker Konstantinos Karagiannis

literally a billion reasons

Page 5: @konstanthacker Konstantinos Karagiannis

caveats

• No zero days• No customer code• Yes, a methodology• No, I doubt smart contracts

will get that smart

Page 6: @konstanthacker Konstantinos Karagiannis

solidity• Language of choice• High level, compiles to bytecode• Similarities to JavaScript and C• Supports:

• libraries• inheritance• user-defined types• assembly inline

Page 7: @konstanthacker Konstantinos Karagiannis

dev tools

• .sol files > bytecode > blockchain• Auditing .sol easier with

highlighting• Atom my fave, with plugins

• language-ethereum• etheratom

• Remix–browser based

Page 8: @konstanthacker Konstantinos Karagiannis

solgraph

Page 9: @konstanthacker Konstantinos Karagiannis

oyente

• Symbolic execution tool• Works with EVM byte

code or .sol files• Detects 4* vulns• Low false positive rate

Page 10: @konstanthacker Konstantinos Karagiannis

basic methodology• Interview devs• Load .sol file, preferably with highlighting• Try compiling• Dissect code flow—optional solgraph• Run oyente (cross fingers)• Manually verify 3/4 vuln yay/nays• Proceed to manually check for following

vulns…

Page 11: @konstanthacker Konstantinos Karagiannis

reentrancy

Page 12: @konstanthacker Konstantinos Karagiannis

leave off the first “re” for savings

Page 13: @konstanthacker Konstantinos Karagiannis

unchecked send in king of the ether

Page 14: @konstanthacker Konstantinos Karagiannis

unchecked send

Page 15: @konstanthacker Konstantinos Karagiannis

gas limits

Page 16: @konstanthacker Konstantinos Karagiannis

withdraw don’t send

Page 17: @konstanthacker Konstantinos Karagiannis

withdrawn not sent

Page 18: @konstanthacker Konstantinos Karagiannis

encryption

Page 19: @konstanthacker Konstantinos Karagiannis

transaction-ordering dependence

Page 20: @konstanthacker Konstantinos Karagiannis

call-stack depth limit

Page 21: @konstanthacker Konstantinos Karagiannis

variable or function ambiguity

Page 22: @konstanthacker Konstantinos Karagiannis

odds and ends

• Input validation – require(condition)• Timestamp dependence• Business logic flaws• Separating public/private data

Page 23: @konstanthacker Konstantinos Karagiannis

get involved

Page 24: @konstanthacker Konstantinos Karagiannis

dox me … or just keep in touch

@konstanthacker

[email protected]