Home / Series / Chaos Communication Congress / Aired Order / Season 34 / Episode 167

Type confusion: discovery, abuse, and protection

Speaker: gannimo Type confusion, often combined with use-after-free, is the main attack vector to compromise modern C++ software like browsers or virtual machines. Typecasting is a core principle that enables modularity in C++. For performance, most typecasts are only checked statically, i.e., the check only tests if a cast is allowed for the given type hierarchy, ignoring the actual runtime type of the object. Using an object of an incompatible base type instead of a derived type results in type confusion. Attackers have been abusing such type confusion issues to compromise popular software products including Adobe Flash, PHP, Google Chrome, or Firefox, raising critical security concerns. We discuss the details of this vulnerability type and how such vulnerabilities relate to memory corruption. Based on an LLVM-based sanitizer that we developed, we will show how to discover such vulnerabilities in large software through fuzzing and how to protect yourself against this class of bugs.

English
  • Originally Aired December 30, 2017
  • Runtime 60 minutes
  • Production Code 8848
  • Created December 30, 2017 by
    Administrator admin
  • Modified December 30, 2017 by
    Administrator admin