-
We are currently using Akka 1.4 with Hyperion serialization configured for all user messages sent between Akka systems. We want to make sure Hyperion cannot be tricked into deserialization of untrusted data (see CWE-502 for details about that matter). I know about Hyperion's We would like to have an option for a whitelist approach where we list all types that are allowed to be deserialized explicitly. I looked into Hyperion's "Pre-Configured Types" mechanism which involves an We know that using some schema-based serialization technology (e.g. Google's Protocol Buffers) doesn't suffer from such attack vectors but, unfortunately, we cannot use it in our product. Also securing communication between Actor Systems using a VPN is not an option for us. So the questions are:
|
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 16 replies
-
First, sorry for the delay in getting back to you. So right now it looks like our unsafe types list is static when it really should be configurable. @Arkatufus on our team will open an issue for that and we'll work on some solutions. I like the idea of taking the |
Beta Was this translation helpful? Give feedback.
-
As of now, the return value of Expanding Adding a toggle in HOCON to let Hyperion to use the list provided by Another option would be to pass a class that contains a delegate callback, but that means we will couple Hyperion and Akka and that just seemed wrong to me, |
Beta Was this translation helpful? Give feedback.
-
@Arkatufus has posted a full spec for this here: akkadotnet/Hyperion#275 (comment) |
Beta Was this translation helpful? Give feedback.
As of now, the return value of
IKnownTypesProvider.GetKnownType()
is the one being passed to the underlying Hyperion serializer, so it can be considered as immutable after the serializer starts.Expanding
IKnownTypesProvider
with another method that returns a list of allowed/disallowed types is a viable solution, but it will break compatibility with previous versions of Akka; a safer solution would be to provide another interface to pass in the allowed/disallowed types. It shouldn't matter coding wise, since you can use one class that implements both interface. This implementing class can then be passed in in the HOCON settings just like the known types provider setting.Adding a toggle i…