Realizing flow security in a concurrent environment is extremely challenging, primarily due to non-deterministic nature of execution. The difficulty is further exacerbated from a security angle if sequential threads disclose control locations through publicly observable statements like print, sleep, delay, etc. Such observations lead to internal and external timing attacks. Inspired by previous works that use classical Hoare style proof systems for establishing correctness of distributed (real-time) programs, in this paper, we describe a method for finding information leaks in concurrent programs through the introduction of leaky assertions at observable program points. Specifying leaky assertions akin to classic assertions, we demonstrate how information leaks can be detected in a concurrent context. To our knowledge, this is the first such work that enables integration of different notions of non-interference used in functional and security context. While the approach is sound and relatively complete in the classic sense, it enables the use of algorithmic techniques that enable programmers to come up with leaky assertions that enable checking for information leaks in sensitive applications.
翻译:在同时的环境中实现流动安全极具挑战性,主要原因是执行过程没有确定性。如果连续线通过印刷、睡眠、延迟等公开可见的语句披露控制地点,那么从安全角度看,困难就更加严重。这种观察导致内部和外部时间攻击。在以前使用古典Hoare风格验证系统确定分布式(实时)程序正确性的工作的启发下,我们在本文件中描述了一种方法,通过在可观测到的程序点引入泄漏性说明来发现同时程序的信息泄漏。我们具体说明了类似于传统说法的泄漏性断言,我们展示了如何在同时环境中发现信息泄漏。据我们所知,这是首次能够将功能和安全环境中使用的不干预的不同概念整合在一起的此类工作。虽然这种方法在经典意义上是健全和相对完整的,但能够使用算法技术,使程序员能够发现泄漏性断言,从而能够对敏感应用中的信息泄漏进行检查。