  Low-end embedded devices are increasingly used in various smart applications
and spaces. They are implemented under strict cost and energy budgets, using
microcontroller units (MCUs) that lack security features available in
general-purpose processors. In this context, Remote Attestation (RA) was
proposed as an inexpensive security service to enable a verifier (Vrf) to
remotely detect illegal modifications to a software binary installed on a
low-end prover MCU (Prv). Since attacks that hijack the software's control flow
can evade RA, Control Flow Attestation (CFA) augments RA with information about
the exact order in which instructions in the binary are executed, enabling
detection of control flow attacks. We observe that current CFA architectures
can not guarantee that Vrf ever receives control flow reports in case of
attacks. In turn, while they support exploit detection, they provide no means
to pinpoint the exploit origin. Furthermore, existing CFA requires either
binary instrumentation, incurring significant runtime overhead and code size
increase, or relatively expensive hardware support, such as hash engines. In
addition, current techniques are neither continuous (only meant to attest
self-contained operations) nor active (offer no secure means to remotely
remediate detected compromises). To jointly address these challenges, we
propose ACFA: a hybrid (hardware/software) architecture for Active CFA. ACFA
enables continuous monitoring of all control flow transfers in the MCU and does
not require binary instrumentation. It also leverages the recently proposed
concept of Active Roots-of-Trust to enable secure auditing of vulnerability
sources and guaranteed remediation when a compromise is detected. We provide an
open-source reference implementation of ACFA on top of a commodity low-end MCU
(TI MSP430) and evaluate it to demonstrate its security and cost-effectiveness.
