OGNL 严格调用黑名单可被反射代理绕过
先了解这件事
GitHub 安全公告库发布 GHSA-crwc-vw2r-qr6m:OGNL 的 stricter-invocation 阻止列表按被调用方法的声明类过滤,而 java.lang.reflect.Method 等反射类不在列表中,因此表达式可用 someMethod.invoke(target, args) 代理调用 Runtime、ProcessBuilder 等本应被阻止的方法。公告称,在默认 OGNL 上下文(仅公开访问、启用严格调用)下,该表达式成功创建文件,而直接调用 new ProcessBuilder(...).start() 会被阻止。 公告列出的受影响条件是:应用会执行不可信或攻击者可控的 OGNL 表达式,使用 OGNL 默认宽松的 MemberAccess(或同样允许 java.lang.reflect 的配置),并把严格调用阻止列表当作沙箱。公告称,配置正确的使用方不受影响,包括使用 SecurityMemberAccess 的 Apache Struts。 公告给出的修复方式是把 java.lang.reflect.Method、Constructor、Field 加入严格调用阻止列表,使反射对象不能再在严格模式下充当调用代理。
AI 根据报道生成 · 1 天前更新
报道时间线
沿着报道,了解事件的不同侧面。
- GitHub 安全公告库 (GHSA)OGNL stricter-invocation 阻止列表可经 java.lang.reflect 反射代理绕过
OGNL 的 stricter-invocation 阻止列表按被调用方法的声明类过滤,因 java.lang.reflect.Method 等不在列表中,表达式可用 someMethod.invoke(target, args) 作代理调用 Runtime、ProcessBuilder 等被阻止的方法,PoC 在默认上下文下成功创建文件。
本事件热度走势
还没有足够的连续观测数据,暂不绘制趋势。