南大软分实验笔记|A8 污点分析

💡 原文中文,约14500字,阅读约需35分钟。
📝

内容提要

本文介绍了南大软件分析课程第八个实验中的污点分析方法,通过添加污点传播规则和处理source和sink实现。作者解决了污点传播问题,并通过修改代码通过了所有测试用例。文章还介绍了如何使用StringAppend.java进行测试,并提供了正确的TaintFlow结果。作者总结了不放弃的经验,并表示污点分析很有意思。

🎯

关键要点

  • 本文介绍了南大软件分析课程第八个实验中的污点分析方法。
  • 实验基于上下文敏感的过程间指针分析实现污点分析。
  • 实现策略包括处理invoke语句、source和污点传播规则。
  • 初始版本通过了大部分测试用例,但未能通过StringAppend.java测试。
  • 经过调试,发现问题出在污点传播上,最终代码通过了所有测试用例。
  • Source和Sink的生成规则简单,污点传播包括基于invoke语句的传播。
  • 实现中增加了对source和污点传播规则的处理。
  • 通过分析指针分析的结果,发现污点对象未能正确传播。
  • 提出了使用Taint Flow Graph (TFG) 来记录污点传播边的解决方案。
  • 修改了doTaintTransfer方法以基于TFG实现污点传播。
  • 总结了在调试过程中的经验,强调了污点分析的趣味性。
➡️

继续阅读