Skip to main content
QUICK REVIEW

[论文解读] Coding Guidelines and Undecidability

Espinha Gasiba, Tiago, Oguzhan, Kaan|arXiv (Cornell University)|Dec 28, 2022
Software Reliability and Analysis Research被引用 3
一句话总结

本文研究了不可判定性对C/C++编码规范的影响,特别是对MISRA C:2012规范的影响,并提出了实用改进措施,以减少静态分析工具中的混淆和误报。文章认为,尽管在安全关键系统中不可判定的规范不可避免,但可通过合理、可判定的近似方法以及更清晰、更务实的指导原则(如最小化无理由的无效果代码)来缓解问题,从而在保障安全的同时兼顾开发者的实际可操作性。

ABSTRACT

Software security is an important topic that is gaining more and more attention due to the rising number of publicly known cybersecurity incidents. Previous research has shown that one way to address software security is by means of a serious game, the CyberSecurity Challenges, which are designed to raise awareness of software developers of secure coding guidelines. This game, which has been proven to be very successful in the industry, makes use of an artificial intelligence technique (laddering technique) to implement a chatbot for human-machine interaction. Recent advances in machine learning led to a breakthrough, with the implementation of ChatGPT by OpenAI. This algorithm has been trained in a large amount of data and is capable of analysing and interpreting not only natural language, but also small code snippets containing source code in different programming languages. With the advent of ChatGPT, and previous state-of-the-art research in secure software development, a natural question arises: to which extent can ChatGPT aid software developers in writing secure software?. In this paper, we draw on our experience in the industry, and also on extensive previous work to analyse and reflect on how to use ChatGPT to aid secure software development. Towards this, we run a small experiment using five different vulnerable code snippets. Our interactions with ChatGPT allow us to conclude on advantages, disadvantages and limitations of the usage of this new technology.

研究动机与目标

  • 阐明不可判定性在C/C++编码规范中,特别是在安全关键系统中,所引发的概念与实际挑战。
  • 分析为何与不可判定性相关的规范(尤其是涉及不可达代码或无效果代码的规范)常使开发者和工具感到困惑。
  • 提出更实用、更少产生误报的改进规范,同时保持安全与保障性。
  • 倡导更好的工具支持,以区分真正的违规行为与“无法确定”的情况,从而减少误报和漏报。

提出的方法

  • 基于其底层不可判定属性(如运行时行为和控制流可达性),系统性地对所有不可判定的MISRA C:2012规范进行分类。
  • 分析与无效果代码、不可达代码及无副作用表达式相关的规范中不可判定性的根本原因。
  • 提出一项新指导原则——“应最小化无理由的无效果代码”——作为对无效果代码绝对禁止的更务实替代方案。
  • 评估不可判定规范的可判定近似方法的可行性,强调稳健性与实用性,而非完备性。
  • 建议整合设计规范、测试计划和代码审查清单,以支持对新规范的合规性。
  • 借鉴现代语言趋势(如Rust)的实践,支持向更严格但更易维护的编码实践转变。

实验结果

研究问题

  • RQ1为何像MISRA C:2012规则2.2这样的不可判定编码规范会导致静态分析工具和开发者产生困惑?
  • RQ2当没有通用算法可验证这些规范时,强制执行不可判定规范的实际后果是什么?
  • RQ3能否在不过度限制代码质量或表达能力的前提下,为不可判定规范设计可判定近似方法?
  • RQ4如何重新表述规范,以减少误报,同时仍确保安全与保密性?
  • RQ5工具限制(如误报和漏报)在多大程度上会削弱对安全关键系统中静态分析的信任?

主要发现

  • 许多MISRA C:2012规范具有不可判定性,因为它们依赖于运行时属性(如控制流可达性与变量值),而这些属性无法通过静态分析确定。
  • 静态分析工具对于不可判定属性不可避免地返回“无法确定”,除非使用复杂的近似技术,否则将导致误报或漏报。
  • 对无效果代码的绝对禁止(如MISRA C:2012规则2.2)在实践中难以执行,即使在高完整性项目中也难免出现偏差。
  • 所提出的替代指导原则——“应最小化无理由的无效果代码”——通过关注代码质量与意图,而非绝对消除,提供了更现实且可维护的解决方案。
  • 对于许多不可判定规范,可实现可判定近似方法,尤其当结合同行评审、测试和文档时,可在不牺牲安全性的前提下提高工具的可靠性。
  • Linux内核社区对更严格编码规则的日益接受,表明即使在监管较宽松的环境中,也正朝着更严谨、更注重安全的实践方向发展。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。