🤖 AI Summary
Automated code translation—such as from C to memory-safe languages—often introduces semantic discrepancies that can lead to security vulnerabilities, yet manual verification is prohibitively expensive. To address this challenge, this work proposes Cozy, the first tool to perform post-translation, binary-level differential symbolic execution that simultaneously analyzes the source program and its translated binary to automatically detect behavioral divergences. Cozy incorporates developer feedback to exempt changes deemed semantically acceptable, while providing formal equivalence guarantees for all other behaviors. This human-in-the-loop approach achieves a strong consistency guarantee: the translated binary is formally equivalent to the original except for explicitly approved modifications. Consequently, Cozy enables secure, reliable code migration, vulnerability patching, and auditing with high assurance.
📝 Abstract
Modern high-assurance software systems development favors memory safe languages such as SPARK (ADA) or Rust. However, developers often encounter non-memory safe code (e.g., C) in legacy systems and libraries which would be prohibitively expensive or risky to re-write. In response, developers have begun turning to machine learning/AI systems and other automated code translators. Automated translation comes with its own risks, however. The original and ported code are not precisely the same, semantically - otherwise there would be no point in performing the translation. To reduce these risks, we have developed cozy, a comparative binary analysis tool that simultaneously analyzes a binary compiled from "unsafe" source code and a binary compiled from a translation of the source code to a memory safe language. cozy walks the developer through differences in the behavior of the two binaries, presenting each difference and asking the user to assess whether the difference is intentional (good) or erroneous. Outside of the flagged differences, the binaries are formally verified to be equivalent. Consequently, the review process guarantees equivalence modulo changes approved by the developer. cozy has applications to automated translation, bug correction, code reviews, operation authorization, and automatic translation.