We present a constructive proof that a single C program, the \emph{Vulnerability Factory}, admits a countably infinite set of distinct, independently CVE-assignable software vulnerabilities. We formalise the argument using elementary set theory, verify it against MITRE's CVE Numbering Authority counting rules, sketch a model-checking analysis that corroborates unbounded vulnerability generation, and provide a Turing-machine characterisation that situates the result within classical computability theory. We then contextualise this result within the long-running debate on whether undiscovered vulnerabilities in software are \emph{dense} or \emph{sparse}, and introduce the concept of \emph{vulnerability abundance}: a quantitative analogy to chemical elemental abundance that describes the proportional distribution of vulnerability classes across the global software corpus. Because different programming languages render different vulnerability classes possible or impossible, and because language popularity shifts over time, vulnerability abundance is neither static nor uniform. Crucially, we distinguish between infinite \emph{vulnerabilities} and the far smaller set of \emph{exploits}: empirical evidence suggests that fewer than 6\% of published CVEs are ever exploited in the wild, and that exploitation frequency depends not only on vulnerability abundance but on the market share of the affected software. We argue that measuring vulnerability abundance, and its interaction with software deployment, has practical value for both vulnerability prevention and cyber-risk analysis. We conclude that if one programme can harbour infinitely many vulnerabilities, the set of all software vulnerabilities is necessarily infinite, and we suggest the Vulnerability Factory may serve as a reusable proof artifact, a foundational `test object',for future formal results in vulnerability theory.
翻译:我们给出一个构造性证明,表明存在一个C程序(称为“漏洞工厂”)可以产生可数无限个不同的、可独立分配CVE编号的软件漏洞。我们使用初等集合论对论证进行形式化,并根据MITRE的CVE编号机构计数规则对其验证,勾勒出支持无界漏洞生成的模型检验分析,并提供图灵机刻画将该结果置于经典可计算性理论框架中。随后,我们将该结果置于关于软件中未发现漏洞是“密集”还是“稀疏”的长期争论语境中,并引入“漏洞丰度”这一概念:这一定量类比于化学元素丰度,描述了全球软件语料库中漏洞类别的比例分布。由于不同编程语言使不同漏洞类别成为可能或不可能,且语言流行度随时间变化,漏洞丰度既非静态亦非均匀。关键的是,我们区分了无限个“漏洞”与规模小得多的“利用集合”:经验证据表明,已公布CVE中不足6%曾在实际环境中被利用,且利用频率不仅取决于漏洞丰度,还与受影响软件的市场份额相关。我们认为,测量漏洞丰度及其与软件部署的相互作用,对漏洞预防和网络风险分析具有实际价值。我们得出结论:若单个程序可容纳无限漏洞,则所有软件漏洞的集合必然无限。建议将漏洞工厂用作可复用的证明工件——一个基础性“测试对象”——用于未来漏洞理论中的形式化结果。