type
status
date
slug
summary
tags
category
icon
password
CheckMarx
简介
Checkmarx CxEnterprise静态源代码安全扫描和管理工具是以色列Checkmarx 公司研发新一代源代码静态扫描方案。Checkmarx CxEnterprise的主要功能是通过扫描源代码发现代码中存在的质量缺陷和安全问题,从而提高代码的质量,减少人工代码审查和测试的时间。
原理
Checkmarx CxEnterprise拥有独特的虚拟编译器技术,Checkmarx 虚拟编译器通过内置的语法解析器把不同语言的代码转换到一种通用的格式,再以CxQL(Checkmarx创建的规则语言)所编写的漏洞规则去查询这个转换后的元素库。
使用方式
Checkmarx 部署在windows server服务器上,可以扫描多种平台开发的代码,支持多并发扫描.
注意
安装环境:
windows sever 2016虚拟机,关闭防火墙和杀软
使用时确保以下几个服务处于启动状态CxJobsManager、CxScansManager、CxSystemManager、CxScanEngine、IIS Admin Service、World Wide Web Publishing Service。
扫描java项目时,最好配合上传jar包,不然容易编译问题漏报.
1.New Local Project使用客户端新建项目
count统计代码行数,Select Queries Before Loading Project选择审计规则库

2.查看扫描结果

3.保存项目扫描结果
在仪表栏中,Results-Save Results-选择需要保存的结果

4.Web端扫描
默认英文,在仪表盘,Management-Application-General,Defauit server Language设置中文
新建项目 Project&scans-Create New Project
上传项目源码压缩包

进入队列排队

分别为扫描结果,扫描报告,项目总结

JAVA反序列化
序列化和反序列化
序列化与反序列化简单来说就是 Java 对象与数据之间的相互转化。
实现接口:Serializable 接口或Externalizable接口。
序列化由
ObejctOutputStream 的 writeObject 方法实现而反序列化是由
ObjectInputStream 的 readObject 方法实现java序列化的数据一般会以标记(ac ed 00 05)开头
base64编码后的特征为rO0AB
zip格式特征:PK
反序列化操作的功能位置:导入模版文件、网络通信、数据传输、日志格式化存储、对象数据落磁盘或DB存储等业务场景。
java序列化的数据包特征(ac ed 00 05)开头,base64编码后的特征为rO0AB。
一些服务的传输可能存在反序列化:多平台HTTP通信、RMI、JMX。
审计方法
一些反序列化触发点:
全局搜索是否具有public权限的一些方法:public \* writeObject/readObject/readResolve/writeReplace。
查看反序列化类中是否包含敏感数据。
全局查找implements Serializable 的所有内部类。
修复
对要反序列化的对象设置黑白名单,像 fastJSON、Jackson这种官方会维护一个黑名单,持续更新,但还是建议使用白名单,可通过Hook函数resolveClass()来校验反序列化的类从而实现白名单校验;也可以使用Apache Commons IO Serialization包中的ValidatingObjectInputStream类的accept()方法来实现反序列化类白/黑名单控制。
对于一些敏感的属性,将其声明为 transient,或进行加密处理。
避免内部类的序列化,或把内部类声明为静态,但还是要注意敏感信息的问题。