paper-velocity
The package builds and installs a management script from a trusted GitHub repository and a prebuilt JAR from PaperMC's official object storage; the JAR's checksum is verified, and the install creates proper symlinks and permissions for a Minecraft proxy service without executing untrusted remote code.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package builds and installs a management script from a trusted GitHub repository and a prebuilt JAR from PaperMC's official object storage; the JAR's checksum is verified, and the install creates proper symlinks and permissions for a Minecraft proxy service without executing untrusted remote code.
2 higher static findings superseded - not the current verdict (shown for transparency)
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:25
source=("velocity.${pkgver}.jar"::"https://fill-data.papermc.io/v1/objects/${_jar_sha256}/velocity-${_pkgver}-${_build}.jar"
privileged_install
The package grants elevated privileges or installs an update path outside pacman: a /etc/sudoers.d rule (often passwordless), a setuid/setgid binary, or a self-update script/service that can fetch and run future code with no checksum verification. The initial install may be verified, but the ongoing privilege + update surface is a real supply-chain / privilege-escalation risk.
-
PKGBUILD:63
chmod g+s "${pkgdir}${_server_root}"
PKGBUILD
2 offending line(s) highlighted# Maintainer: yuna0x0 <yuna@yuna0x0.com>
# Based on the 'papermc' AUR package by:
## Maintainer: Gordian Edenhofer <gordian.edenhofer@gmail.com>
pkgname=paper-velocity
# curl -s "https://fill.papermc.io/v3/projects/velocity" | python3 -m json.tool
_pkgver=4.1.0-SNAPSHOT
# curl -s "https://fill.papermc.io/v3/projects/velocity/versions/${_pkgver}" | python3 -m json.tool
_build=16
# curl -s "https://fill.papermc.io/v3/projects/velocity/versions/${_pkgver}/builds/${_build}" | python3 -m json.tool
_jar_sha256=aebade8be3b15d7c3c61514a50ce857cbf78ee87bd32e8d16d2352c6ca3e472f
pkgver="${_pkgver//-/_}+b${_build}"
pkgrel=1
_mng_ver=1.0.0
pkgdesc="The modern, next-generation Minecraft server proxy."
arch=('any')
url="https://papermc.io/software/velocity"
license=('GPL-3.0-or-later')
depends=('java-runtime-headless>=25' 'tmux' 'sudo' 'bash' 'awk' 'sed')
optdepends=("netcat: required in order to suspend an idle server")
conflicts=('paper-velocity-git')
backup=('etc/conf.d/velocity')
install="${pkgname}.install"
source=("velocity.${pkgver}.jar"::"https://fill-data.papermc.io/v1/objects/${_jar_sha256}/velocity-${_pkgver}-${_build}.jar"
"velocity-proxy-mgmt-${_mng_ver}.tar.gz"::"https://github.com/yuna0x0/velocity-proxy-mgmt/archive/refs/tags/v${_mng_ver}.tar.gz")
noextract=("velocity.${pkgver}.jar")
sha256sums=("${_jar_sha256}"
'5b22bc55f350382e5c6e2b88c4a51247316814eb73fe3e9b8a45a265d3619ac8')
_game="velocity"
_server_root="/srv/velocity"
build() {
make -C "${srcdir}/velocity-proxy-mgmt-${_mng_ver}" clean
make -C "${srcdir}/velocity-proxy-mgmt-${_mng_ver}" \
GAME=${_game} \
INAME=${_game} \
SERVER_ROOT=${_server_root} \
GAME_USER=${_game} \
MAIN_EXECUTABLE=velocity.jar \
SERVER_START_CMD="java -Xms1G -Xmx1G -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch -XX:MaxInlineLevel=15 -jar ./velocity.jar" \
all
}
package() {
make -C "${srcdir}/velocity-proxy-mgmt-${_mng_ver}" \
DESTDIR="${pkgdir}" \
GAME=${_game} \
INAME=${_game} \
install
install -Dm644 ${_game}.${pkgver}.jar "${pkgdir}/${_server_root}/${_game}.${pkgver}.jar"
ln -s "${_game}.${pkgver}.jar" "${pkgdir}${_server_root}/${_game}.jar"
# Link the log files
mkdir -p "${pkgdir}/var/log/"
install -dm2755 "${pkgdir}/${_server_root}/logs"
ln -s "${_server_root}/logs" "${pkgdir}/var/log/${_game}"
# Give the group write permissions and set user or group ID on execution
chmod g+s "${pkgdir}${_server_root}"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 3 |
| 2026-09-16 00:03:17 | Low | 3 |
| 2026-09-15 00:25:31 | Low | 3 |
| 2026-09-14 00:27:57 | Low | 3 |
| 2026-09-13 00:19:54 | Low | 3 |
| 2026-09-12 00:25:17 | Low | 3 |
| 2026-09-11 00:19:22 | Low | 3 |
| 2026-09-10 00:22:44 | Low | 3 |
| 2026-09-09 00:04:09 | Low | 3 |
| 2026-09-08 00:18:08 | Low | 3 |
| 2026-09-07 00:30:15 | Low | 3 |
| 2026-09-06 00:17:06 | Low | 3 |
| 2026-09-05 00:16:27 | Low | 3 |
| 2026-09-04 00:03:13 | Low | 3 |
| 2026-09-03 00:15:47 | Low | 3 |
| 2026-09-02 00:02:31 | Low | 3 |
| 2026-09-01 00:11:19 | Low | 3 |
| 2026-08-31 00:19:57 | Low | 3 |
| 2026-08-30 00:04:14 | Low | 3 |
| 2026-08-29 00:29:17 | Low | 3 |