Skip to main content
QUICK REVIEW

[论文解读] Automatic Test Data Generation and Model Checking with CHR

R. Nicholas Gerlich|arXiv (Cornell University)|Jun 9, 2014
Software Testing and Debugging Techniques参考文献 10被引用 5
一句话总结

本文提出了一种基于CHR的工具链,用于任务关键型卫星软件的自动测试数据生成与模型检查,利用约束处理规则检测不可行路径,并生成满足结构覆盖标准的输入。该方法在数秒内成功识别出一个真实卫星控制函数中的一个字节缓冲区溢出缺陷,该缺陷此前曾逃避免嫌手动和静态分析。

ABSTRACT

We present an example for application of Constraint Handling Rules to automated test data generation and model checking in verification of mission critical software for satellite control.

研究动机与目标

  • 自动化任务关键型卫星控制软件的测试数据生成与模型检查。
  • 在测试输入生成过程中早期检测不可行执行路径。
  • 将结构覆盖目标与算术约束相结合,实现精确的测试输入合成。
  • 使用基于约束的符号执行验证复杂嵌入式系统的正确性。
  • 通过自动化验证与测试生成提高安全关键软件的可靠性。

提出的方法

  • 该方法使用约束处理规则(CHR)实现路径构建、可满足性检查与约束求解的约束求解器。
  • 从函数的控制流图构建路径约束,表示特定路径被遍历所必须满足的条件。
  • 系统结合前向、后向与分裂策略进行路径构建,以提高效率并早期检测不可行路径。
  • 通过区间过滤与类型间双向传播,处理有界整数与浮点类型上的算术约束。
  • 该工具链与动态随机测试工具(DCRTT)集成,以在真实卫星控制软件上验证发现结果。
  • 使用符号执行分析路径,并通过求解路径约束检测潜在的缓冲区溢出。

实验结果

研究问题

  • RQ1CHR能否有效用于安全关键嵌入式系统的自动化测试数据生成与模型检查?
  • RQ2如何利用基于约束的技术在路径构建过程中早期检测不可行路径?
  • RQ3基于约束的符号执行在多大程度上能检测出手动和静态分析所遗漏的细微缓冲区溢出?
  • RQ4将结构覆盖目标与算术约束相结合,在真实世界任务关键型代码中的有效性如何?
  • RQ5CHR求解器能否扩展至包含混合数据类型与复杂控制流的复杂真实嵌入式软件?

主要发现

  • 该工具链在真实卫星控制函数中检测出一个此前逃避免嫌手动与静态分析的字节缓冲区溢出缺陷。
  • 该缺陷在约一秒内通过求解路径约束(目标为在溢出条件下到达memcpy调用)被识别。
  • 求解结果表明,当next_entry_start == MAX_BUFFER_SIZE - length + 1,last_entry_start > 0,且last_entry_start < length - 1时,会发生溢出。
  • 该溢出可能导致易失性数据与非易失性程序内存的破坏,进而引发系统无响应。
  • 该缺陷已得到确认并修复,且随机测试工具已扩展以检测未来类似问题。
  • 本研究证明,基于CHR的约束求解在复杂嵌入式系统中的符号执行与模型检查中具有有效性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

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