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

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

内容提要

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

🎯

关键要点

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

延伸问答

南大软件分析课程的第八个实验主要研究什么内容?

主要研究污点分析方法,包括污点传播规则和处理source与sink。

在污点分析中,如何处理invoke语句?

在处理invoke语句时,需要添加对source和污点传播规则的实现。

作者在调试过程中遇到了什么问题?

作者发现污点传播存在问题,导致初始版本未能通过StringAppend.java测试。

如何通过StringAppend.java进行污点分析测试?

通过分析StringAppend.java的源码,检查污点对象是否正确传播到sink。

作者是如何解决污点传播问题的?

作者通过引入Taint Flow Graph (TFG)来记录污点传播边,并修改了相关方法。

污点分析的趣味性体现在什么方面?

作者总结了调试过程中的经验,强调了污点分析的趣味性和挑战性。

➡️

继续阅读