本文介绍抽象语法树(AST)与CodeQL查询规则的联系。AST以树状结构表示Java源码,学习它有助于理解CodeQL的查询类型和编写规则。文章展示了AST的JSON、DOT、YAML、XML等导出方法,并分析根节点下的包声明、导入和类型模块,强调AST对代码审计和安全研究的重要性。
本文探讨Shiro550反序列化漏洞的无依赖利用方式,基于P牛思路分析CommonsBeanutils Gadget链,通过PriorityQueue和BeanComparator触发TemplatesImpl恶意对象。为解决替代类查找效率低的问题,引入CodeQL查询引擎快速筛选符合条件的Comparator实现类,提升漏洞挖掘效率,并预告后续深入实践。
本文探讨了Shiro550反序列化漏洞利用中,如何绕过CommonsBeanutils依赖限制。作者通过CodeQL分析,发现JDK内置的AttrCompare和String.CASE_INSENSITIVE_ORDER类可替代原Comparator,并测试了第三方组件如log4j的PropertySource.Comparator和Commons-lang的ObjectToStringComparator。文章提供了具体利用代码,并指出在存在CommonsBeanutils组件时,Shiro550漏洞几乎必然可利用,最后讨论了serialVersionUID版本兼容问题。
本文介绍CodeQL使用技巧,包括分析数据库构建日志以获取构建信息,利用CodeQL Action批量生成查询文件,使用codeql-debug工具调试源码定位漏洞,以及结合Maven实现SCA组件安全分析。同时分享批量查询和结果导出的实用命令。
本文介绍GitHub安全实验室CTF挑战,聚焦于Java CodeQL漏洞分析,涉及CVE-2020-9297。文章详细说明了如何利用CodeQL进行数据流和污点跟踪,识别用户输入流向危险函数,并解决污点传播中断问题。通过添加额外污点步骤和构造函数步骤,最终实现远程代码执行。
本文介绍如何使用CodeQL创建OpenJDK/JDK8数据库。步骤包括:下载源码、配置编译环境(安装依赖、降级gcc至4.9)、执行configure和make images编译,最后用codeql database create命令构建数据库。若内存不足,可加-M参数限制。整个过程需参与编译,成功后可生成数据库。
本文介绍使用CodeQL数据流分析挖掘Java反序列化漏洞。作者以Shiro-CTF项目为例,通过查找实现Serializable接口的类定位入口,分析User类实例化及Tools类反序列化方法,确定source(用户可控的request参数)和sink(deserialize的bytes参数),并尝试全局污点分析。最终使用RemoteFlowSource成功追踪数据流,发现LogHandler调用exeCmd可被利用,完成漏洞挖掘。
本文介绍使用CodeQL检测开源电商系统shopizer日志中的PII(个人敏感信息)泄露。通过定义敏感字段(如email、phone、creditCard)为数据源,以slf4j日志输出为汇聚点,构建污点追踪查询,并展示路径显示及通过重写isSanitizer排除无害化处理(如mask方法)以减少误报,最终总结出确定源、汇、追踪及优化的检测流程。
本文介绍CodeQL Java库,用于分析Java程序。库以QL模块实现,核心类分五类:程序元素(如类、方法)、AST节点(语句、表达式)、元数据(注解、Javadoc)、度量(如循环复杂度)和调用图。文章详述各类用途,如查询变量、类型、注解及方法调用,并强调库支持泛型、通配符等复杂类型分析,辅助代码质量检测。
本教程介绍如何使用CodeQL查找Apache Struts中的不安全XML反序列化漏洞(CVE-2017-9805)。通过编写查询,识别XStream的fromXML调用及ContentTypeHandler接口的toObject方法,并利用数据流分析追踪不受信任数据流向,最终定位漏洞。教程包含详细步骤、代码示例和路径问题查询转换,帮助用户掌握CodeQL在Java安全分析中的应用。
本文介绍了创建OpenJDK/JDK8数据库的步骤,包括安装依赖、配置编译选项、管理GCC版本以及编译过程中的注意事项。强调了内存不足可能导致的错误,并建议在编译时增加内存限制。
CodeQL库为Java提供了丰富的类集合,支持Java项目的数据库分析。该库通过QL模块实现,包含程序元素、AST节点、元数据、度量计算和调用图等类,主要分为五类,帮助开发者进行代码分析和优化。
GitHub has introduced a significant update to its CodeQL engine, enabling developers to define custom sanitizers and validators directly through "models-as-data," a move that simplifies how teams...
完成下面两步后,将自动完成登录并继续当前操作。