[ 
https://issues.apache.org/jira/browse/SOLR-10338?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mihaly Toth updated SOLR-10338:
-------------------------------
    Attachment: SOLR-10338.patch

I tried again setting {{java.security.egd}} from a class itself. It is possible 
to set it, and it does have an effect on the algorithm selected given that the 
Sun security provider is loaded after that. Please see my opening comment on 
this Jira for code snippets.

So I believe it is possible. The other question is if it is needed. The only 
motivation now are other projects that are depending on {{SolrTestCaseJ4}}. 
With setting the property if it is unset, there is a chance that those projects 
are not broken.

In Solr test however I would not rely solely on this solution because this is 
not bullet proof. If any other test not subclassing {{SolrTestCaseJ4}} AND 
using directly or indirectly {{SecureRandom}} would run before 
{{SolrTestCaseJ4}} subclassed tests then all these later tests would fail. This 
is because the algorithm is decided on first usage of {{SecureRandom}}. I did a 
test run having only setting the property in setup and I have got couple of 
failures.

The attached patch uses {{test.solr.allow.any.securerandom}} system property to 
allow validation of the algorithm defaulting to true. In case of algorithm 
verification I blacklisted {{NativePRNG}} and {{NativePRNGBlocking}}. According 
to 
https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SUNProvider
 those are the algorithms using {{/dev/random}} in one way or another. 

Regarding the question on how stable it is to overwrite this property from code 
I found no mentioning of any limitation where the property could be set. Among 
other page I read the javadoc of 
https://github.com/frohoff/jdk8u-jdk/blob/master/src/solaris/classes/sun/security/provider/NativePRNG.java
 . So I do not think this behaviour would change in any future versions of Java 
8. NativePRNG in Java 9 is only a skeleton implementation. And we have the test 
suite as a last resort to tell if such unexpected event occured.

> Configure SecureRandom non blocking for tests.
> ----------------------------------------------
>
>                 Key: SOLR-10338
>                 URL: https://issues.apache.org/jira/browse/SOLR-10338
>             Project: Solr
>          Issue Type: Sub-task
>            Reporter: Mihaly Toth
>            Assignee: Mark Miller
>             Fix For: 6.6, master (7.0)
>
>         Attachments: SOLR-10338.patch, SOLR-10338.patch, SOLR-10338.patch, 
> SOLR-10338.patch, SOLR-10338.patch
>
>
> It would be best if SecureRandom could be made non blocking. In that case we 
> could get rid of random entropy exhaustion issue related to all usages of 
> SecureRandom.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to