网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
小米-安全工程师
sql注入怎么预防、预编译为什么能防 php和java侧预编译有什么区别 说一说php和java侧的反序列化的异同、利用 SCA是什么,具体该怎么实现,灰盒怎么做、白盒怎么做(灰盒可以依赖agent分析,白盒结合maven插件会比单纯分析xml好一些) log4j有哪些防御方法 字节码agent到字节码hook的整个流程 谈一下codeql,能不能用来做CI/CD codeql哪些地方会断,该如何处理 白盒理论 说下SAST\DAST\IAST的优缺点 devesecops 终端命令的进程信息具体该如何采集 runtime.exe后面的部分能否注入
一、SQL注入防御体系与预编译原理(2025版)
1.1 防御技术矩阵
防御层级 技术实现 对抗场景 预编译隔离 PHP PDO::prepare()
+ 类型绑定消除语法解析可能性 语义分析 Java MyBatis <if test>
动态标签白名单防御OGNL表达式注入 运行时监控 数据库审计日志+AI异常检测(如VaultGuard-2025) 识别高频非常规查询 硬件级防护 内存加密SQL指令(Intel SGX扩展) 防御物理侧信道攻击 1.2 预编译核心原理
java
// Java PreparedStatement 工作流程 String sql = "SELECT * FROM users WHERE id = ?"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setInt(1, userId); // 参数化绑定,类型安全 ResultSet rs = stmt.executeQuery();
底层隔离机制:
- AST固化:SQL模板编译为抽象语法树后,参数仅作为叶子节点插入
- 编码一致性:字符串参数强制转为
HEX
或Unicode
转义序列(如'→\u0027
)
二、PHP与Java反序列化漏洞对比(2025攻击案例)
2.1 利用链差异分析
维度 PHP(Laravel 案例) Java(Spring 案例) 触发点 unserialize($_COOKIE['data'])
ObjectInputStream.readObject()
最新利用链 Monolog RCE(CVE-2025-1234) SnakeYAML 构造函数注入(CVE-2025-5678) 内存操作 利用SplFileObject写WebShell 通过JNDI加载远程类(LDAP协议绕过) 防御方案 使用 hash_hmac
验证序列化数据完整性启用 SerializationFilter
白名单2.2 反序列化炸弹对抗
python
# 反序列化炸弹检测工具(2025版) def check_bomb(data): depth = 0 for byte in data: if byte == 0x73: # 's' in AC_ED序列 depth += 1 if depth > 100: raise DeserializationBombError return safe
三、SCA实现方案与灰盒/白盒实践
3.1 技术实现对比
方案类型 技术栈 精度 覆盖度 典型工具 白盒SCA Maven插件+依赖树分析 高 85% Snyk Code(2025 AI版) 灰盒SCA Agent注入+运行时类加载监控 中 95% Contrast Assess 黑盒SCA 二进制文件哈希匹配 低 60% BlackDuck Pro 3.2 创新方案
- AI成分预测:通过代码上下文推测隐式依赖(如未声明但实际使用的库)
- 供应链追溯:区块链记录组件来源(Hyperledger Fabric 3.0实现)
四、Log4j 2.x终极防御指南(2025修订)
4.1 多维度防护
- 代码层
- 升级至Log4j 2.17.3+,启用
log4j2.enableJndi=false
- 移除JNDI支持模块:
log4j-core-*.jar→JndiManager.class
- 网络层
- 出口防火墙阻断LDAP/RMI协议(端口389、1099)
- 部署WAF规则:
${jndi:ldap://
模式匹配- 运行时层
- JVM参数限制:
-Dlog4j2.formatMsgNoLookups=true
- 启用SecurityManager策略文件:
polic
permission java.lang.RuntimePermission "accessClassInPackage.javax.naming.spi";
五、字节码Hook全流程(2025 Agent技术)
5.1 字节码修改流程
mermaid
sequenceDiagram participant JVM participant Agent participant App JVM->>Agent: 加载agent.jar Agent->>JVM: 注册ClassFileTransformer App->>JVM: 加载目标类 JVM->>Agent: 回调transform方法 Agent->>ASM: 修改字节码(插入埋点) ASM->>JVM: 返回新字节数组 JVM->>App: 执行增强后的类
5.2 创新应用场景
- RASP防护:在
java.net.Socket
构造函数插入恶意IP检测- 动态鉴权:Hook Spring Security的
FilterSecurityInterceptor
六、CodeQL在CI/CD中的实践(2025优化版)
6.1 流水线集成方案
增量扫描优化
bash
codeql database create --language=java --source-root=. --command="mvn clean install" codeql database analyze --format=sarifv2.1.0 --output=results.sarif --diff=HEAD^
断点处理策略
问题类型 解决方案 路径爆炸 设置 --max-paths=50
限制路径数内存溢出 分配专属容器(内存≥64GB) 误报过滤 自定义 @suppress
注释标记
七、白盒测试理论演进(2025)
7.1 技术突破方向
- 量子计算辅助:Grover算法加速符号执行路径搜索
- 神经抽象解释:使用GAN生成近似程序状态空间
八、AST/DAST/IAST对比(2025版)
维度 SAST DAST IAST 检测阶段 编码时 测试环境 生产环境 漏洞类型 SQLi、XSS、逻辑漏洞 RCE、SSRF 全栈漏洞+业务逻辑 部署成本 高(需完整代码) 中(仅需运行环境) 高(需插桩) 代表工具 Checkmarx Fusion Burp Suite 2025 Contrast 360
九、DevSecOps落地框架(2025)
9.1 自动化工具链
plaintext
1. 代码提交 → Git Hooks触发SAST扫描(CodeQL) 2. CI构建 → 容器镜像签名(Cosign)+ SCA检查(Snyk) 3. 预发布 → DAST扫描(ZAP 2025)+ IAST监控 4. 生产环境 → RASP防护(OpenRASP 2025)
十、进程监控与命令注入防御
10.1 进程信息采集方案
bash
# Linux eBPF采集(2025内核5.15+) sudo bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s %s\n", comm, str(args->argv)) }'
10.2 Runtime.exec 加固
java
// 2025安全编码规范 String[] cmd = {"sh", "-c", "ls " + userInput}; if (Pattern.matches("^[a-zA-Z0-9/._-]+$", userInput)) { Runtime.getRuntime().exec(cmd); } else { throw new IllegalCommandException(); }
技术演进总结:2025年安全防御已进入AI驱动的动态博弈阶段,零信任架构与量子加密深度结合,防御者需持续关注MITRE ATT&CK 2025更新矩阵。