3.3 竞争条件
2025年09月21日
3.3 竞争条件
竞争条件是在现代计算机系统中使用并发(concurrency)的结果。并发发生于两个或更多的独立执行流(execution flow)能够同时运行的情况下。独立的执行流包括线程(thread)、进程(process)和任务(task)。多个执行流的并发执行能力是现代计算环境不可或缺的成分。不受控制的并发会导致不确定的行为(也就是说,在给定相同的输入集的情况下,程序会表现出各异的行为)。并发流的非预期执行顺序会导致不受欢迎的行为,我们称之为竞争条件,它是一种软件缺陷,并且通常是漏洞的来源。
竞争条件的存在,有三个必不可少的属性。
(1)并发属性:必须存在至少两个并发执行的控制流。
(2)共享对象属性:两个并发流必须访问一个共享的竞争对象(race object)。
(3)改变状态属性:必须至少有一个控制流会改变竞争对象的状态。
通过竞争条件漏洞,非授权用户有可能破坏系统的保密性、完整性和可用性,甚至获得系统的控制权。对这种漏洞模式及其检测技术进行深入研究对提高系统和软件的安全性很有意义。