quake4-demo
Triggered rules
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:17
'https://aur.slashbunny.com/quake4/quake4-linux-1.0-demo.x86.run')
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD downloads and executes a prebuilt binary installer (quake4-linux-1.0-demo.x86.run) from aur.slashbunny.com, which is a personal/unofficial host rather than the original id Software or a well-known mirror. The installer is run directly during the build process (./quake4-linux-${pkgver}-demo.x86.run), meaning any compromise of that host or substitution of the file would result in arbitrary code execution on the builder's machine. The sha256sum provides some protection against in-transit tampering, but does not protect against the host owner serving a malicious file that matches a known-good hash (i.e., if the hash was set when the file was already malicious, or if the host owner updates both). The original id Software demo installer is no longer officially available, so hosting on a personal mirror is understandable, but it still represents a genuine supply-chain risk. This is a classic medium-severity concern: executed binary from an unofficial personal host with no way to verify it against an authoritative upstream source.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Slash <demodevil5[at]yahoo[dot]com>
# Contributor: Andrew Simmons <andrew.simmons@gmail.com>
pkgname=quake4-demo
pkgver=1.0
pkgrel=5
pkgdesc="Quake 4 demo"
url="https://web.archive.org/web/20061205073314/http://www.idsoftware.com/games/quake/quake4/"
arch=('i686' 'x86_64')
license=('custom:"Quake 4 Demo"')
depends_x86_64=('lib32-glibc' 'lib32-sdl' 'lib32-libx11' 'lib32-libxext' 'lib32-zlib')
depends_i686=('gcc-libs' 'libgl' 'sdl' 'zlib')
optdepends_x86_64=('lib32-nvidia-utils: Accelerated 3D with the NVIDIA binary blob video driver'
'lib32-catalyst-utils: Accelerated 3D with the AMD/ATI binary blob video driver')
install="quake4-demo.install"
source=("${pkgname}.sh" "${pkgname}-dedicated.sh" \
'https://aur.slashbunny.com/quake4/quake4-linux-1.0-demo.x86.run')
sha256sums=('6f0620a70380214bc57977b27e0d3584f48443e396faa136fabcb8f712b3b581'
'57c10f7c4771c28ca2e24e5dd6671d01d93e6a5af8df99c42648b54748f7bfdd'
'69e69e8cb22dd1496bcc98dc63f244d35c516c2e770aba64c72275827814bc73')
PKGEXT=.pkg.tar
package() {
cd ${srcdir}
# Create Destination Directories
install -d ${pkgdir}/opt/ \
${pkgdir}/usr/bin \
${pkgdir}/usr/share/licenses/${pkgname}
# Make Installer Executable
chmod +x quake4-linux-${pkgver}-demo.x86.run
# Run Installer
./quake4-linux-${pkgver}-demo.x86.run --noexec --target quake4
# Move Executables and Libraries
install -m 755 -t ${srcdir}/quake4/ \
${srcdir}/quake4/bin/Linux/x86/{lib*,q4ded*,quake4*}
# Make Everything World-Readable
chmod -R a+r ${srcdir}/quake4/
# Remove Unneeded Files
rm -rf ${srcdir}/quake4/{germany/,setup.data/,setup.sh,us/,bin/}
# Move Quake4 to Destination Directory
mv ${srcdir}/quake4 ${pkgdir}/opt/${pkgname}
# Install Client Launcher
install -m755 -D ${pkgname}.sh \
${pkgdir}/opt/${pkgname}/${pkgname}
# Install Server Launcher
install -m755 -D ${pkgname}-dedicated.sh \
${pkgdir}/opt/${pkgname}/${pkgname}-dedicated
# Symlink Client Launcher
ln -sf /opt/${pkgname}/${pkgname} \
${pkgdir}/usr/bin/${pkgname}
# Symlink Server Launcher
ln -sf /opt/${pkgname}/${pkgname}-dedicated \
${pkgdir}/usr/bin/${pkgname}-dedicated
# Install Licence File
install -D -m644 ${pkgdir}/opt/${pkgname}/License.txt \
${pkgdir}/usr/share/licenses/${pkgname}/License.txt
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | MEDIUM | 2 |
| 2026-08-02 00:16:08 | MEDIUM | 2 |
| 2026-08-01 00:11:18 | MEDIUM | 2 |
| 2026-07-31 00:14:10 | MEDIUM | 2 |
| 2026-07-30 00:17:23 | MEDIUM | 2 |
| 2026-07-29 00:25:53 | MEDIUM | 2 |
| 2026-07-28 00:07:28 | MEDIUM | 2 |
| 2026-07-27 00:24:32 | MEDIUM | 2 |
| 2026-07-26 00:07:32 | MEDIUM | 2 |
| 2026-07-25 00:13:44 | MEDIUM | 2 |
| 2026-07-24 00:02:28 | MEDIUM | 2 |
| 2026-07-23 00:14:47 | MEDIUM | 2 |
| 2026-07-22 00:29:32 | MEDIUM | 2 |
| 2026-07-21 00:24:15 | MEDIUM | 2 |
| 2026-07-20 00:19:49 | MEDIUM | 2 |
| 2026-07-19 00:17:08 | MEDIUM | 2 |
| 2026-07-18 00:14:48 | MEDIUM | 2 |
| 2026-07-17 00:06:16 | MEDIUM | 2 |
| 2026-07-16 00:05:41 | MEDIUM | 2 |
| 2026-07-15 00:09:25 | MEDIUM | 2 |