Skip to content

Commit f4cb6c5

Browse files
edvraaedvraa
authored andcommitted
YamlDotNet
1 parent 1e4409f commit f4cb6c5

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-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
@@ -812,4 +812,18 @@ module UnsafeDeserialization {
812812
)
813813
}
814814
}
815+
816+
/** YamlDotNet */
817+
private class YamlDotNetDeserializerDeserializeMethodSink extends ConstructorOrStaticMethodSink {
818+
YamlDotNetDeserializerDeserializeMethodSink() {
819+
exists(MethodCall mc, Method m |
820+
m = mc.getTarget() and
821+
(
822+
not mc.getArgument(0).hasValue() and
823+
m instanceof YamlDotNetDeserializerClasseserializeMethod
824+
) and
825+
this.asExpr() = mc.getArgument(0)
826+
)
827+
}
828+
}
815829
}

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ class WeakTypeDeserializer extends Class {
6565
this instanceof ServiceStackTextXmlSerializerClass
6666
or
6767
this instanceof SharpSerializerClass
68+
or
69+
this instanceof YamlDotNetDeserializerClass
6870
}
6971
}
7072

@@ -639,3 +641,19 @@ class SharpSerializerClassDeserializeMethod extends Method, UnsafeDeserializer {
639641
this.hasName("Deserialize")
640642
}
641643
}
644+
645+
/** YamlDotNet.Serialization.Deserializer */
646+
private class YamlDotNetDeserializerClass extends Class {
647+
YamlDotNetDeserializerClass() { this.hasQualifiedName("YamlDotNet.Serialization.Deserializer") }
648+
}
649+
650+
/** `YamlDotNet.Serialization.Deserializer.Deserialize` method */
651+
class YamlDotNetDeserializerClasseserializeMethod extends Method, UnsafeDeserializer {
652+
YamlDotNetDeserializerClasseserializeMethod() {
653+
exists(YamlDotNetDeserializerClass c |
654+
this.getDeclaringType().getBaseClass*() = c and
655+
this.hasName("Deserialize") and
656+
c.getALocation().(Assembly).getVersion().getMajor() < 5
657+
)
658+
}
659+
}

0 commit comments

Comments
 (0)