Modern web applications serve large amounts of sensitive user data, access to which is typically governed by data-access policies. Enforcing such policies is crucial to preventing improper data access, and prior work has proposed many enforcement mechanisms. However, these prior methods either alter application semantics or require adopting a new programming model; the former can result in unexpected application behavior, while the latter cannot be used with existing web frameworks. Blockaid is an access-policy enforcement system that preserves application semantics and is compatible with existing web frameworks. It intercepts database queries from the application, attempts to verify that each query is policy-compliant, and blocks queries that are not. It verifies policy compliance using SMT solvers and generalizes and caches previous compliance decisions for better performance. We show that Blockaid supports existing web applications while requiring minimal code changes and adding only modest overheads.
翻译:现代网络应用程序为大量敏感的用户数据服务,这些数据的获取通常受数据获取政策制约。实施此类政策对于防止数据获取不当至关重要,先前的工作提出了许多执行机制。然而,这些先前的方法要么改变应用语义,要么要求采用新的编程模式;前者可能导致意外应用行为,而后者不能与现有的网络框架一起使用。Blackaid是一个使用政策强制执行系统,它保存了应用程序的语义,与现有的网络框架兼容。它拦截了应用程序中的数据库查询,试图核实每项查询都符合政策,并封存了不正确的查询。它利用SMT解答器核查政策遵守情况,并概括和存储了以往的合规决定,以便提高业绩。我们表明Blackaid支持现有的网络应用程序,同时要求最低限度的代码修改,并只增加少量的管理。