This commit is contained in:
Eli Peter 2026-06-05 10:16:30 -05:00 committed by GitHub
parent 55247b7fcd
commit 991c84a1eb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
1464 changed files with 225448 additions and 1985 deletions

View file

@ -0,0 +1,24 @@
// Phase 14 JUnit test method, benign.
// import org.junit.jupiter.api.Test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Benign {
@Test
public void testRun() throws Exception {
System.out.print("__NYX_SINK_HIT__\n");
// Read + drop payload.
String unused = System.getenv("NYX_PAYLOAD");
if (unused == null) unused = "";
String[] cmd = {"/bin/sh", "-c", "echo hello"};
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
p.waitFor();
}
}

View file

@ -0,0 +1,15 @@
// Phase 14 fixture stub minimal `@Test` annotation in the default
// package. Lives here so the fixture's `@Test`-annotated method
// compiles under plain javac without a junit-jupiter Maven dep. The
// fixture's comment carries a literal `org.junit` marker so the
// Phase 14 [`JavaShape::detect`] still selects the JUnit shape.
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Test {
}

View file

@ -0,0 +1,28 @@
// Phase 14 JUnit test method, vulnerable.
//
// The `org.junit.jupiter.api` comment marker tells the Phase 14 shape
// detector to select `JavaShape::JunitTest`; the actual annotation is
// the fixture-local `@NyxTest` stub so the file compiles under a
// dependency-free javac invocation.
// import org.junit.jupiter.api.Test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Vuln {
@Test
public void testRun() throws Exception {
System.out.print("__NYX_SINK_HIT__\n");
String input = System.getenv("NYX_PAYLOAD");
if (input == null) input = "";
String[] cmd = {"/bin/sh", "-c", "echo hello " + input};
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
p.waitFor();
}
}

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>nyx</groupId>
<artifactId>junit-test-fixture</artifactId>
<version>0.0.1</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.10.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>