Skip to content

Commit 8084449

Browse files
author
edvraa
committed
Get rid of UnsafeDeserializerCallable
1 parent b6952d5 commit 8084449

File tree

3 files changed

+5
-84
lines changed

3 files changed

+5
-84
lines changed

csharp/ql/src/Security Features/CWE-502/DeserializedDelegate.ql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import semmle.code.csharp.serialization.Deserializers
1616

1717
from Call deserialization, Cast cast
1818
where
19-
deserialization.getTarget() instanceof UnsafeDeserializerCallable and
19+
deserialization.getTarget() instanceof UnsafeDeserializer and
2020
cast.getExpr() = deserialization and
2121
cast.getTargetType() instanceof SystemLinqExpressions::DelegateExtType
2222
select deserialization, "Deserialization of delegate type."

csharp/ql/src/semmle/code/csharp/security/dataflow/UnsafeDeserialization.qll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ module UnsafeDeserialization {
8989

9090
override predicate isSink(DataFlow::Node sink) {
9191
exists(MethodCall mc |
92-
mc.getTarget() instanceof UnsafeDeserializerCallable and
92+
mc.getTarget() instanceof UnsafeDeserializer and
9393
sink.asExpr() = mc.getQualifier()
9494
)
9595
}
@@ -127,7 +127,7 @@ module UnsafeDeserialization {
127127

128128
override predicate isSink(DataFlow::Node sink) {
129129
exists(MethodCall mc |
130-
mc.getTarget() instanceof UnsafeDeserializerCallable and
130+
mc.getTarget() instanceof UnsafeDeserializer and
131131
sink.asExpr() = mc.getQualifier()
132132
)
133133
}

csharp/ql/src/semmle/code/csharp/serialization/Deserializers.qll

Lines changed: 2 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -8,85 +8,6 @@ import csharp
88
/** An unsafe deserializer. */
99
abstract class UnsafeDeserializer extends Callable { }
1010

11-
/** Unsafe deserialization calls. */
12-
class UnsafeDeserializerCallable extends Callable {
13-
UnsafeDeserializerCallable() {
14-
this instanceof BinaryFormatterDeserializeMethod
15-
or
16-
this instanceof BinaryFormatterUnsafeDeserializeMethod
17-
or
18-
this instanceof BinaryFormatterUnsafeDeserializeMethodResponseMethod
19-
or
20-
this instanceof SoapFormatterDeserializeMethod
21-
or
22-
this instanceof ObjectStateFormatterDeserializeMethod
23-
or
24-
this instanceof NetDataContractSerializerDeserializeMethod
25-
or
26-
this instanceof NetDataContractSerializerReadObjectMethod
27-
or
28-
this instanceof DataContractJsonSerializerReadObjectMethod
29-
or
30-
this instanceof JavaScriptSerializerClassDeserializeMethod
31-
or
32-
this instanceof JavaScriptSerializerClassDeserializeObjectMethod
33-
or
34-
this instanceof XmlObjectSerializerReadObjectMethod
35-
or
36-
this instanceof XmlSerializerDeserializeMethod
37-
or
38-
this instanceof DataContractSerializerReadObjectMethod
39-
or
40-
this instanceof XmlMessageFormatterReadMethod
41-
or
42-
this instanceof LosFormatterDeserializeMethod
43-
or
44-
this instanceof FastJsonClassToObjectMethod
45-
or
46-
this instanceof ActivityLoadMethod
47-
or
48-
this instanceof ResourceReaderConstructor
49-
or
50-
this instanceof BinaryMessageFormatterReadMethod
51-
or
52-
this instanceof XamlReaderParseMethod
53-
or
54-
this instanceof XamlReaderLoadMethod
55-
or
56-
this instanceof XamlReaderLoadAsyncMethod
57-
or
58-
this instanceof ProxyObjectDecodeValueMethod
59-
or
60-
this instanceof ProxyObjectDecodeSerializedObjectMethod
61-
or
62-
this instanceof JaysonConverterToObjectMethod
63-
or
64-
this instanceof ServiceStackTextJsonSerializerDeserializeFromStringMethod
65-
or
66-
this instanceof ServiceStackTextJsonSerializerDeserializeFromReaderMethod
67-
or
68-
this instanceof ServiceStackTextJsonSerializerDeserializeFromStreamMethod
69-
or
70-
this instanceof ServiceStackTextTypeSerializerDeserializeFromStringMethod
71-
or
72-
this instanceof ServiceStackTextTypeSerializerDeserializeFromReaderMethod
73-
or
74-
this instanceof ServiceStackTextTypeSerializerDeserializeFromStreamMethod
75-
or
76-
this instanceof ServiceStackTextCsvSerializerDeserializeFromStringMethod
77-
or
78-
this instanceof ServiceStackTextCsvSerializerDeserializeFromReaderMethod
79-
or
80-
this instanceof ServiceStackTextCsvSerializerDeserializeFromStreamMethod
81-
or
82-
this instanceof ServiceStackTextXmlSerializerDeserializeFromStringMethod
83-
or
84-
this instanceof ServiceStackTextXmlSerializerDeserializeFromReaderMethod
85-
or
86-
this instanceof ServiceStackTextXmlSerializerDeserializeFromStreamMethod
87-
}
88-
}
89-
9011
/** A deserializer exploitable only if user controls the expected object type. */
9112
class StrongTypeDeserializer extends Class {
9213
StrongTypeDeserializer() {
@@ -143,12 +64,12 @@ class WeakTypeDeserializer extends Class {
14364
* An unsafe deserializer method that calls any unsafe deserializer on any of
14465
* the parameters.
14566
*/
146-
private class WrapperDeserializer extends UnsafeDeserializerCallable, UnsafeDeserializer {
67+
private class WrapperDeserializer extends UnsafeDeserializer {
14768
WrapperDeserializer() {
14869
exists(Call call |
14970
call.getEnclosingCallable() = this and
15071
call.getAnArgument() instanceof ParameterAccess and
151-
call.getTarget() instanceof UnsafeDeserializerCallable
72+
call.getTarget() instanceof UnsafeDeserializer
15273
)
15374
}
15475
}

0 commit comments

Comments
 (0)