mardi 11 janvier 2022

Can I use reflection to detect potential attack gadget vulnerabilities?

I use a package that contains code for a tcp server and client that is really easy to use, problem is it uses Newtonsoft Json serialization and deserialization with TypeNameHandling.All to send an receive messages, and client or servers could be untrusted sources.

public static JsonSerializerSettings JsonSettings = new()
        {
            TypeNameHandling = TypeNameHandling.All,

        };
[...]
[...]
return JsonConvert.DeserializeObject<INetMessage>(message.Substring(8), JsonSettings);

It also contains such a class:

public class NetMessage<T> : INetMessage where T: ISafeNetSerialization
    {
        public ulong snowflake { get; set; }

        public T Content { get; set; }

        public NetMessage(T content)
        {
            this.Content = content;
        }

        public override string ToString()
        {
            return Content.ToString();
        }
    }

Can I use a code snippet using reflection, to go through all types inheriting INetMessage and ISafeNetSerialization interfaces and check if they can possibly contain something (or contain something that contains... etc) like an object, a dynamic or an Exception, a CollectionBase and other untyped objects and collections, including any Generic types inheriting those two that could be added in another library ?

I know that I should especially look for TempFileCollection and ObjectDataProvider.

Code snippet would then be used inside an unit test or at runtime before the initialization of the first server / and / or tcp client.





Aucun commentaire:

Enregistrer un commentaire