Releases: Feysh-Group/corax-community
corax-java-cli-community-2.20
Change log:
-
规则变动:
序号 规则编号 规则简述 描述 1 feysh.java.path-traversal.PathTraversal
潜在路径遍历-任意文件访问(读写删) 新规则。根据字符串路径创建File or Path(其他路径穿越的超集) 或删除文件时报告 2 feysh.java.path-traversal.PathTraversalIn
潜在路径遍历(任意读取文件) 拆分原规则,重新根据文件操作API行为进行分类并拆分 3 feysh.java.path-traversal.PathTraversalOut
潜在路径遍历(任意创建写入文件) 拆分原规则,重新根据文件操作API行为进行分类并拆分 4 feysh.java.path-traversal.ArbitraryFileLeak
潜在路径遍历(任意泄露文件) 新规则。包括任意文件下载泄露漏洞 5 feysh.java.path-traversal.ArbitraryFileReceive
潜在路径遍历(任意接受并创建文件) 新规则。包括任意文件路径上传漏洞 6 feysh.java.custom.VulnerableDependency 自定义三方库的引用版本检查 新规则 7 feysh.java.custom.TargetMethodInvoke 自定义API调用检查器 新规则 8 feysh.java.codei.ProcessControl
进程控制 新规则 9 feysh.java.sqli.SqlInjection
SQL 注入 新增加 MyBatis-plus 3&2 框架SQL注入检查 10 feysh.java.sqli.IbatisSqlInjectionSinkHint
IBatis SQL mapper xml 中的参数拼接点 新规则,目前仅支持sink点查找,开发中 11 feysh.java.xss.XssInjection
XSS 注入 提升分析精度 12 feysh.java.leakage.DebugLogFileLeak
开启调试级别日志文件 新规则 13 feysh.java.httponly-cookie.PropertiesHttpOnlyCookie
会话Cookie未设置HttpOnly属性 新规则 14 feysh.java.insecure-cookie.PropertiesInsecureCookie
创建没有 secure 标志的 cookie 新规则 15 feysh.java.cookie-persistent.CookiePersistent
Cookie有效时间过长 新规则 16 feysh.java.cookie-persistent.PropertiesCookiePersistent
持久性Cookie 新规则 17 feysh.java.overly-broad-cookie-attribute.PropertiesOverlyBroadDomain/OverlyBroadDomain
会话中的过于宽泛的域 新规则 18 feysh.java.overly-broad-cookie-attribute.PropertiesOverlyBroadPath/OverlyBroadPath
会话中的过于宽泛的路径 新规则 - 公开部分规则文档,详见 analysis-config\descriptions
-
改进:
- 使用
--make-scorecard
参数自动生成分析结果统计时,会打印表格到控制台。 - 完善污点指针传播配置,包括:
aliyun OSS 框架等
- 使用
-
修复:
- Kotlin协程job泄露导致的性能问题
Analysis API
中增加大量Semaphore
控制资源打开数量,增加了用户可配置的根据文件后缀限制单文件大小功能。- 内存不足
OOM
时小概率情况可能出现的进程无响应不能捕获异常退出且长时间占用CPU问题。 Qilin
指针分析的两处崩溃问题,Mybatis配置解析器崩溃两处问题。- Spring 框架建模
dummy method
中的soot变量未定义bug - 改进分析引擎,修复了若干崩溃和错误,增加了稳定性和正确性
corax-java-cli-community-2.20.zip
中包含编译好的规则配置和分析引擎二进制jar,无需下载源码编译。
SHA256: 629cf66d2397bddff7cbcd2958708c5da1424dfd686528d55701e6a2f3d9a97b
corax-java-cli-community-2.16.2
Change log:
-
提升:大幅优化了分析引擎的内存占用并提高分析效率,其中重要的改进具体包括
- 改进Soot: 1: 改进多处API,避免多余的频繁的获取锁,2:增加稀疏位图和压缩位图,大幅优化soot指针分析的内存消耗
- 改进了Qilin指针分析框架:共计减少内存消耗50%,速度提升40%,1: 并发支持,引入kotlin协程并发加速指针传播并大量优化传播算法,2:使用稀疏位图加速并使用压缩位图减少内存消耗。
- 改进污点分析引擎: 内存消耗降低了1-5倍,速度提升20%; 修复超时取消任务时产生的子协程任务泄露导致的耗时问题
- 所有 Analysis API 全部使用并发执行
- TODO: 持续优化中
-
改进: 优化并关闭不必要的日志内容,增加关键分析阶段前后的内存状态信息,优化进度条.
-
改进: 重构 mybatis 配置解析器
-
新特性: 向污点分析诊断的路径中增加了相关三方库版本信息的来源和漏洞版本区间,方便用户修复漏洞。目前分析支持的版本信息来源:
- maven pom
- maven pom properties inner jar
- jar file name
- version in java class
-
新特性: 升级 K2 (kotlin 2.0.20), 提高了编译效率
-
新特性: 增加基于协程的高效的递归计算算法(带缓存加速,无死锁,支持取消)(可极高降低过程间分析算法的编程难度) 详见
com.feysh.corax.cache.coroutines.RecCoroutineCache
-
修复: 错误地合成 Spring 框架建模 dummy class 的问题
-
修复: 改进分析引擎,修复了若干崩溃和错误,增加了稳定性和正确性
corax-java-cli-community-2.16.2.zip
中包含编译好的规则配置和分析引擎二进制jar,无需下载源码编译。
SHA256: 019f1340b791e535f7bc5cc4948e700bd80cd15f70a71fb91093e7833d969965
corax-java-cli-community-2.14.2
Change log:
- 修复:Soot API 设计缺陷:多线程竞争导致的 ConcurrentModificationException 崩溃 (具有一定概率)
- 修复:Qilin PTA 中的一处 ArrayIndexOutOfBoundsException 崩溃 (极少情况)
- 改进:改进了3个规则检查器,减少了漏报
- log4j-injection
- response-splitting
- insecure ECB mode cipher
corax-java-cli-community-2.14.2.zip
中包含编译好的规则配置和分析引擎二进制jar,无需下载源码编译。
SHA256: a0cc4cac41ecd5eea09e9367b40b218ef9be1d18a0aa479209994e280ed1c63f
corax-java-cli-community-2.14
Change log:
- 提升:完善了大量检查器,增加了精准度减少了漏报
- XXE
- SSTI
- Http Parameter Pollution
- Log4j Injection
- Jackson Unsafe Deserialization
- Sql Injection
- Spring Csrf Protection Disabled
- PermissiveCors
- Ldap Injection
- Weak Ssl Context
- Path Traversal
- 改进:完善污点指针传播配置,包括:
okhttp3、java.nio.file.*、monitorjbl.xlsx、apache poi
- 改进:自动化测试生成scorecard功能支持漏洞标注在
.xml
和.properties
文件中,并修复统计数据错误问题 - 改进:Jacoco 展示污点和分析覆盖率功能支持无源反编译三方库中的class并展示。
- 改进:增加 soot decl mapping to java parser decl 功能(
AnalysisCache.G.sootHost2decl(sootMethod)
)映射 java 匿名内部内、内部内、lambda expr 的能力, 减少了漏报 - 改进:完善了对Spring框架分析的兼容支持,进一步降低了漏报
- 改进:增加大class文件分析限制(maxium 2000 fields or methods),避免某些在AOSP中的项目分析耗时过长的问题
- 改进:提高了少量分析引擎数据流分析的性能
- 新特性:支持直接根据 jar 文件名以获取 dependency library 版本信息。console中会打印依赖库版本信息和规则激活条件evaluate结果
- 新特性:增加打印全部规则id功能,增加参数
-subtools true --list-rules
- 新特性:增加 analysis unit :
endpoint-path-printer
在分析结束后,会产生 spring mapping url path 和 bean types 信息到{output}/checker/endpoint-path/web-request-mapping-paths.txt
- 新特性:支持参数控制
PreAnalysis
、AIAnalysis
单独执行, 参数映射如下- PreAnalysis:
--disable-pre-analysis
- AIAnalysis:
--enable-data-flow true
- Built-in Analysis:
--disable-built-in-analysis
(引擎内置规则)
- PreAnalysis:
- 新特性:增加了引擎超时强制退出功能,参数
--timeout {N seconds}
设置 - 新特性:Analysis API扩展:
- 增加
com.feysh.corax.config.api.report.Region
类,可极其方便地将soot、cpg、Javaparser、regex metches result 结构转换为位置信息 - PreAnalysisUnit ->
SourceFileCheckPoint
增加relativePath
字段 - PreAnalysisApi 增加了多个易用的report报告接口
- 扩展xml解析api,参考
corax-config-general/src/main/kotlin/com/feysh/corax/config/general/utils/XmlUtils.kt
和corax-config-general/src/main/kotlin/com/feysh/corax/config/general/utils/PositionalXMLReader.kt
- 增加
- 修复漏报:mybatis mapper xml 解析结果不完整导致丢失 sink 点所产生的漏报问题
- 修复漏报:改进因污点配置传递参数配置不准确导致的在容器、数组、Map场景产生的漏报问题
- 修复漏报:引擎在部分循环场景下的部分basic block上可能出现的分析中断问题(不动点错误)
- 修复漏报:引擎在生成多source的报告路径时产生的漏报bug
- 修复:行数错误问题
- 修复:引擎在产生路径时极少情况产生的StackOverflowError异常
- 修复:改进分析引擎,修复了若干崩溃和错误,增加了稳定性和正确性
corax-java-cli-community-2.14.zip
中包含编译好的规则配置和分析引擎二进制jar,无需下载源码编译。
SHA256: 9fab11e9f24c6ec4f90d452b4270bb2d3374e77feb2e18dd908c1dee6c39247a
corax-java-cli-community-2.10.1
Change log:
-
新特性: Open Corax 的授权遵循 LGPL v2.1 许可,保障了用户/公司内部等小范围群体拥有自由使用本软件的权力。然而,如果您对工具进行了扩展或修改,则您必须同样在LGPL许可下公开您的改动,这样可以确保社区共同持续地改进本工具。详情请参阅LICENSE文件。
-
新特性:支持解析 pom.xml以获取dependency library 版本信息,减少规则漏报。console中会打印依赖库版本信息和规则激活条件evaluate结果
-
新特性:支持分析安卓aar格式二进制文件,支持从类zip文件中搜索加载dex文件
-
新特性:重新设计的分析配置定义 --project-config
- 改进了黑白名单配置
-
改进:优化Java旗舰引擎的分析报告路径展示信息,大幅提高了漏洞报告可读性
- 开启soot原始变量名,尽量避免展示类似#r12、#r9的变量名
- 关联的多行bug event会inline合并为一个Stmt语句
- 对污点信息和污点的关键参数进行提示
- 增加进入和退出被调用方法的信息
-
改进:优化了部分漏洞相关的检查器(XXE、Path Traversal、ZipSlip、SQLI、ScriptEngineInjection、TrustBoundaryViolation 等)
-
改进:增加 feysh.java.sqli 注入规则的报告可读性,报告中增加指向 mybatis mapper xml 和 interface mapper method 的路径
-
改进:完善了对Spring框架分析的兼容支持,进一步降低了漏报
-
改进:PreAnalysisImpl::atSourceFile 增加并行执行
-
改进:修复完善 corax wrapper script,增加了稳定性
-
修复:指针分析的 constant analysis 返回空数据的 BUG
-
修复:改进分析引擎,修复了若干崩溃和错误,增加了稳定性和正确性
- 修复一处报告检出具有随机性问题
corax-java-cli-community-2.10.1.zip 中包含编译好的规则配置和分析引擎二进制jar
SHA256: 5e5ee9ea5e46bbb9fed349d5c699dfd2b99a42a2e7385d410c51a63249b2423f
corax-java-cli-community-2.8
Change log:
- 新特性:增加标准的OSI认证 License LGPL v2.1 保障用户/公司内部等小范围群体拥有自由使用本软件的权力,与原许可证共存的双许可证模式(原许可证条例优先)
- 新特性:引入 CPG 程序分析框架支持 - 但受框架效率较低原因,后续再增加基于该框架的规则检查器开源示例
- 变更:所有报告输出使用
feysh.java.name.CheckType
名作为报告的 checker name,替换原有的cwe-id.CheckType
- 变更:spring data jpa 框架不存在sql拼接注入,移除
JpaAnnotationSqlSinks
检查器 - 修复:MyBatis 框架分析报错和漏报问题
- 修复:Spring 框架解析合成时候的dummy method初始化对象引用恒为空指针导致的漏报问题
- 修复:Spring 框架建模漏报问题,修复和补充taint规则
- 修复:完善漏洞库版本区间判断(jackson、ooxml和log4j),降低误报
- 修复:改进分析引擎,修复了若干崩溃和错误,增加了稳定性和正确性
corax-java-cli-community-2.8.zip 中包含编译好的规则配置和分析引擎二进制jar
SHA256: 23bd34e13286cdb5d250e8358744cbd2f8fee326752deb0f1c570cbc002e40a4
corax-java-cli-community-2.6
change log:
- 完全重构 MyBatis 框架适配部分,支持该框架的所有语法特性
- 完全重构 Spring 框架的动态解析生成 taint 配置
- 新增规则
cwe-89.MybatisSqlInjectionSinkHint
,可以报告所有的 mybatis sql 注入 sink 点和对应的完整静态 sql 语句,辅助安全人员分析 - 新增规则
cwe-22.ZipSlip
检查压缩文档处理时候的恶意文件覆盖漏洞 - 扫描的源码等资源文件支持放在压缩文件中,无需解压,但是需要
--source-path
指向改源码zip包 - 更多的分析参数检查,避免输入和输出重叠导致分析变慢
- 设计接口,解决
AIAnalysisApi
不能支持直接依赖PreAnalysisApi
的分析结果,并且使用不安全的全局变量传递以来数据问题。AIAnalysisApi
可以使用PreAnalysisApi
,并且增加同步等待分析结果功能 PreAnalysisApi
增加文件过滤功能,可自定义配置- 新增参数
--c2s-mode ClassNoPackageLayout
,支持源码文件和class文件没有按照包名放在对应结构文件夹中的场景 - 一些插件和检查器配置上的调整,简化检查器管理,规范代码
- 修复规则
cwe-330.PredictRandom
的误报 - 修复若干错误,增加了稳定性
SHA256: f9405e8e942a614e88971ef52c0afcd17a522c65132dd805d99a839ca0711652
corax-java-cli-community-2.5
change log:
- feat: 我们在之前开放6个规则的基础上,又向社区开放了21个和安全相关且最受关注的Java漏洞规则,详见 feature_diff.md 查看新增规则和测试集表现
- 减少受内存墙影响导致的漏报,可以增加参数
--strict
参数关闭所有可能导致随机性的 limit ,但是不保证分析不会OOM,特别是低内存机器上 - 修复因路径组合导致的超大size报告生成
- sarif默认使用中文输出,且可以通过
--preferred-lang
指定输出语言优先级 - 修复若干错误,增加了稳定性
SHA256: acacfc44cd28503b1274f3549e0343838468d42fd1752f72ea7a305fb0ce2126
corax-java-cli-community-2.4.1
corax-java-cli-community-2.3
change log:
- Fix 报告数量具有随机性的 BUG
如果需要进一步地解决随机问题,可以在{user.home}/.corax/settings.properties
加上一行dataFlowInterProceduralCalleeTimeOut=-1
关闭超时机制,才能彻底解决随机问题,但是可能出现分析耗时较长的问题(也可以将 timeout 改大一点,牺牲一点点分析完整性的同时保证报告效率(或避免可能的卡死bug,有请反馈并加上测试用例),默认15000 (15秒)) - Multi-threaded algorithm optimizations
- CLI optimizations and bug fixes
SHA256: c34ab7d7ca7cc3cbc4fd5e9fb2895a972f0be8d755a99fab547477ca692c5517