A domain-specific language for filtering in application-level gateways

Hampus Balldin, Christoph Reichenbach
2020 Proceedings of the 19th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences  
Application-level packet filtering is a technique for network access control in which an "application-level gateway" intercepts network packets at the application level (e.g., HTTP, FTP), scans them for security concerns and optionally logs, rewrites or discards them. Existing application-level filters express their filtering rules in general-purpose languages, which limits the correctness guarantees available for them. We present the first declarative language for applicationlevel network
more » ... ring, developed at Advenica AB. Our DSL uses security assertions to express properties that packets must have to be allowed through the network (e.g., "IMAP packet contains no executable attachment" or "SQL reply contains only explicitly permitted columns"), along with remedies that either reject or rewrite undesirable packets. We have designed the language around the needs of network filter developers, with a focus on correctness: our language can statically verify several properties of filter programs, such as well-formedness of the outcome, confluence, and termination, with the help of an off-the-shelf SMT solver. Our initial results show that the language can express many typical filtering tasks, closely maps to the application domain, and provides strong correctness guarantees. CCS Concepts: • Networks → Application layer protocols; • Software and its engineering → Domain specific languages; • Security and privacy → Network security.
doi:10.1145/3425898.3426955 fatcat:kfgvwmtuxnek5nn6ohwexfkc5i