  We present IvySyn, the first fully-automated framework for discovering memory
error vulnerabilities in Deep Learning (DL) frameworks. IvySyn leverages the
statically-typed nature of native APIs in order to automatically perform
type-aware mutation-based fuzzing on low-level kernel code. Given a set of
offending inputs that trigger memory safety (and runtime) errors in low-level,
native DL (C/C++) code, IvySyn automatically synthesizes code snippets in
high-level languages (e.g., in Python), which propagate error-triggering input
via high(er)-level APIs. Such code snippets essentially act as "Proof of
Vulnerability", as they demonstrate the existence of bugs in native code that
an attacker can target through various high-level APIs. Our evaluation shows
that IvySyn significantly outperforms past approaches, both in terms of
efficiency and effectiveness, in finding vulnerabilities in popular DL
frameworks. Specifically, we used IvySyn to test TensorFlow and PyTorch.
Although still an early prototype, IvySyn has already helped the TensorFlow and
PyTorch framework developers to identify and fix 61 previously-unknown security
vulnerabilities, and assign 39 unique CVEs.
