Basic terms and concepts

Basic terms and concepts

Vulnerability

Vulnerability

VUL,Vulnerability的缩写,泛指漏洞。漏洞是指计算机系统中存在可能被攻击者利用的弱点、缺陷或安全漏洞。这些漏洞允许未经授权的访问,如窃取敏感数据,或允许攻击者在目标计算机系统上执行任意操作,如安装恶意软件。此类漏洞可能表现在不同方面,包括软件代码、硬件组件、配置或设计。

CWE

CWE是社区开发的漏洞列表。它提供了一种标准化和结构化的方法来识别和分类这些漏洞,并为每个漏洞分配一个唯一的标识符。例如,CWE-119提到了臭名昭著的“缓冲区溢出”。遵循不同级别的概念抽象,CWE将漏洞组织在树状层次结构中,其中低级CWE ID与高级CWE ID相关联。例如,表示“越界写入”的CWE-787和表示“越界读取”的CWE-125都是属于CWE-119的较低级别类型。

POC

POC,Proof of Concept,中文意思是“概念证明”。这个短语会在漏洞报告中使用,漏洞报告中的POC则是一段说明或者一个攻击的样例,使得读者能够确认这个漏洞是真实存在的。

EXP

EXP,Exploit,中文意思是“漏洞利用”。意思是一段对漏洞如何利用的详细说明或者一个演示的漏洞攻击代码,可以使得读者完全了解漏洞的机理以及利用的方法。

CVE漏洞编号

CVE 的英文全称是“Common Vulnerabilities & Exposures”公共漏洞和暴露,例如CVE-2015-0057、CVE-1999-0001等等。CVE就好像是一个字典表,为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出一个公共的名称。如果在一个漏洞报告中指明的一个漏洞,如果有CVE名称,你就可以快速地在任何其它CVE兼容的数据库中找到相应修补的信息,解决安全问题。

可以在https://cve.mitre.org/网站根据漏洞的CVE编号搜索该漏洞的介绍。

也可以在中文社区http://www.scap.org.cn/上搜索关于漏洞的介绍

0DAY漏洞和0DAY攻击

在计算机领域中,零日漏洞或零时差漏洞(英语:Zero-dayexploit)通常是指还没有补丁的安全漏洞,而零日攻击或零时差攻击(英语:Zero-dayattack)则是指利用这种漏洞进行的攻击。提供该漏洞细节或者利用程序的人通常是该漏洞的发现者。零日漏洞的利用程序对网络安全具有巨大威胁,因此零日漏洞不但是黑客的最爱,掌握多少零日漏洞也成为评价黑客技术水平的一个重要参数。
零日漏洞及其利用代码不仅对犯罪黑客而言,具有极高的利用价值,一些国家间谍和网军部队,例如美国国家安全局和美国网战司令部也非常重视这些信息。据路透社报告称美国政府是零日漏洞黑市的最大买家。

CAN

CAN和CVE的唯一区别是前者代表了候选条目,还未经CVE编辑委员会认可,而后者则是经过认可的条目。 然后,两种类型的条目都对公众可见,条目的编号不会随着认可而改变—仅仅是“CAN”前缀替换成了“CVE”。

BUGTRAQ

一个完整的对计算机安全漏洞(它们是什么,如何利用它们,以及如何修补它们)的公告及详细论述进行适度披露的邮件列表

CNCVE

中国(CN)的 CVE ,是CNCERT/CC(国家计算机网络应急处理协调中心)为漏洞进行编号的一个自己的标准。CNCVE不但包含漏洞的描述予以统一定义,还将包括漏洞的补丁、验证等措施,更方便、有用。

CNVD

国家信息安全漏洞共享平台。是由国家计算机网络应急技术处理协调中心(简称CNCERT)联合国内重要信息系统单位、基础电信运营商、网络安全厂商、软件厂商和互联网企业建立的信息安全漏洞信息共享知识库。

CNNVD

中国国家信息安全漏洞库。是中国信息安全测评中心为切实履行漏洞分析和风险评估的职能,负责建设运维的国家信息安全漏洞库,为我国信息安全保障提供基础服务

CVSS(Common Vulnerability Scoring System)

通用漏洞评分系统,行业公开标准,用来评测漏洞的严重程度,0-10分值越高越严重,美国国家漏洞数据库官网:https://nvd.nist.gov/vuln/search可查询CVE对应CVSS分值

PS:评分会受时间和空间影响,如随着时间推移,漏洞相关补丁越多,可被利用性越低;漏洞存在不同的环境,也会影响漏洞的威胁程度

CPE(Common Platform Enumeration)

以标准化方式为软件应用程序、操作系统及硬件命名的方法

Code Representation

Code Tokens

代码标记是指程序中带有特定语义的词法标记。它们包括标识符(例如变量和函数名)、关键字、分隔符(例如标点符号和分隔符)和运算符(例如算术运算符和逻辑运算符)。通过词法解析,代码片段可以直接表示为一个序列或一组标记。

AST

抽象语法树,是将代码元素组织成树结构的基本代码表示。树叶对应于主代码元素,如变量类型、符号和运算符,而非叶节点表示一组受限的代码结构,如表达式和循环。与词汇解析的代码标记相比,AST除了词汇信息外,还自然地体现了源代码的句法结构。

AST 是源代码的有序树表示结构。 通常,它是代码解析器用来理解程序的基本结构并检查语法错误的第一步表示。 因此,它构成了生成许多其他代码表示的基础,并且 AST V ast 的节点集包括本文使用的其余三种代码表示的所有节点。 从根节点开始,代码被分解为代码块、语句、声明、表达式等,最后分解为形成叶节点的主标记。 主要的AST节点如图所示。所有方框都是AST节点,第一行有具体代码,并注释了节点类型。 蓝色框是 AST 的叶节点,紫色箭头表示子父 AST 关系。

image-20240306214316124

CFG

CFG或控制流图是一个有向图,其中每个节点表示语句的基本块,每条边表示函数内块之间的控制流。CFG是通过识别AST中的控制相关性来构建的。通常要求代码在功能上是完整的和可编译的,以精确地生成CFG。

CFG 描述了程序在执行期间可能遍历的所有路径。 路径选择由条件语句确定,例如 if、for 和 switch 语句。 在CFG中,节点表示语句和条件,它们通过有向边连接以指示控制的转移。 CFG 边缘在图 2 中用绿色虚线箭头突出显示。特别是,流程从入口开始并在出口结束,并且在 if 语句处派生出两条不同的路径。

PDG

程序依赖图,是代码的另一种图形表示,强调代码元素之间的数据和控制依赖关系。与CFG类似,它可以在AST的基础上构建。在构建过程中,某些代码细节被抽象,以更明确地揭示控制和数据依赖关系。

CPG

代码属性图,提出了一种更为综合的代码混合图表示,它集成了从AST、CFG和PDG导出的信息。

数据流图 (DFG)

DFG 跟踪整个 CFG 中变量的使用情况。 数据流是面向变量的,任何数据流都涉及某些变量的访问或修改。 DFG 边表示对相同变量的后续访问或修改。 它在图 2 中用橙色双箭头表示,并在边缘标注了所涉及的变量。 例如,参数b既用在if条件中,又用在赋值语句中。 自然代码序列(NCS) 为了对源代码的自然顺序进行编码,我们使用 NCS 边来连接 AST 中的相邻代码标记。 这种编码的主要好处是保留源代码序列反映的编程逻辑。 NCS 边在图 2 中用红色箭头表示,连接 AST 的所有叶节点。

参考文献

[1]Zhenzhou T ,Binhui T ,Jiajun L , et al.Enhancing vulnerability detection via AST decomposition and neural sub-tree encoding[J].Expert Systems With Applications,2024,238(PB):