• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

如何搜索嵌入式软件中的漏洞


Recommended Posts

嵌入式软件是黑客的热门目标,因为嵌入式系统存在于几乎所有现代设备中。保护嵌入式软件的安全需要专业的开发技能,因为嵌入式设备可以运行的代码量受到严重限制,有时发布后无法更新安全配置。这就是为什么开发人员在搜索潜在漏洞时必须非常注意的原因。

在我们的上一篇文章中,我们讨论了对嵌入式系统的常见攻击(顶部和底部)。这一次,我们的一位专家分享了他的知识,如何快速搜索基于Linux的嵌入式软件中的漏洞,自动化这个过程,并验证安全问题是否真的威胁到您的软件。

本文对从事嵌入式软件和固件的安全测试人员、QA工程师和软件开发人员非常有用。

嵌入式软件漏洞的利用有多危险?

嵌入式软件是控制嵌入式系统运行的代码。创建这样的系统是为了在更大的机制中执行特定的功能。它们体积小,节能,可以实时工作。这就是为什么这样的系统被广泛应用于现代设备:交通灯、汽车、计算机、飞机、冰箱、心脏起搏器等。

嵌入式系统的广泛使用使其软件成为黑客攻击的目标。网络犯罪分子在嵌入式软件代码中寻找已发布的0天漏洞,以控制设备或窃取他们收集的数据。

让我们来看看在广泛使用的嵌入式系统中发现的几个漏洞示例,并探讨利用这些漏洞可能造成的后果:

十万火急//11、 —Security研究人员在VxWorks固件中发现11个0天漏洞。这个实时操作系统(RTOS)用于大约20亿台设备,包括医疗和制造设备、基础设施元素和电话。这些漏洞允许黑客远程执行代码和控制设备。

小米米家智能安全——小米制造的智能摄像头存在安全问题,允许其所有者(和犯罪分子)在他人家中观看视频流。由于小米智能摄像头用于安防系统,这种有缺陷的摄像头固件使主人的家不安全。

汽车控制系统3354的一组安全研究人员进行了一项试验,以测试汽车控制系统的安全性。这些系统管理着现代汽车中几乎所有设备的运行。研究人员在与汽车电控单元的通信中引入了一系列虚假数据包。之后,他们能够启动和关闭刹车,并干扰发动机,锁,仪表板,灯和无线电。

高通的移动台调制解调器—— 31%的智能手机使用这种芯片来处理语音通话、短信和高清录音。一组安全研究人员发现,它容易受到安装在用户手机上的恶意应用程序执行的堆溢出攻击。黑客可以用它来监控用户的电话或访问通话和短信的历史记录。

这些案例清楚地表明了漏洞搜索和安全测试的重要性。让我们看看如何检测嵌入式软件开发中使用的嵌入式固件和库的漏洞。我们将从获取更多关于基于Linux的系统中的一日漏洞利用的信息开始这个过程。

1天漏洞是已经发现并报告的漏洞。搜索此类漏洞通常从发现和检查设备固件使用的库开始。

使用基于Linux的固件,我们可以简单地在固件核心中写下所有的库及其版本。最好尽可能多地识别库,以确保我们不会遗漏任何漏洞。然而,有经验的安全研究人员只能寻找他们知道可能包含漏洞的特定库。

如果我们使用单片固件,我们必须分析常量来发现所使用的库。例如,我们可以通过检查调试消息或在代码中查找带有库版本的行来找到其中的一些库。

一旦我们有了固件中实现的库的列表,我们就可以使用以下资源中的数据来搜索这些库中的已知漏洞:

收集有关1 day漏洞的报告漏洞数据库

日语漏洞描述

国家脆弱性数据库

CVE细节

的常见漏洞和暴露

当用户发现新问题时,他们可以创建漏洞报告并将其上传到这些数据库。报告可以包含任何代码中的安全问题数据:固件、操作系统、驱动程序等。因为任何人都可以注册安全问题,所以这些数据库中的漏洞报告并不总是质量最好的。例如,报告可能包含单个库版本的漏洞描述,但不包含其他版本的信息。

设备漏洞也是如此,尤其是智能手机。由于设备的多样性,几乎不可能测试所有设备版本的特定漏洞,因此研究人员测试了他们可以访问的几个模型。

这就是为什么我们必须寻找其他关于漏洞的数据来源,比如错误跟踪系统。

有时,开发人员会在嵌入式软件中发现漏洞,

但没有将它们注册到上述数据库中,因为他们将这些漏洞视为小错误。例如,如果开发人员检测到缓冲区溢出等问题,他们可以修复它们并继续前进,而无需创建报告。了解此类漏洞的唯一方法是检查错误跟踪系统。 

例如,我们可以使用单个 JQL 请求在专用错误跟踪系统中搜索Qt平台错误:

image.png

此请求将帮助我们找到 Qt 5.3.1 中可能导致该平台崩溃的关键漏洞。

一旦我们完成了对潜在安全问题的搜索,就该评估来自已发现漏洞的危险级别了。让我们看看如何确定哪些错误需要立即修复,哪些可以稍后处理。

验证发现的漏洞

一旦我们有了可能的软件漏洞列表,下一步就是验证哪些是对我们设备的实际威胁。

以下是验证至关重要且不能跳过的三个原因:

1.漏洞报告可能包含错误、不准确或过时的数据。

2.我们的库版本可能与安全研究人员测试的版本不同。即使它具有相同的版本号,库也可以从不同的源编译或使用不同的编译设置。

3.报告的漏洞可能仅与具有特定架构的应用程序相关,因此在我们的应用程序中生成的命令集可能根本不存在此漏洞。

image.png验证已发现漏洞的原因

验证漏洞对您的软件可能产生的影响的一种可靠方法是检查其在漏洞数据库中的分数。大多数数据库都有一个系统来对每个漏洞的严重性进行排名,例如通用漏洞评分系统(CVSS) 分数,它可以帮助软件开发人员确定他们应该首先关注哪些安全问题。 

例如,允许黑客远程执行代码或提升权限的漏洞在 CVSS 中得分为 10 分(满分 10 分)。如此高分的 bug 非常少见,这就是为什么在大多数情况下,我们仍然需要在 bug 修复阶段之前分析报告。

然而,我们的经验表明,分数低于 7 的漏洞通常描述了难以重现和利用的漏洞。此类漏洞不允许黑客控制代码执行或要求他们将漏洞插入到确切的内存地址。安全测试人员需要花费数小时试图重现此类漏洞。这就是为什么最好专注于更有害的攻击。

这是您可以通过四个步骤验证嵌入式软件漏洞的方法:

1.过滤得分为 7 或更高的漏洞报告列表,并从列表中排除所有得分较低的报告。

2.排除包含很少或没有技术信息的报告。如果软件供应商禁止发布有关其产品的技术数据,他们的漏洞报告将不会包含代码中使用的函数的名称、指向源代码中可以修复检测到的问题的更改的链接、即用型漏洞等. 此类报告仅向我们提供了漏洞的一般描述,没有关于如何检测和重新创建它的线索。

3.最终确定最可能和最危险的安全问题列表,并开始在您的代码中验证它们。在这个阶段,您需要使用反汇编程序来找到导致每个漏洞的确切代码,并检查它是否包含修复程序。

4.重现使漏洞影响您的架构的环境。如果您发现代码中确实存在漏洞,请着手修复它。

image.png

如何验证发现的漏洞

即使对于经验丰富的开发人员来说,搜索漏洞并验证它们是否会威胁到您的嵌入式软件也是一个耗时的过程。幸运的是,我们可以通过自动化来显着加速它。让我们看看几个至少可以部分自动化发现代码漏洞的工具。

自动化漏洞搜索

自动化工具为寻找安全问题的人节省了数小时的工作时间。通常,他们会定位一个已知漏洞或可疑代码,之后 QA 专家或开发人员必须对其进行分析,并确定此代码是否真的造成了漏洞并需要修复。 

使用自动化工具时,重要的是要记住它们并没有为安全测试人员完成所有工作。此外,他们可能无法发现软件中的所有潜在漏洞,并可能返回误报。

image.png

漏洞搜索自动化的三个工具

固件分析和比较工具(FACT) 是我们在 Apriorit 经常使用的工具之一,用于在查找嵌入式项目中的漏洞时节省时间。FACT 为各种类型的架构检查基于 Linux 的固件:x86、ARM、MIPS 和 PowerPC。它可以使用固件映像或内部带有 rootfs 存档的 tar.gz 存档作为输入。输出是固件内所有文件的版本列表以及来自国家漏洞数据库的所有相应漏洞。

· FACT 无法 100% 准确确定文件版本,也不会验证发现的漏洞。但是,它会自动执行漏洞搜索的初始阶段。例如,FACT 需要大约半小时来分析包含 3,000 个文件并占用 1 GB 磁盘空间的固件。一般的开发人员至少需要几个小时来手动分析此类固件并起草一份可能的漏洞列表。

· Emba是另一个有用的工具,它允许安全测试人员分析基于 Linux 的嵌入式设备和基于 RTOS 的系统的固件映像。它还可以分析内核配置。在分析过程中,emba 会突出显示固件中可能导致漏洞的可疑代码。该工具显着加快了安全测试人员的漏洞搜索速度,因为他们不必自己分析固件。 

· FwAnalyzer是一个分析文件系统镜像的工具。它适用于 ext、FAT、SquashFS 和 UBIFS 文件系统。FwAnalyzer 将文件系统映像与开发人员创建的包含固件文件和目录的各种规则的比较文件进行比较。它还可以帮助开发人员检查文件的内容,从中提取数据,并检测不同版本的文件和文件树的变化。作为其分析的结果,FwAnalyzer 创建一个报告,其中包含它发现的所有差异或开发人员请求的数据。

结论

尽可能多地收集有关披露的漏洞的信息是保护嵌入式软件的第一步。尽管似乎有很多关于此类安全问题的数据,但存在花费太多时间研究它们或遗漏重要信息的风险。这就是为什么开发人员和安全研究人员需要一种算法来验证发现的漏洞并确定其优先级。

Link to comment
Share on other sites