在污点分析中,污点源是可能产生不受信任或外部输入的程序位置或语句。
我的目标:使用动态分析(最好)确定程序的所有外部用户输入,例如cmdline-input,文件读取,环境和网络变量,并传播污点。
我读了这篇教程 - http://shell-storm.org/blog/Taint-analysis-and-pattern-matching-with-Pin/,它使用英特尔PIN拦截读取系统调用并传播污点。我想扩展它以包括上面提到的各种外部输入。(首先,对于C - scanf,获取,fopen等)
是否有任何动态分析工具可以帮助我识别通用外部输入?任何其他具有特定目标的方法也值得赞赏。谢谢
答案 0 :(得分:0)
我假设你只针对Linux。
通常,程序获取外部输入的方式是通过使用系统调用与操作系统联系。你在谈论libc功能。这是一个更高级别的抽象。我建议在系统调用级别查看输入。
此外,程序的另一个输入是环境变量和命令行参数,它们在程序启动时在堆栈中找到。
还需要考虑的是共享内存的所有形状和形式。