Alex Herbert created RNG-120:
--------------------------------

             Summary: Fix security issues in serialization code for Random 
instances
                 Key: RNG-120
                 URL: https://issues.apache.org/jira/browse/RNG-120
             Project: Commons RNG
          Issue Type: Improvement
          Components: core, simple
    Affects Versions: 1.3
            Reporter: Alex Herbert
            Assignee: Alex Herbert


SonarCloud has highlighted security issues in the use of serialization to save 
and restore the state of java.util.Random instances.

When reading objects using ObjectInputStream.readObject() the class is first 
identified and the private readObject() method of the class type is executed 
(if it is present). If the class is a malicious class then potentially 
malicious code can be executed.
h2. JDKRandom

Uses serialisation to save the {{java.util.Random}} instance to the 
RandomProviderState.

The code requires that {{java.util.Random}} is read using 
ObjectInputStream.readObject(). To ensure the code only allows 
{{java.util.Random}} to be read the code can adapt the 
[ValidatingObjectInputStream|https://commons.apache.org/proper/commons-io/javadocs/api-2.6/org/apache/commons/io/serialization/ValidatingObjectInputStream.html]
 idea from Commons IO to prevent malicious code execution.
h2. JDKRandomBridge

This writes and reads a byte[] using the writeObject and readObject methods of 
ObjectOutput/InputStream. To avoid use of readObject() the code can be 
refactored to write the byte[] using the write(byte[]) method of 
ObjectOutputStream and the readFully(byte[]) method of ObjectInputStream.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to