安全与风控
JNDI/Log4Shell…
适用于 Java 应用因用户可控 JNDI lookup 或 Log4j2 Lookup 导致 LDAP/RMI 远程加载风险时的检测、缓解与授权验证。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
JNDI/Log4Shell 滥用风险识特定
解决思路
- 识别所有用户输入进入 InitialContext.lookup() 的代码路径,覆盖 RMI、LDAP、DNS、CORBA 命名服务调用。
- 审计 Log4j2 的 ${...} Lookup 解析,关注日志、User-Agent、X-Forwarded-For、Referer、Accept-Language、X-Api-Version、Authorization、Cookie、URL 路径、POST body、搜索查询、上传文件名、表单字段名、GraphQL 变量、SOAP/XML、JSON 值等输入点。
- 确认 Log4j2 版本:2.0-beta9 到 2.14.1 受影响;2.15.0 部分修复,2.17.0 完全修复;Log4j 1.x 不受同一 Lookup 机制影响。
- 升级 Log4j2 到 2.17.0+;若不能立即升级,禁用 JNDI Lookup、移除 JndiLookup 类、设置 log4j2.formatMsgNoLookups=true 等厂商缓解措施。
- 升级 JDK 并限制远程 codebase:RMI 在 8u121 后、LDAP 在 8u191 后默认禁用远程类加载;不要开启 trustURLCodebase。
- 限制 Java 应用出站 LDAP/RMI/DNS 流量,仅允许业务必需目标;对异常命名服务连接告警。
- 审计类路径中 CommonsCollections 等反序列化 gadget,移除不必要组件,启用 Java 反序列化过滤/白名单。
- 若 Tomcat BeanFactory 在类路径,限制其被 LDAP 响应引用为 factory,并监控 javax.el.ELProcessor 等异常类。
- 检查 Spring JndiTemplate.lookup()、Apache Solr、Apache Druid、VMware vCenter、H2 Database Console、Fastjson @type + JdbcRowSetImpl.setDataSourceName() 等已知 sink。
- 在授权隔离环境中使用 DNS 回调做非破坏性确认,记录范围、停止条件;不在生产验证 RCE 或 WAF 绕过。
- 对 WAF 和日志聚合管道进行防御性测试,覆盖编码、拆分日志和 Lookup 变体漏检,但仅用于修补检测规则。
- 建立最小权限、出站白名单、JNDI/LDAP/RMI 连接异常监控和升级补丁流程。
适用边界 · 注意事项
- 未获得明确授权的目标或生产系统
- 需要提供可执行 RCE、WAF 绕过或后利用 payload 的场景
- 没有隔离、回滚和监控能力的测试环境