[Learning CodeQL] [CodeQL queries][Creating path queries]

Overview

source:起点
sink:终点

Constructing a path query

针对C/C++, C#, Java, 和JavaScript的常用模板如下:

/**
 * ...
 * @kind path-problem
 * ...
 */

import <language>
import DataFlow::PathGraph
...

from Configuration config, DataFlow::PathNode source, DataFlow::PathNode sink
where config.hasFlowPath(source, sink)
select sink.getNode(), source, sink, "<message>"

其中:
DataFlow::PathGraph表示需要引入的CodeQL path graph module的标准类库
sourcesink表示path graph上的节点,DataFlow::PathNode是他们的类型。
Configuration是一个类,其中包括定义了data如何从source流向sink的predicates。

针对python需要使用一个不同的模板:

/**
 * ...
 * @kind path-problem
 * ...
 */

import python
import semmle.python.security.Paths
...

from TaintedPathSource source, TaintedPathSink sink
where source.flowsTo(sink)
select sink.getNode(), source, sink, "<message>"

semmle.python.security.Paths表示从CodeQL标准类库中引入的path graph模块。
sourcesink是path graph上的节点, TaintedPathSource和TaintedPathSink分别表示他们的类型。
在python中不需要声明一个配置类。

References

https://help.semmle.com/QL/learn-ql/writing-queries/path-queries.html

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Astronomygonova - A wrapper for libnova -- Celestial Mech...
    JumboWu阅读 9,343评论 0 41
  • CodeQL查询用于分析代码以发现安全性、正确性、可维护性及可读性相关的问题。 概述 针对每种支持的语言,Code...
    growing27阅读 359评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,752评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 1,958评论 4 1
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 10,752评论 0 11

友情链接更多精彩内容