It is 60 years since the first publication of the ASCII standard, something we
now very much take for granted. ASCII introduced the Escape character;
something we still use but maybe don't think about very much. The terminal is a
tool all of us use. It's a way to interact with nearly every modern operating
system. Underneath it uses escape codes defined in standards, some of which
date back to the 1970s.
Like anything which deals with untrusted user input, it has an attack surface.
20 years ago HD Moore wrote a paper on terminal vulnerabilities, finding
multiple CVEs in the process. I decided it was time to revisit this class of
vulnerability.
In this talk I'll look at the history of terminals and then detail the issues I
found in half a dozen different terminals. Even Microsoft who historically
haven't had strong terminal support didn't escape a CVE. In order to exploit
these vulnerabilities they often need to be combined with a vulnerability in
something else. I'll cover how to exploit these vulnerabilities in multiple
ways.
Overall this research found multiple remote code execution vulnerabilities
across nearly all platforms and new unique ways to deliver the exploits.