eBPF-Based Build Provenance for Software Dependency Analysis

Published:

  • Duration: September 2023 to March 2024
  • Location: Oracle Labs Zurich

Motivation

We provide a blackbox approach to reverse enginner the software dependencies by monitoring syscalls during the build process. This generic approach benefits from the low cost of framework customization and adaption. To improve high correctness, we allow user-level function instrumentation (e. g. JVM class loaders).

Overview

End users: provide build container + configuration -> execute the build container -> software dependencies

Framework developers: provide example build containers of the framework -> the system finds interesting tracepoints -> add tracepoints to support fine-grained analysis of the framework.

Supported frameworks until Jan 2024:

  • Maven (Java)
  • Gradle (Java)
  • Cargo (Rust)
  • Go
  • Conan (C/C++)

Related Techniques

  • Online tracing with eBPF:
    • eBPF
    • Python BCC Framework
    • Python Multiprocessing
  • Customization:
    • JVM Internal (Class Loading: differentiates buildtime and compiled dependencies).
  • Bash Scripts

Status

Completed in March 2024. Patents submitted.