paper-velocity
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a prebuilt JAR from a non-whitelisted but project-related host (papermc.io) with a pinned checksum, and installs management scripts via make; the privileged actions are standard file ownership/permissions setup for a service, not self-updates or setuid binaries.
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=3.5.0-SNAPSHOT
# curl -s "https://fill.papermc.io/v3/projects/velocity/versions/${_pkgver}" | python3 -m json.tool
_build=605
# curl -s "https://fill.papermc.io/v3/projects/velocity/versions/${_pkgver}/builds/${_build}" | python3 -m json.tool
_jar_sha256=0ec616020166465dacca3b790d3db2b246f8f7c13b3aaacaae60c825744a66e0
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>=16' '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-08-03 00:08:14 | LOW | 3 |
| 2026-08-02 00:16:08 | LOW | 3 |
| 2026-08-01 00:11:18 | LOW | 3 |
| 2026-07-31 00:14:10 | LOW | 3 |
| 2026-07-30 00:17:23 | LOW | 3 |
| 2026-07-29 00:25:53 | LOW | 3 |
| 2026-07-28 00:07:28 | LOW | 3 |
| 2026-07-27 00:24:32 | LOW | 3 |
| 2026-07-26 00:07:32 | LOW | 3 |
| 2026-07-25 00:13:44 | LOW | 3 |
| 2026-07-24 00:02:28 | LOW | 3 |
| 2026-07-23 00:14:47 | LOW | 3 |
| 2026-07-22 00:29:32 | LOW | 3 |
| 2026-07-21 00:24:15 | LOW | 3 |
| 2026-07-20 00:19:49 | LOW | 3 |
| 2026-07-19 00:17:08 | LOW | 3 |
| 2026-07-18 00:14:48 | LOW | 3 |
| 2026-07-17 00:06:16 | LOW | 3 |
| 2026-07-16 00:05:41 | LOW | 3 |
| 2026-07-15 00:09:25 | LOW | 3 |