首页 资讯时装美容情感健康百科

内核检测 MacOS内核安全性检测

2022-01-02 14:53

MacOS Big Sur自问世以来,近一年来一直没有稳定下来。有人惊叹macOS系统沦落到需要重启电脑才能解决问题的地步。事实上,macOS Big Sur已经让很多用户使用了重启功能。尤其是在使用这个系统的第一个正式版本时,计算机重启的次数比过去几年的总数还多。

与Windows系统相比,macOS升级频繁。其实频繁更新不是问题,关键是系统不稳定,影响日常使用。这个问题在macOS大苏尔上最为突出。尤其是电池问题,MacBook Pro到底是不能充电还是耗电快,一直困扰着很多用户。

今年年初,苹果发布了macOS Big Sur的源代码。它包括了MAC OS操作系统的内核xnu。几年前,PVS-Studio已经检查过内核源代码,与macOS上发布的分析器一致。PVS-Studio是俄罗斯公司开发的一款简单易用的静态代码分析工具。其主要目的是在初期识别和修复错误,防止后期浪费大量时间寻找错误,提高效率,保证质量。PVS-Studio可用于检测程序源代码中的错误,并使用该软件帮助用户快速检测C/C ++/C ++ 0x应用程序源代码中的错误。

XNU-X不是Unix,它是苹果为Mac OS X开发的..这个内核的源代码是根据APSL和OC Darwin在20年前发布的。在过去,你甚至可以安装达尔文作为一个成熟的操作系统。但是,现在不可能了。源代码主要基于其他开源项目。这就是它的源代码被发布的原因。

你可以点击这里找到组件的源代码在https://opensource.apple.com/.我用GitHub上的图片来检查它。

如上所述,几年前,PVS-Studio已经检查了内核源代码。有关相关发现,请点击此https://www.viva64.com/en/b/0566/。

最新的内核安全检测

说实话,这个项目代码比较复杂,我没有使用这样的代码库的经验。但是,PVS-Studio的警告非常详细。这里有一个文档链接,上面有正确和错误代码的例子。在这次检查中,时钟计数为1346 *。C文件,1822个C/ c++头文件和225个*。项目中的cpp文件。

片段N1

根据生成的bus_to_dec_rate_den字段的名称,除数和被除数是混淆的。这段代码的开发者可能认为初始值会改变,所以结果不再等于0。但是,这个代码对我来说还是很可疑的。

片段N2

PVS-Studio警告:V560条件表达式的一部分始终为假:索引

这是一个示例,说明分析器如何跟踪变量的可能值,并将索引变量与函数开头的零进行比较。如果它小于零,则在内部块中将为该变量分配一个不小于零的值。因此,下一个外部if会再次检查索引变量的值是否小于零。然而,这是不可能的。

这不会改变程序的逻辑,但可能暗示其他条件。也就是说,在任何情况下,额外的检查都不能使代码更加易读和易懂。

片段N4

在condition . kern _ descriptp . c _ 99 3916中使用了V1019复合赋值表达式“n -= i”。

这段代码很难阅读,所以也许应该简化:

这段代码看起来不太有效,但绝对更容易理解。要快速检查代码等价性,请转到Godbolt。顺便说一下,你可以在那里测试PVS-Studio检查器的工作。在本服务的工具中很容易找到分析器。

如果没有启用优化,汇编代码将只有几行。但是,要注意if的体。没有使用新的n值。也就是说,这里很有可能不需要布置任务。

此外,当进一步使用n变量时,源代码可能会导致错误。如果表达式

片段N9

PVS-Studio警告:V571重复检查。' If '已在第245行的第246行选中。audit _ mac.c 246 c

PVS-Studio警告:V547表达式' ar-> k _ ar。ar _ arg _ MAC _ string = = null '始终为真。audit _ mac.c246

解析器同时对这段代码发出了两个警告。

您可能会注意到,第一个if中的检查与第二个if中的检查相同。此外,第二次检查还有另一种解释:

因此,第二次检查不应有内部验证。我们只需要戒掉这种方法。因此,内部检查很可能是偶然重复的,没有任何意义。

虽然也许其他字段应该在内部检查中检查。但是,这里有一个复制粘贴错误。开发人员忘记更正字段名。

片段N12

PVS-工作室警告:V567没有定义行为

宏很难理解,但事实证明这种情况更容易。分析从表达式OSSwapInt16开始。

然后,我意识到有一个更简单的方法。我刚打开了。我在项目检查后留下了文件。

最重要的是,这部分表达引起了我们的注意:

表达式中的运算符都不是序列点,因为我们不知道|运算符的哪个参数会先赋值,所以*uscp的值是未定义的。

PVS-Studio为V567检查提供了非常详细的文档。如果您想知道为什么这样的代码会导致未定义的行为,您可以详细阅读本文档。

此时程序员只打算将递增*ucsp的值增加一倍,实际上这个值会增加三倍。第二,这个过程是无形的,不清晰的。这就是为什么宏非常危险。很多情况下,最好写一个普通的函数。编译器最有可能自动执行替换,因此性能不会下降。

片段N13

PVS-Studio警告:V567没有定义行为。让我们看看htobe64调用的行。经过预处理,分析师发现银行可疑:

这个问题其实和前面的例子是一样的。具有|和&操作数的内部链中没有序列点。因此,每次操作过程中pf_status.stateid的值是未知的,结果也是不确定的。

同样,变量会连续递增几次。

摘要

这次分析器发现的错误比之前的检查少,证明XNU开发中很可能使用了静态分析等代码质量控制工具。几乎可以肯定,这个项目使用的是Clang静态分析程序。但是如上所述,PVS-Studio还是发现了错误和漏洞。

参考资料和来源:https://www.viva64.com/en/b/0818/

相关阅读
阿玛尼手表多少钱 armani阿玛尼满天星手表多少钱?
相信很多人都听说过这款阿玛尼制造的手表。这一系列手表是专门为好看而设计的,戴在手上给人一种高级的感觉。阿玛尼阿玛尼婴儿手表的价格是多少?阿玛尼满天星手表价格阿玛尼的手表在国内售价4000多,国外基本在2000-6000元之间波动。所谓的优雅,不是一瞬间的抢眼,而是永远记得!Emporio Armani一贯诠释休闲与优雅,表达活力与自由,打造充满诱惑的独特风格。EmporioArmani已经成为全世0在看 04-23
pinko是什么牌子 pinko是哪个国家的牌子?价格美好的小众包包
我相信很多人都听过pinko的燕子包,这是很多网络名人的必备品。再来说说pinko是哪个国家的。pinko是哪个国家的牌子品高是一个意大利品牌。品高,一个为年轻女性设计并在意大利崛起的时尚品牌,有着鲜明的形象。其强劲的发展势头已经成为可以理解的事实,并以其迷人的风格和强大的耐磨性在时尚界赢得了良好的声誉。品高,一个新的品牌,以其强大的生命力迅速发展。短短10年,就传遍了欧美。随着全球化的趋势,品高0在看 04-23
化妆品品牌大全排行 日本最受欢迎的护肤品牌有哪些?日本护肤品品牌大全
护肤品是我们日常生活中非常常见的护肤品。日本护肤品很受欢迎,也很受大家喜爱。日本护肤品太容易长草了。日本最受欢迎的护肤品牌有哪些?日本护肤品牌全集。日本最受欢迎的护肤品牌有哪些SK-II如果你还在担心在日本买什么护肤品,可以考虑SK-II!日本是世界上唯一的SK-II产地。据说每个去日本的女生都要去免税店抢SK-II仙水~ ~特别是在日本的免税店,还可以找到很多SK-II的特别套装,在日本享受SK0在看 04-23
克罗心项链 chrome hearts克罗心是奢侈品吗?明星都喜欢晒的银饰
相信大家对chrome红心的设计都特别熟悉。权志龙、吴亦凡等一线大咖特别喜欢她的饰品,很有个性。先说chrome hearts是不是奢侈品。克罗心是奢侈品吗克罗齐的心是奢侈品。Clousen是比较合适的高档产品,一般价格在一万元左右。除了眼镜,其银饰、皮革、皮饰、童装、皮包、文具等产品也备受追捧。创始人理查兹·斯塔克(RichardStark)最初在好莱坞担任电影道具和皮革配饰,偶然间帮助摇滚明星0在看 04-23
开眼角疤痕增生图 开眼角后会疤痕增生吗?开眼角后马上化妆导致疤痕增生
美容整形是我们日常生活中非常受欢迎的事情。很多爱美的女性朋友都会去美容机构整容。睁眼是很常见的整形手术。睁眼后疤痕会增生吗?睁眼后马上化妆导致疤痕增生。开眼角后会疤痕增生吗白内障摘除后疤痕增生是大多数人需要经历的过程。在此期间,伤口暂时发红变硬,肤色加深,疤痕增生等。,都是正常情况,一个月后会消退,但超过三个月就需要手术治疗了。睁开眼角会留下疤痕眼角处皮肤很薄,开内眼角后的疤痕很客观,不能像割双眼0在看 04-22

热文排行