← Legacy view v2 (rp.*)

headlesshq/headlessmc

https://github.com/headlesshq/headlessmc · lang: java · LOC: · source: user_submitted

Quality
71.0
Grade B
Security
78.2
Findings
84
7 critical · 46 high
Status
completed
May 21, 2026 20:49
high: 46 info: 21 critical: 7 low: 5 medium: 5
Top rules by occurrence
RuleSeverityCount
MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) high 25
MINED118 Dockerfile FROM not pinned by sha256 digest high 8
SEC132 String concat where the language has interpolation (AI styl… low 4
MINED116 GHA pull_request workflow leaks secrets to forks critical 4
MINED004 Weak Crypto high 4
SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from use… high 4
SEC128 Async function without await — fire-and-forget Promise (AI … high 4
MINED083 Java Thread Start info 4
SEC118 UUIDv1 / UUIDv3 used for security-sensitive identifier low 3
MINED042 Cpp New Without Delete info 3
First 84 findings (severity-sorted)
critical MINED018 Unsafe Deserialization Pickle CWE-502
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/mods/files/PaperModFileReader.java:35 · conf 1.00
[MINED018] Unsafe Deserialization Pickle: pickle.loads / yaml.load (without Loader=SafeLoader) / unmarshal of network/file data — RCE.
critical MINED116 GHA pull_request workflow leaks secrets to forks CWE-829
.github/workflows/lifecycle.yml:683 · conf 0.90
[MINED116] Workflow uses `secrets.DOCKERHUB_USERNAME` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKERHUB_USERNA…
critical MINED116 GHA pull_request workflow leaks secrets to forks CWE-829
.github/workflows/lifecycle.yml:684 · conf 0.90
[MINED116] Workflow uses `secrets.DOCKERHUB_TOKEN` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKERHUB_TOKEN }` …
critical MINED116 GHA pull_request workflow leaks secrets to forks CWE-829
.github/workflows/lifecycle.yml:746 · conf 0.90
[MINED116] Workflow uses `secrets.DOCKERHUB_USERNAME` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKERHUB_USERNA…
critical MINED116 GHA pull_request workflow leaks secrets to forks CWE-829
.github/workflows/lifecycle.yml:747 · conf 0.90
[MINED116] Workflow uses `secrets.DOCKERHUB_TOKEN` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.DOCKERHUB_TOKEN }` …
critical SEC079 Python: yaml.load without SafeLoader
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/mods/files/PaperModFileReader.java:35 · conf 1.00
[SEC079] Python: yaml.load without SafeLoader: yaml.load() without explicit SafeLoader can execute arbitrary Python objects (CVE-2017-18342). Ported from bandit B506 / dlint DUO109 (Apache-2.0 / BSD-…
critical SEC116 Ruby YAML.load / Marshal.load on untrusted input
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/mods/files/PaperModFileReader.java:35 · conf 1.00
[SEC116] Ruby YAML.load / Marshal.load on untrusted input: `YAML.load` (pre-3.1) and `Marshal.load` instantiate arbitrary Ruby classes — direct RCE on untrusted input. `unsafe_load` is even more dang…
high DKR014 Dockerfile copies the entire context without .dockerignore
Dockerfile:5 · conf 0.92
Dockerfile copies the entire context without .dockerignore
high MINED004 Weak Crypto CWE-327
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/mods/modrinth/ModrinthFile.java:21 · conf 1.00
[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums).
high MINED004 Weak Crypto CWE-327
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/version/LibraryFactory.java:52 · conf 1.00
[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums).
high MINED004 Weak Crypto CWE-327
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/version/LibraryImpl.java:22 · conf 1.00
[MINED004] Weak Crypto: MD5/SHA1/DES/RC4 used for security context (not just checksums).
high MINED011 Scala Get On Option CWE-476
buildSrc/src/main/groovy/io/github/headlesshq/headlessmc/gradle/Extension2ClassWriterAdapter.groovy:15 · conf 1.00
[MINED011] Scala Get On Option: Option.get throws NoSuchElementException on None. Use getOrElse / fold / match.
high MINED011 Scala Get On Option CWE-476
buildSrc/src/main/groovy/io/github/headlesshq/headlessmc/gradle/GenerateModuleTask.groovy:14 · conf 1.00
[MINED011] Scala Get On Option: Option.get throws NoSuchElementException on None. Use getOrElse / fold / match.
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/build-runtime-test.yml:41 · conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/build-runtime-test.yml:52 · conf 0.90
[MINED115] Action `actions/cache` pinned to mutable ref `@v5`: `uses: actions/cache@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/build-runtime-test.yml:59 · conf 0.90
[MINED115] Action `actions/setup-java` pinned to mutable ref `@v5`: `uses: actions/setup-java@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/build-runtime-test.yml:66 · conf 0.90
[MINED115] Action `gradle/actions/setup-gradle` pinned to mutable ref `@v5`: `uses: gradle/actions/setup-gradle@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action own…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/build-runtime-test.yml:84 · conf 0.90
[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v7`: `uses: actions/upload-artifact@v7` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:31 · conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:32 · conf 0.90
[MINED115] Action `actions/setup-java` pinned to mutable ref `@v5`: `uses: actions/setup-java@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:50 · conf 0.90
[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v7`: `uses: actions/upload-artifact@v7` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:61 · conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:62 · conf 0.90
[MINED115] Action `actions/setup-java` pinned to mutable ref `@v5`: `uses: actions/setup-java@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:75 · conf 0.90
[MINED115] Action `madrapps/jacoco-report` pinned to mutable ref `@v1.7.2`: `uses: madrapps/[email protected]` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:125 · conf 0.90
[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v7`: `uses: actions/upload-artifact@v7` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:143 · conf 0.90
[MINED115] Action `actions/setup-python` pinned to mutable ref `@v6`: `uses: actions/setup-python@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:148 · conf 0.90
[MINED115] Action `actions/cache` pinned to mutable ref `@v5`: `uses: actions/cache@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-actions…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:182 · conf 0.90
[MINED115] Action `actions/upload-pages-artifact` pinned to mutable ref `@v4.0.0`: `uses: actions/[email protected]` resolves at workflow-run time. Tags and branches can be re-pushed by th…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:196 · conf 0.90
[MINED115] Action `actions/download-artifact` pinned to mutable ref `@v8`: `uses: actions/download-artifact@v8` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:204 · conf 0.90
[MINED115] Action `actions/deploy-pages` pinned to mutable ref `@v4`: `uses: actions/deploy-pages@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:216 · conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/lifecycle.yml:217 · conf 0.90
[MINED115] Action `graalvm/setup-graalvm` pinned to mutable ref `@v1`: `uses: graalvm/setup-graalvm@v1` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that mad…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/run-matrix-in-memory.yml:17 · conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout@v6` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/run-matrix-in-memory.yml:18 · conf 0.90
[MINED115] Action `actions/setup-java` pinned to mutable ref `@v5`: `uses: actions/setup-java@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/run-matrix-in-memory.yml:40 · conf 0.90
[MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v7`: `uses: actions/upload-artifact@v7` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/run-matrix-in-memory.yml:102 · conf 0.90
[MINED115] Action `actions/setup-java` pinned to mutable ref `@v5`: `uses: actions/setup-java@v5` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/run-matrix-in-memory.yml:106 · conf 0.90
[MINED115] Action `actions/download-artifact` pinned to mutable ref `@v8`: `uses: actions/download-artifact@v8` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
.github/workflows/run-matrix-in-memory.yml:113 · conf 0.90
[MINED115] Action `headlesshq/mc-runtime-test` pinned to mutable ref `@4.1.0`: `uses: headlesshq/[email protected]` resolves at workflow-run time. Tags and branches can be re-pushed by the action…
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
Dockerfile:3 · conf 0.90
[MINED118] Dockerfile FROM `eclipse-temurin:21-jdk-noble` not pinned by digest: `FROM eclipse-temurin:21-jdk-noble` resolves the tag at build time. The registry CAN re-push a different image for the …
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
Dockerfile:14 · conf 0.90
[MINED118] Dockerfile FROM `eclipse-temurin:8-jre-noble` not pinned by digest: `FROM eclipse-temurin:8-jre-noble` resolves the tag at build time. The registry CAN re-push a different image for the sa…
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
Dockerfile:16 · conf 0.90
[MINED118] Dockerfile FROM `eclipse-temurin:17-jre-noble` not pinned by digest: `FROM eclipse-temurin:17-jre-noble` resolves the tag at build time. The registry CAN re-push a different image for the …
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
Dockerfile:17 · conf 0.90
[MINED118] Dockerfile FROM `eclipse-temurin:21-jre-noble` not pinned by digest: `FROM eclipse-temurin:21-jre-noble` resolves the tag at build time. The registry CAN re-push a different image for the …
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
Fast.Dockerfile:6 · conf 0.90
[MINED118] Dockerfile FROM `eclipse-temurin:21-jdk-noble` not pinned by digest: `FROM eclipse-temurin:21-jdk-noble` resolves the tag at build time. The registry CAN re-push a different image for the …
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
Fast.Dockerfile:10 · conf 0.90
[MINED118] Dockerfile FROM `eclipse-temurin:8-jre-noble` not pinned by digest: `FROM eclipse-temurin:8-jre-noble` resolves the tag at build time. The registry CAN re-push a different image for the sa…
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
Fast.Dockerfile:12 · conf 0.90
[MINED118] Dockerfile FROM `eclipse-temurin:17-jre-noble` not pinned by digest: `FROM eclipse-temurin:17-jre-noble` resolves the tag at build time. The registry CAN re-push a different image for the …
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
Fast.Dockerfile:13 · conf 0.90
[MINED118] Dockerfile FROM `eclipse-temurin:21-jre-noble` not pinned by digest: `FROM eclipse-temurin:21-jre-noble` resolves the tag at build time. The registry CAN re-push a different image for the …
high MINED134 [MINED134] Binary file `bin/ref/ScriptoriaCommonDefs.dll` committed in source repo: `bin/ref/ScriptoriaCommonDefs.dll` is a .dll binary (29,208 bytes) committed to a repo that otherwise has 1643 source files. Trojan binaries inside otherwise-normal source repos are a known supply-chain attack: a compromised dependency or PR slips in a binary that gets executed by build scripts.
gradle/wrapper/gradle-wrapper.jar:1 · conf 0.90
[MINED134] Binary file `gradle/wrapper/gradle-wrapper.jar` committed in source repo: `gradle/wrapper/gradle-wrapper.jar` is a .jar binary (43,764 bytes) committed to a repo that otherwise has 526 sou…
high SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from user input
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/command/download/VersionInfoUtil.java:27 · conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
high SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from user input
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/command/forge/ForgeInstaller.java:128 · conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
high SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from user input
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/command/SpecificsCommand.java:32 · conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
high SEC128 Async function without await — fire-and-forget Promise (AI mistake)
headlessmc-graalvm/src/main/java/io/github/headlesshq/headlessmc/graalvm/Main.java:84 · conf 1.00
[SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work comple…
high SEC128 Async function without await — fire-and-forget Promise (AI mistake)
headlessmc-java/src/main/java/io/github/headlesshq/headlessmc/java/download/TemurinDownloader.java:29 · conf 1.00
[SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work comple…
high SEC128 Async function without await — fire-and-forget Promise (AI mistake)
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/LauncherBuilder.java:195 · conf 1.00
[SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call invoked without `await` returns an unhandled Promise. The outer function resolves before the inner work comple…
medium DKR001 Docker final stage has no non-root USER
Dockerfile:17 · conf 0.82
Docker final stage has no non-root USER
medium DKR007 Docker build context has no .dockerignore
.dockerignore · conf 0.90
Docker build context has no .dockerignore
medium SEC007 Unsafe Deserialization
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/mods/files/PaperModFileReader.java:35 · conf 1.00
[SEC007] Unsafe Deserialization: Unsafe deserialization can execute arbitrary code.
medium SEC012 ZipSlip — Archive Path Traversal
headlessmc-java/src/main/java/io/github/headlesshq/headlessmc/java/download/ArchiveExtractor.java:43 · conf 1.00
[SEC012] ZipSlip — Archive Path Traversal: Archive extraction without path validation allows writing files outside the target directory.
medium SEC034 Log Injection / Log Forging — unsanitized user input in log
headlessmc-graalvm/src/main/java/io/github/headlesshq/headlessmc/graalvm/Main.java:115 · conf 1.00
[SEC034] Log Injection / Log Forging — unsanitized user input in log: User input is logged without sanitizing newlines or control characters. Attackers inject `\n` to forge fake log entries, hide tra…
low AIC003 Duplicated implementation block across source files
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/server/downloader/ForgeDownloader.java:43 · conf 0.86
Duplicated implementation block across source files
low AIC003 Duplicated implementation block across source files
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/server/downloader/ModLauncherCommandDownloader.java:29 · conf 0.86
Duplicated implementation block across source files
low SEC132 String concat where the language has interpolation (AI style drift)
headlessmc-api/src/main/java/io/github/headlesshq/headlessmc/api/classloading/ApiClassloadingHelper.java:46 · conf 1.00
[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the language has cleaner interpolation (Python f-strings since 3.6, JS template liter…
low SEC132 String concat where the language has interpolation (AI style drift)
headlessmc-api/src/main/java/io/github/headlesshq/headlessmc/api/command/impl/MemoryCommand.java:39 · conf 1.00
[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the language has cleaner interpolation (Python f-strings since 3.6, JS template liter…
low SEC132 String concat where the language has interpolation (AI style drift)
headlessmc-auth/src/main/java/io/github/headlesshq/headlessmc/auth/AbstractLoginCommand.java:261 · conf 1.00
[SEC132] String concat where the language has interpolation (AI style drift): String built by concatenation where the language has cleaner interpolation (Python f-strings since 3.6, JS template liter…
info MINED004 Weak Crypto CWE-327
· conf 0.20
[MINED004] Weak Crypto (and 3 more): Same pattern found in 3 additional files. Review if needed.
info MINED042 Cpp New Without Delete CWE-401
buildSrc/src/main/groovy/io/github/headlesshq/headlessmc/gradle/Extension2ClassWriterAdapter.groovy:12 · conf 1.00
[MINED042] Cpp New Without Delete: C++ raw new without RAII / unique_ptr — memory leak risk.
info MINED042 Cpp New Without Delete CWE-401
buildSrc/src/main/groovy/io/github/headlesshq/headlessmc/gradle/GenerateModuleTask.groovy:23 · conf 1.00
[MINED042] Cpp New Without Delete: C++ raw new without RAII / unique_ptr — memory leak risk.
info MINED042 Cpp New Without Delete CWE-401
buildSrc/src/main/groovy/io/github/headlesshq/headlessmc/gradle/ModuleExtension.groovy:59 · conf 1.00
[MINED042] Cpp New Without Delete: C++ raw new without RAII / unique_ptr — memory leak risk.
info MINED064 Python Input Call
headlessmc-scripts/version.py:9 · conf 1.00
[MINED064] Python Input Call: input() blocks for stdin. Inappropriate in services.
info MINED081 Java Printstacktrace CWE-532
headlessmc-launcher-wrapper/src/main/java/io/github/headlesshq/headlessmc/wrapper/plugin/TransformingClassloader.java:72 · conf 1.00
[MINED081] Java Printstacktrace: Should use logger, not stack trace to stderr.
info MINED081 Java Printstacktrace CWE-532
headlessmc-lwjgl/src/main/java/io/github/headlesshq/headlessmc/lwjgl/redirections/ObjectRedirection.java:46 · conf 1.00
[MINED081] Java Printstacktrace: Should use logger, not stack trace to stderr.
info MINED081 Java Printstacktrace CWE-532
headlessmc-lwjgl/src/main/java/io/github/headlesshq/headlessmc/lwjgl/redirections/stb/STBImageRedirection.java:47 · conf 1.00
[MINED081] Java Printstacktrace: Should use logger, not stack trace to stderr.
info MINED083 Java Thread Start CWE-664
· conf 0.20
[MINED083] Java Thread Start (and 1 more): Same pattern found in 1 additional files. Review if needed.
info MINED083 Java Thread Start CWE-664
headlessmc-api/src/main/java/io/github/headlesshq/headlessmc/api/command/line/CommandLineReader.java:19 · conf 1.00
[MINED083] Java Thread Start: Raw thread creation. Should use ExecutorService for managed pool.
info MINED083 Java Thread Start CWE-664
headlessmc-auth/src/main/java/io/github/headlesshq/headlessmc/auth/AbstractLoginCommand.java:125 · conf 1.00
[MINED083] Java Thread Start: Raw thread creation. Should use ExecutorService for managed pool.
info MINED083 Java Thread Start CWE-664
headlessmc-graalvm/src/main/java/io/github/headlesshq/headlessmc/graalvm/Main.java:82 · conf 1.00
[MINED083] Java Thread Start: Raw thread creation. Should use ExecutorService for managed pool.
info MINED085 Java Systemexit CWE-1075
headlessmc-graalvm/src/main/java/io/github/headlesshq/headlessmc/graalvm/Main.java:89 · conf 1.00
[MINED085] Java Systemexit: System.exit() inside a library kills the whole JVM.
info MINED085 Java Systemexit CWE-1075
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/command/AbstractLaunchProcessLifecycle.java:281 · conf 1.00
[MINED085] Java Systemexit: System.exit() inside a library kills the whole JVM.
info MINED085 Java Systemexit CWE-1075
headlessmc-launcher-wrapper/src/main/java/io/github/headlesshq/headlessmc/wrapper/ProcessThread.java:34 · conf 1.00
[MINED085] Java Systemexit: System.exit() inside a library kills the whole JVM.
info SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from user input
· conf 0.20
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input (and 15 more): Same pattern found in 15 additional files. Review if needed.
info SEC118 UUIDv1 / UUIDv3 used for security-sensitive identifier
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/command/AbstractLaunchProcessLifecycle.java:56 · conf 0.10
[SEC118] UUIDv1 / UUIDv3 used for security-sensitive identifier: UUIDv1 encodes the MAC address and timestamp, making it predictable. Used as a session token or password-reset key, it's enumerable.
info SEC118 UUIDv1 / UUIDv3 used for security-sensitive identifier
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/command/FabricCommand.java:45 · conf 0.10
[SEC118] UUIDv1 / UUIDv3 used for security-sensitive identifier: UUIDv1 encodes the MAC address and timestamp, making it predictable. Used as a session token or password-reset key, it's enumerable.
info SEC118 UUIDv1 / UUIDv3 used for security-sensitive identifier
headlessmc-launcher/src/main/java/io/github/headlesshq/headlessmc/launcher/command/forge/ForgeCommand.java:95 · conf 0.10
[SEC118] UUIDv1 / UUIDv3 used for security-sensitive identifier: UUIDv1 encodes the MAC address and timestamp, making it predictable. Used as a session token or password-reset key, it's enumerable.
info SEC128 Async function without await — fire-and-forget Promise (AI mistake)
· conf 0.20
[SEC128] Async function without await — fire-and-forget Promise (AI mistake) (and 5 more): Same pattern found in 5 additional files. Review if needed.
info SEC132 String concat where the language has interpolation (AI style drift)
· conf 0.20
[SEC132] String concat where the language has interpolation (AI style drift) (and 19 more): Same pattern found in 19 additional files. Review if needed.

Reading from rp.scan + rp.finding + rp.rule (unified schema, R78 series). Legacy data path unchanged. Compare with /scan/aacccc06-97b5-40f6-a398-8d90565325f3/.