Skip to content

Commit 1e4409f

Browse files
edvraaedvraa
authored andcommitted
SharpSerializer
1 parent c3ac3ca commit 1e4409f

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,4 +798,18 @@ module UnsafeDeserialization {
798798
)
799799
}
800800
}
801+
802+
/** SharpSerializer */
803+
private class SharpSerializerDeserializeMethodSink extends InstanceMethodSink {
804+
SharpSerializerDeserializeMethodSink() {
805+
exists(MethodCall mc, Method m |
806+
m = mc.getTarget() and
807+
(
808+
not mc.getArgument(0).hasValue() and
809+
m instanceof SharpSerializerClassDeserializeMethod
810+
) and
811+
this.asExpr() = mc.getArgument(0)
812+
)
813+
}
814+
}
801815
}

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ class WeakTypeDeserializer extends Class {
6363
this instanceof ServiceStackTextCsvSerializerClass
6464
or
6565
this instanceof ServiceStackTextXmlSerializerClass
66+
or
67+
this instanceof SharpSerializerClass
6668
}
6769
}
6870

@@ -624,3 +626,16 @@ class CsPicklerSerializerClassUnPickleOfStringMethod extends Method, UnsafeDeser
624626
this.hasName("UnPickleOfString")
625627
}
626628
}
629+
630+
/** Polenter.Serialization.SharpSerializer */
631+
private class SharpSerializerClass extends Class {
632+
SharpSerializerClass() { this.hasQualifiedName("Polenter.Serialization.SharpSerializer") }
633+
}
634+
635+
/** `Polenter.Serialization.SharpSerializer.Deserialize` method */
636+
class SharpSerializerClassDeserializeMethod extends Method, UnsafeDeserializer {
637+
SharpSerializerClassDeserializeMethod() {
638+
this.getDeclaringType().getBaseClass*() instanceof SharpSerializerClass and
639+
this.hasName("Deserialize")
640+
}
641+
}

0 commit comments

Comments
 (0)