攻击向量、攻击面、漏洞、利用:区别在哪里?

信息安全 开发 攻击向量
2021-08-24 09:30:58

我很难确定攻击向量/攻击面/漏洞和利用之间的区别。

我认为漏洞和漏洞利用之间的区别如下:漏洞是可以用来造成伤害的东西(例如缓冲区溢出),但并不一定意味着可以做任何事情。漏洞利用以“生产性”的方式利用漏洞(例如,在触发错误消息后读取内存中的以下字节)。

根据维基百科(漏洞)

要利用漏洞,攻击者必须至少拥有一种可以连接到系统弱点的适用工具或技术。在这个框架中,漏洞也被称为攻击面。

因此,攻击面和漏洞似乎是 IT 安全背景​​下的同义词(?)

有人可以定义这些词或举例说明它们之间的区别吗?

3个回答

所有 4 个术语都非常不同:

描述攻击:

  • 攻击向量:进行攻击的“路线”。SQLi 通常使用 Web 应用程序的浏览器客户端执行。Web 应用程序是攻击媒介(可能还有 Internet、客户端应用程序等;这取决于您的关注点)。
  • Exploit利用漏洞的方法。用于向 Web 应用程序发送 SQL 命令以利用未经处理的用户输入的代码是“漏洞利用”。

描述目标:

  • 攻击面:描述一个人如何暴露于攻击。如果没有防火墙来限制阻止多少端口,那么您的“攻击面”就是所有端口。阻塞除端口 80 之外的所有端口会将您的“攻击面”减少到单个端口。
  • 脆弱性:暴露风险的弱点。未经消毒的用户输入可能会通过 SQLi 方法构成“漏洞”。

我们也可以从用户作为目标的角度来看待这个问题。攻击者将受感染的 PDF 作为电子邮件附件发送给用户。用户打开 PDF,被感染并安装了恶意软件。“攻击向量”是电子邮件,“利用”是 PDF 中的代码,“漏洞”是 PDF 查看器中允许代码执行的弱点,“攻击面”是用户和电子邮件系统。

据我所知,这是正确的,但我相信有些人可能会在措辞上略有改进:

  • 攻击向量是攻击的“类型”,它允许攻击者成功。
  • 攻击面是可以攻击多少个端点,例如,如果您的目标是一个网站,使用脚本语言(PHP/Node...)和数据库(MySql/Postgre...),则攻击面更大如果您的目标是一个没有动态内容和数据库的静态页面。
  • 漏洞是系统中的一个弱点,可用于改变系统的预期行为,有时它们允许内存转储,有时它们允许冒充用户......
  • 漏洞利用是用于进行攻击的工具。

根据我的理解并考虑一个简单的 Web 应用程序作为测试环境,我可以看到它们之间的关系如下:

攻击面用于识别可能包含任何漏洞的系统/Web 的组件/部分,(例如 Web 应用程序身份验证功能)

漏洞评估适用于在攻击面步骤中发现的已识别组件/部分(身份验证),以发现漏洞(例如,无输入验证)

攻击向量(攻击类型)是指根据已识别的漏洞(无输入验证)(例如 SQLI、XSS、FI 等)确定可以进行哪些攻击

漏洞利用指的是针对已识别的漏洞(无输入验证)发起攻击(例如 SQLI 攻击、XSS 攻击、FI 攻击等),以便访问受害机器上的数据或系统。