  Recently, many Deep Learning fuzzers have been proposed for testing of DL
libraries. However, they either perform unguided input generation (e.g., not
considering the relationship between API arguments when generating inputs) or
only support a limited set of corner case test inputs. Furthermore, a
substantial number of developer APIs crucial for library development remain
untested, as they are typically not well-documented and lack clear usage
guidelines.
  To fill this gap, we propose a novel fuzzer named Orion, which combines
guided test input generation and corner case test input generation based on a
set of fuzzing rules constructed from historical data that is known to trigger
vulnerabilities in the implementation of DL APIs. To extract the fuzzing rules,
we first conduct an empirical study regarding the root cause analysis of 376
vulnerabilities in two of the most popular DL libraries, i.e., PyTorch and
TensorFlow. We then construct the rules based on the root causes of the
historical vulnerabilities.
  Our evaluation shows that Orion reports 135 vulnerabilities on the latest
releases of TensorFlow and PyTorch, 76 of which were confirmed by the library
developers. Among the 76 confirmed vulnerabilities, 69 are previously unknown,
and 7 have already been fixed. The rest are awaiting further confirmation.
Regarding end-user APIs, Orion was able to detect 31.8% and 90% more
vulnerabilities on TensorFlow and PyTorch, respectively, compared to the
state-of-the-art conventional fuzzer, i.e., DeepRel. When compared to the
state-of-the-art LLM-based DL fuzzer, AtlasFuzz, Orion detected 13.63% more
vulnerabilities on TensorFlow and 18.42% more vulnerabilities on PyTorch.
Regarding developer APIs, Orion stands out by detecting 117% more
vulnerabilities on TensorFlow and 100% more vulnerabilities on PyTorch compared
to the most relevant fuzzer designed for developer APIs, such as FreeFuzz.
