Reverse Engineering
Closed, heterogeneous platforms and the defenders’ dilemma��Looking back at the last 20 years of RE and looking ahead at the next few
SSTIC 2018 -- Thomas Dullien (“Halvar Flake”)
Progress in Reverse Engineering
Contents of the talk
Chapter 1: �Old man yells at cloud
Personal experience
The 6-7 year pause
�
Expectation set by the published results
The great sobering
Almost everything I tried to use was broken, or did not work reliably (meaning failed when run on any significant real-world-software).
Examples:
Nostalgic feeling or reality?
Chapter 2: �8 problems that hold the RE community back
Some are external (e.g. not the fault of the RE community).
Some are cultural (e.g. mostly our fault).��Please do not be angry with me. I mean no harm and do not wish to insult anyone. Not everything I say applies equally to each project.
���(Not the fault of the RE community. Partially the fault of the security community.)
False “security” by breaking inspectability
False “security”: Examples
Losses
Profits
Profitable !
Profitable !
“Raising the bar” can make commercial attackers long-term profitable!
Debuggability of platforms
���(Not the fault of the RE community.)
“Left shift”: Compressing development stages
Net effect of “left shift”
���(Not the fault of the RE community.)
Economic climate sucks “air” out of RE tools
Difficulties of the RE tools market
���(Somewhat the fault of the RE community.)
Most RE’s are not good developers
Some RE’s derive pride from poor tooling
���
Other blind spots
���
���(Fault of the RE community.)
Way too many frameworks, duplication
�
���
Why?
�
���
���(partial fault of the RE community, partial fault of the academic community, fault of the incentive system)
Tools are written for a paper / presentation
�
���
Tools are written for a paper / presentation
�
���
Tools are written for a paper / presentation
����
“For a successful technology, reality must take precedence over public relations, for nature cannot be fooled.”
Non-reproducibility of results
�
���
���(partial fault of the RE community)
Distributions can bring order to fragmentation
�
���
���(partial fault of the RE community)
We are too focused on one layer (code)
��
�
���
End of yelling.��Apologies for the long rant.
�I do not mean harm.
Chapter 3: �5 suggestions to make things better
One request to platform vendors.
Four requests for us.
Request to the platform vendors: Please stop the nonsense that people that do not have a privesc-bug cannot meaningfully debug / inspect. ��It’s super harmful. And the perceived security gain is not real. Thank you.
Facilitate interoperability, testability, reproducibility.
If we can’t agree on the right tools ...
��
�
���
Collection of Callgraphs, CFGs, Instructions
Raw executable
Collection of Address Spaces with data
Collection of Callgraphs, CFGs, Instructions in IR that is close to SMT
....
If we can agree on some intermediate formats...
��
�
���
Download one set of packages that “just work”.
A RE-tools distribution
��
�
���
Probably requires (2) to work
��
�
���
Do one thing. Do it well. Do it predictably, and reliably, and reproducibly.
Do one thing well
�
��
�
���
If analysts cannot rely on the tool working on real code, it may as well not exist.
Reliably functioning tools
�
��
�
���
Chapter 4: �Looking forward
The coming storm in computing.
The coming changes
�
��
�
���
Impact of cloud
��
�
���
Impact of heterogeneous compute
��
�
���
CPU
GPU
Linear Algebra / ML engine
Wifi Baseband
GSM Baseband
FPGA (?)
???
Impact of heterogeneous compute
��
�
���
Visible race down the stack
��
�
���
Summary
�
�
��
�
���
Several scenarios are possible. Questions?