Because of the missing checkLink(String) override in the SecurityManager, students can load libraries and execute arbitrary code.
Using System.load(String) or System.loadLibrary​(String) students can load and execute arbitrary code.
private static native void start(List<String> args);
public static void main(String[] args) {
System.load(new File("path_to_lib.so").getAbsolutePath());
start(List.of(args));
}
Adding this to the security manager (and a translation) should fix the issue:
@Override
public void checkExec(String cmd) {
try {
if (enterPublicInterface())
return;
throw new SecurityException(localized("security.error_link")); //$NON-NLS-1$
} finally {
exitPublicInterface();
}
}
See details.
Arbitrary code execution.
{
"cwe_ids": [
"CWE-284"
],
"github_reviewed": true,
"github_reviewed_at": "2023-02-10T23:52:13Z",
"nvd_published_at": null,
"severity": "HIGH"
}