(Java)CodeQL进阶知识

「 CodeQL从入门到精通系列 」01.CodeQL简介 CodeQL是业界领先的语义代码分析引擎,可发现代码中的漏洞。CodeQL像查询数据一样查询代码安全缺陷及漏洞,从而消除。比如CodeQL默认集成的Java类安全检查规则"不安全的反序列化",规则实现如下/**以上规则采用的编写语言为QL,QL是一种声明性、面向对象的查询语言,经过优化,可实现对分层数据结构(尤其是表示软件项目的数据库)的高效分析。 阅读详情

在阅读了CodeQL的官方文档,熟悉相关语法后,对CodeQL中的Java进行了一番简单的研究,本文分享这一过程的一些收获。

规则的封装

通过 class 我们可以封装一系列的谓词方法,这方便我们组织并编写一系列的规则。

递归调用

class可以通过 extends 关键字申明其继承来自另外一个或多个class,我们通过使用父类或父类的谓词方法,codeql就会帮我们自动递归使用其子类。

class使用abstract进行修饰则表示该class的构造函数谓词将不起功能作用,该方式通常用于修饰Node节点、AST节点,因为它们的构造函数谓词起到类型的判断作用(instanceof)。

同样的,我们也可以使用abstract修饰class中封装的谓词方法,这样一来该谓词方法在被使用时本身不具备谓词判断逻辑,但CodeQL会递归使用其子类的谓词。我们可根据需要选择是否使用abstract修饰词,另外子类也可被abstract修饰, 更多的注解可参考官方 docs/ql-language-reference/annotations/。

如下例子中编写了多个class并声明继承RemoteFlowSource,父类RemoteFlowSource即可在使用时表示其所有子类。

​

​

流中继step只是做方法的封装,构造函数谓词不起作用,所以不需要abstract的修饰:

​

ModelCsv

通过 ModelCsv ,我们可以简化代码定义sink、source、flow step,并通过 kind 来使用它,简单说一下对应的三种 ModelCsv (可以在 ExtenalFlow.qll 找到它们)。

SourceModelCsv :定义 source ,列值为 namespace(); type; subtypes; name; signature; ext; output; kind 。

SinkModelCsv :定义 sink ,列值为 namespace; type; subtypes; name; signature; ext; input; kind 。

SummaryModelCsv :定义 FlowStep ,列值为 namespace; type; subtypes; name; signature; ext; input; output; kind 。

「 CodeQL从入门到精通系列 」02.CodeQL安装指导及使用方式 使用CodeQL前需要先安装CodeQL解析引擎CodeQL CLI和CodeQL SDK。CodeQL CLI为编译好的二进制文件,本身不开源,Github默认提供了Windows、Linux及MacOS三个系统的版本,文件平均大小300M+。但国内从Github下载文件的速度异常慢且容易下载中断,如果是Windows平台建议直接从网盘下载。CodeQL SDK中包含了CodQL标准库和各种主流语言的常见查询规则,方便开发者进行二次开发。 阅读详情

相关推荐

codeql使用指南

目录 简介 hello world 1、安装codeql-cli 和 ql库 2、创建源码数据库 3、编写hello world 4、执行查询 进阶 1、扫描结果快速定位到源码 2、用作白盒扫描器 3、开发自己的查询代码 4、分析GitHub上的开源项目 简介 codeql是一门类似SQL的查询语言,通过对项目源码(C/C++、C#、golang、java、JavaScript、typescript、python)进行完整编译,并在此过程中把项目源码文件的所有相关信息(调用关.

balance的博客 9820

CodeQL进阶知识(Java)

笔者在阅读了CodeQL的官方文档,熟悉相关语法后,对CodeQL中的Java进行了一番简单的研究,本文分享这一过程的一些收获。

Chenhui98的博客 892

codeql安装(从0开始的codeql之旅)

本文章为多次尝试之后,自己成功安装并运行成功codeql的记录 下载 建议下载之前先新建一个codeql目录,下载和clone的东西都放在下面 首先安装最新版的vsCode 安装扩展 在其中搜索并安装CodeQl拓展 下载codeql引擎 接着下载codeql引擎,选择对应版本即可 点击小齿轮,Extension Settings 打开拓展设置 把刚才下载并解压的ql引擎文件中的codeql.exe的路径填写上去 同时把codeql.exe的路径配置到环境变量path中去,这一步是为了后面使用命令行

blueSatchel的博客 3555

CodeQL的自动化代码审计之路(上篇)

网上关于CodeQL安装的文章已经很多了,本来不打算再说这个事情,但是因为本人在CodeQL安装过程中遇到不兼容mac m1架构的情况,我想还有很多小伙伴也会遇到这个问题的,这里主要以MAC的环境来说明安装过程。CodeQL虽然也预置了部分的sink点,但是远不能满足实际的需求,需要我们在不同的漏洞环境中自定义sink点。CodeQL给我们提供的查询ql脚本有很多,如果是通过手工一个一个试的话并不是一个好的解决办法,并且官方的ql脚本并不完善,还有很大的完善空间。

C20220511的博客 2026

CodeQL 获取SpringBoot应用的映射URL

在代码分析的过程中,经常需要查询到所有接口,或者在分析漏洞污点路径的过程中,需要获取到接口信息,在收集全网资料中,能公开到的只有楼兰师傅和github上ice-doom的代码,但或多或少都不太能达到想要的效果,基于大佬的研究之上,研究出此ql,希望也能帮助其他人开拓思路。当初搞定后第一时间将这个喜悦分享给了腿腿,腿腿告诉我58用CodeQL来梳理一个应用所有的接口,当时没什么感触,这几天感觉的确是个好用途,于是重构了一下这个功能。除了获取方法的映射URL以外,我还增加了对这个方法说明的获取。

HAOYIFAN961229的博客 1293

【Arc GIS 零基础教学】土地利用类型图的绘制方法

​Hi,我是胡学长!今天教大家怎么利用Arc GIS 绘制土地利用类型图。土地利用类型图是表达土地资源的利用现状、地域差异和分类的专题地图。它是研究土地利用的重要工具和基础资料,同时也是土地利用调查研究的主要成果之一。在编制土地利用图的基础上,对当前利用的合理程度和存在的问题、进一步利用的潜力、合理利用的方向和途径,进行综合分析和评价。因此,土地利用图是调整土地利用结构,因地制宜进行农业、工矿业和交通布局、城镇建设、区域规划、国土整治、农业区划等的一项重要科学依据。......

一起来交流学习吧 1万+

手机摄影新宠:In-line Hardware EIS如何让你的4K视频稳如鸡头(附实测对比)

本文深入解析了手机摄影中的In-line Hardware EIS(硬件级行内电子图像稳定)技术。通过对比传统软件EIS,阐述了其通过硬件管道实时处理实现极低延迟、减少画面裁切和有效抑制果冻效应的核心优势,并结合4K视频的日夜间实测,展示了该技术如何让手持拍摄的视频“稳如鸡头”,显著提升创作体验与成片质量。

tree的博客 998

Halcon相机标定实战:从参数设置到精度优化全解析

本文详细解析Halcon相机标定的全流程,从基础概念到实战技巧,涵盖参数设置、精度优化及常见问题解决方案。通过实际案例和代码示例,帮助读者掌握工业视觉项目中相机标定的关键技术,提升测量精度和系统稳定性。

weixin_29279153的博客 323

STM32开发实战:从嵌入式系统到硬件控制 | 你必须得会

🏆本文收录于「编程与技术实战」专栏,此专栏涵盖了C/C++编程、人工智能、数据结构、机器学习等技术领域的内容,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1046

SAP Word 模板与 ABAP XML 数据流合并机制深度解析

Office Open XML 标准把一个.docx拆分成多个部件(document.xml、customXml\item1.xml 等),天然支持命名空间与 XPath;Word 在渲染时,会扫描<w:sdt>(结构化文档标签)与来确定绑定关系;在 ABAP 端,通过简单字符串替换与 XSLT 变换即可完成数据灌入,无需 COM Automation,安全且易于调试。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 373

云计算 | 期末梳理(上)

2024云计算回忆版 && 复盘向梳理

知识库搭建ing 2233

基于Simulink的自适应反步法(Adaptive Backstepping)控制​

本文针对非线性系统控制中未知参数和强非线性耦合的挑战,提出基于Simulink的自适应反步法解决方案。通过融合参数在线估计与反步递归设计,该方法显著提升了永磁同步电机(PMSM)速度控制的鲁棒性,使跟踪误差从20%降至3%,参数估计收敛时间小于0.5秒。文章详细阐述了从算法推导到Simulink实现的完整流程,包括系统架构设计、核心算法推导(以PMSM为例)、模块化建模方法、参数优化策略以及工程部署建议。提供的自适应控制器MATLAB代码和关键参数表可直接应用于实际工程,为电机驱动、机械臂等非线性系统控制提

xiaoheshang_123的博客 103

Pointnet++改进90:2025最新改进模块-EVA模块

本教程提出了一种改进PointNet++特征提取模块的方法,通过在PointNetSetAbstraction模块中加入NAMAttention注意力机制,显著提升了模型性能。具体改进包括:1)新建eva.py文件,实现了包含SDLSKA、CKS等关键组件的EVA模块;2)在pointnet2_utils.py中添加Conv和PointNetSetAbstractionAttention类,整合注意力机制;3)修改pointnet2_sem_seg.py模型结构。这种改进方法降低了实现难度,同时保持了33F

AIcurator的博客 361

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: Java编程小技巧——方法传回两个对象
下一篇: 谈谈 Java HTTP 基本认证
JavaMonsterr
博客等级 码龄4年 211粉丝 481原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值