package fuzion24.device.vulnerability.vulnerabilities.framework.securerandom; import android.content.Context; import android.util.Log; import java.security.SecureRandom; import java.util.ArrayList; import java.util.List; import fuzion24.device.vulnerability.util.CPUArch; import fuzion24.device.vulnerability.vulnerabilities.VulnerabilityTest; public class SecureRandomTest implements VulnerabilityTest{ /* Patched: https://android.googlesource.com/platform/libcore/+/ab6d7714b47c04cc4bd812b32e6a6370181a06e4%5E%21/#F0 Details: http://emboss.github.io/blog/2013/08/21/openssl-prng-is-not-really-fork-safe/ http://www.cvedetails.com/cve/CVE-2013-7372/ */ @Override public String getCVEorID() { return "CVE-2013-7372"; } @Override public List<CPUArch> getSupportedArchitectures() { ArrayList<CPUArch> archs = new ArrayList<>(); archs.add(CPUArch.ALL); return archs; } @Override public boolean isVulnerable(Context context) throws Exception { long [] histogram = new long[256]; for(int i = 0; i < histogram.length; i++){ histogram[i] = 0; } byte[] buf = new byte[0x1000]; for(int i = 0; i < 1000; i++) { SecureRandom sr = SecureRandom.getInstance("SHA1PRNG"); sr.nextBytes(buf); for(int j = 0; j < buf.length; j++) histogram[buf[j] & 0xFF]++; } for(int i = 0; i < histogram.length; i++) Log.d("Histogram", "i " + i + " : " + histogram[i]); return false; } }