Ferret is the first automatic test generator for DNS nameserver implementation RFC compliance.
The test case generation module is implemented in C# and symbolically executes the Zen model of the authoritative DNS, which is based on our updated DNS formal semantics. The formal semantics were part of the earlier SIGCOMM paper we published. The testing module uses Docker to test implementations.
Follow the steps mentioned in test case generation README to generate tests using Zen. Use either the Zen generated tests or custom tests to test implementations by following the steps mentioned in DifferentialTesting README. To simply serve a zone using an implementation docker container follow these steps.
📃 NSDI 2022 -- SCALE: Automatically Finding RFC Compliance Bugs in DNS Nameservers
@inproceedings {278336,
author = {Siva Kesava Reddy Kakarla and Ryan Beckett and Todd Millstein and George Varghese},
title = {{SCALE}: Automatically Finding {RFC} Compliance Bugs in {DNS} Nameservers},
booktitle = {19th USENIX Symposium on Networked Systems Design and Implementation (NSDI 22)},
year = {2022},
isbn = {978-1-939133-27-4},
address = {Renton, WA},
pages = {307--323},
url = {https://www.usenix.org/conference/nsdi22/presentation/kakarla},
publisher = {USENIX Association},
month = apr,
}
Legend - Fixed: ✅ Confirmed: ☑️ Bug but not fixing it:
# Implementations with unreported issues due to missing or unimplemented features