(日期:][下一个日期][线程:][线程下][日期索引][线程索引]

再保险:当前的标准/标准“未定义行为”



所有人,

CVE团队很大程度上同意社区讨论这个话题:

http://openwall.com/lists/oss-security/2017/04/12/3

http://openwall.com/lists/oss-security/2017/04/12/2

CNA规则而言,我们认为这些未定义的行为报告满足脆弱性的定义(附录a),因为它是不合理的计算逻辑依赖于编译器的实现细节或选择的编译器选项。

所有或几乎所有的最近的“未定义行为”CVE id的结果大参考依靠UndefinedBehaviorSanitizer工具,设计目标中表达了http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html。此外,这些CVE id为软件产品库,可用在构建任意程序包括长时间运行的守护进程。

指C标准http://www.open-std.org/jtc1/sc22/wg14/www/standards.html或http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf等类似的在线版本的文档,可以看到语句如“可能未定义的行为范围从忽视这种情况完全不可预知的结果……终止一个翻译或执行。”Terminating an execution is probably the most relevant for these CVE IDs. Also, the document

特别提到类型未定义行为的CVE id分配,例如,“如果要转换的值超出范围的值可以表示,这种行为是未定义”和“E1 < < E2的结果是E1 left-shifted E2钻头位置……否则,该行为是未定义的。”

换句话说,程序终止(又名崩溃)的结果被称为C标准。车祸在库代码可用性的丧失,从而匹配脆弱性的定义。

感兴趣的一个场景是一个用户显式地选择编译器选项,终止程序在遇到未定义的行为,例如,“叮当声-fsanitize =定义-fno-sanitize-recover LLVM。这意味着发生一个可用性的影响。诚然,可用性的影响可能是罕见的在现实世界中,因为人们不经常使用这些叮当声旗帜生产代码。

另一个场景中感兴趣的是编译器优化发生导致生成脆弱的代码对于依赖未定义行为的程序,如cve - 2017 - 7892中未定义的行为“指针算术计算溢出。”Here, the impact might not be limited to availability.

基于上述,横切CNA目前使用这条指导原则:未定义行为的报告在图书馆被认为是相当于崩溃在图书馆的一份报告,在决定是否可能存在CVE ID。

然而,附录E CNA的规则也紧随其后。例如,在cve - 2017 - 7961的情况下,我们收到了一个纠纷说没有影响。我们根据需要记录争端(这并不一定意味着我们相信争端是正确的)。

请让我们知道如果你有任何其他问题或需要任何澄清。

谢谢。

丹,团队

来自:< jericho@attrition.org > < owner-cve-editorial-board-list@lists.mitre.org >代表耶利哥
日期:星期一,2017年5月8日19:50
:“埃文斯,Jonathan l .”
答:cve-editorial-board-list < cve-editorial-board-list@lists.mitre.org >
主题:再保险:当前的标准/标准“未定义行为”

乔纳森,

2017年5月结婚,3,埃文斯,Jonathan l .写道:

:我们不是完全确定你所说的“未定义行为”。Are you

:谈论CVE条目,具体说“未定义

:行为”,如cve - 2017 - 8326和cve - 2017 - 7961 ?

是的。一个简短的列表:

谢谢你!

布莱恩


页面最后更新或审查:2017年5月11日,