我正在尝试编写一个能够识别易受攻击代码块的正则表达式。代码中经常被忽略的典型位置是代码中的TODO,FIXME,CVE和BUG注释。正则表达式匹配来识别易受攻击代码
在应用程序上执行安全代码审查时,我的目标是使用合适的正则表达式在注释中优化“相关”TODO和FIXME和BUG声明的结果。
也许我试图瞄准这个宠物项目太大。然后再次,这是堆栈溢出。如果某人在这里不知道答案,那么很有可能,没有人会(尚)。
样例文本
1. //TODO - autogenerated catch block. This could be a security flaw
2.
3. // But this could be a CVE also.
4.
5. String val = "empty";
6. /*
7. * TODO bug fix later
8. * Fixme although it probably does not need it
9. */
10.
11. //TODO autogenerated
12. //security problem. Too hard to fix
13. Integer int4 = 1;
14. Object o = null;
15. //TODO dummy block
这里就是我希望的。我想正则表达式:
- FLAG 1号线在单个注释TODO和安全
- FLAG线7 TODO和bug单注释行
- FLAG线11 & 12,因为它有TODO和安全在相同的评论块中,即在实际的代码行之前。
- FLAG第3行,因为它提到了CVE。
- IGNORE 15号线,因为它似乎是一个虚拟的TODO,因此是噪音。
免责声明 - 我知道没有一个统一的MAGIC正则表达式,可以完全退出这个功能,但我希望得到尽可能接近。
谢谢!
你遇到了难题。 – alestanis 2013-03-07 22:46:35
谢谢!但是如果解决了这个问题,那么对于安全行业中的所有人来说都是有价值的。这是一个不幸的现实,现在的静态分析工具在分离小麦和谷壳方面做得不好。 – raTM 2013-03-07 22:51:23
那么,这个问题当然可以解决,但恕我直言不与正则表达式。已经有一些工具可以进行代码解析(考虑doxygen),并将注释中的内容分开(这已经不是那么容易了)。一旦你有评论的内容,你可以做一些[NLP](http://en.wikipedia.org/wiki/Natural_language_processing)?或者只是寻找关键词,因为你建议 – alestanis 2013-03-07 22:56:49