CC备忘录

CC

  • jdk

  • xalan

    • 说明: Apache Xalan是Java内部对于JAXP的实现,所以被包含在了JDK的原生库中。

    • com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl

    • com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter

  • commons-collections : 3.1~3.2.1

    • org.apache.commons.collections.map.TransformedMap:CC0

    • org.apache.commons.collections.map.LazyMap:CC1、CC3

    • org.apache.commons.collections.keyvalue.TiedMapEntry:CC5、CC6

    • 修复: 新版代码中增加了⼀个⽅法 FunctorUtils#checkUnsafeSerialization ,⽤于检测反序列化是否安全。如果开发者没有设置全局配置 org.apache.commons.collections.enableUnsafeSerialization=true ,即默认情况下会 抛出异常。 这个检查在常⻅的危险Transformer类 (InstantiateTransformer、 InvokerTransformer 、PrototypeFactory 、 CloneTransformer 等)的 readObject ⾥进⾏调⽤ ;

  • commons-collections4 : 4.0

    • org.apache.commons.collections4.comparators.TransformingComparator:CC2

    • org.apache.commons.collections4.bag.TreeBag:CC4

    • 修复:4.1⾥,这⼏个危险Transformer类不再实现 Serializable 接⼝,彻底⽆法序列化和反序列化了。

上面的相关调用链可能和下面有出入,上文是按照su18师傅做的记录,下面基本按照yeso的实现;

flowchart LR %% Source 区域 subgraph source A1["AnnotationInvocationHandler.readObject()"] A2["BadAttributeValueExpException.readObject()"] A3["HashMap.readObject()"] A4["HashTable.readObject()"] A5["PriorityQueue.readObject()"] end %% Gadget 区域 subgraph gadget B1["AbstractInputCheckedMapDecorator.setValue()"] B2["TransformedMap.checkSetValue()"] B3["AnnotationInvocationHandler.invoke()"] B4["LazyMap.get()"] B5["TiedMapEntry.hashCode()"] B12["TiedMapEntry.toString()"] B6["AbstractMap.equals()"] B7["TransformingComparator.compare()"] B8["ChainedTransformer.transform()"] end %% Sink 区域 subgraph sink B9["InvokerTransformer.transform()"] B10["InstantiateTransformer.transform()"] B11["TrAXFilter.<init>()"] C1["Runtime.exec()"] C2["TemplatesImpl.newTransformer()"] end %% CC0(橙色) A1 -- CC0 --> B1 B1 -- CC0 --> B2 B2 -- CC0 --> B8 B8 -- CC0 --> B9 B9-- CC0 --> C1 %% CC1(紫色) A1 -- CC1 --> B3 B3 --CC1 --> B4 B4 -- CC1 --> B8 B8 -- CC1 --> B9 B9 -- CC1 --> C1 %% CC3(蓝色) A1 -- CC3 --> B3 B3 -- CC3 --> B4 B4 -- CC3 --> B8 B8 -- CC3 --> B10 B10-- CC3 --> B11 B11 -- CC3 --> C2 %% CC5(绿色) A2 -- CC5 --> B12 B12 -- CC5 --> B4 B4 -- CC5 --> B8 B8 -- CC5 --> B9 B9 -- CC5 --> C1 %% CC6(红色) A3 -- CC6 --> B5 B5 -- CC6 --> B4 B4 -- CC6 --> B8 B8 -- CC6 --> B9 B9 -- CC6 --> C1 %% CC7(棕色) A4 -- CC7 --> B6 B6 -- CC7 --> B4 B4 -- CC7 --> B8 B8 -- CC7 --> B9 B9 -- CC7 --> C1 %% CC2(青色) A5 -- CC2 --> B7 B7 -- CC2 --> B9 B9 -- CC2 --> C2 %% CC4(粉色) A5 -- CC4 --> B7 B7 -- CC4 --> B8 B8-- CC4 --> B10 B10 -- CC4 --> B11 B11 -- CC4 --> C2 %% 线条样式 linkStyle 0,1,2,3,4 stroke:#ff9900,stroke-width:3px; linkStyle 5,6,7,8,9 stroke:#9900ff,stroke-width:3px; linkStyle 10,11,12,13,14,15 stroke:#3399ff,stroke-width:3px; linkStyle 16,17,18,19,20 stroke:#33cc33,stroke-width:3px; linkStyle 21,22,23,24,25 stroke:#ff3333,stroke-width:3px; linkStyle 26,27,28,29,30 stroke:#996633,stroke-width:3px; linkStyle 31,32,33 stroke:#00cccc,stroke-width:3px; linkStyle 34,35,36,37,38 stroke:#ff66cc,stroke-width:3px; %% 说明 classDef source fill:#b3d1ff,stroke:#333,stroke-width:2px; classDef gadget fill:#c6f7e2,stroke:#333,stroke-width:2px; classDef sink fill:#ffe0b3,stroke:#333,stroke-width:2px; class A1,A2,A3,A4,A5 source; class B1,B2,B3,B4,B5,B6,B7,B8,B12 gadget; class B9,B10,B11,C1,C2 sink;
posted @ 2025-05-02 18:38  Yg~  阅读(29)  评论(0)    收藏  举报