package fuzion24.device.vulnerability.vulnerabilities.kernel;
import android.content.Context;
import java.util.ArrayList;
import java.util.List;
import fuzion24.device.vulnerability.util.CPUArch;
import fuzion24.device.vulnerability.vulnerabilities.VulnerabilityTest;
/**
* Created by fuzion24 on 8/24/15.
*/
public class CVE_2015_3636 implements VulnerabilityTest {
static {
System.loadLibrary("pingpong");
}
/*
Fix: https://github.com/torvalds/linux/commit/a134f083e79fb4c3d0a925691e732c56911b4326
Discussion: http://www.openwall.com/lists/oss-security/2015/05/02/11
implementation: https://github.com/scoty755/libping_unhash_exploit_POC
*/
@Override
public String getCVEorID() {
return "CVE-2015-3636";
}
@Override
public List<CPUArch> getSupportedArchitectures() {
ArrayList<CPUArch> archs = new ArrayList<>();
archs.add(CPUArch.ARM);
archs.add(CPUArch.ARM7);
archs.add(CPUArch.ARM8);
return archs;
}
private native int checkPingPong();
@Override
public boolean isVulnerable(Context context) throws Exception {
int checkVal = checkPingPong();
if(checkVal == 0) {
return false;
}else if(checkVal == 1) {
return true;
}else {
throw new Exception("Error running test. Errno: " + checkVal);
}
}
}