terasology-latest-bin
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:20
"terasology-omega-${pkgver}.zip::https://jenkins.terasology.io/job/Terasology/job/Omega/job/develop/lastSuccessfulBuild/artifact/distros/omega/build/distributions/TerasologyOmega.zip"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD downloads a prebuilt binary archive (TerasologyOmega.zip) from jenkins.terasology.io with a SKIP'd checksum. While jenkins.terasology.io appears to be the official Terasology project CI server (the game's own Jenkins instance), using 'lastSuccessfulBuild' as the artifact URL means the exact artifact is not pinned — it will silently change on every new successful build, making reproducibility impossible and creating a supply-chain risk if the CI server is compromised or the artifact is swapped. The SKIP checksum for the zip means there is no integrity verification at all. The zip contains native shared libraries (libbullet-linux-amd64.so) that are executed/loaded at runtime. Additionally, the 'terasology' launcher script itself has SKIP'd checksum. The combination of unverified executed binaries/native libs from a CI artifact URL (even an official-looking one) with no integrity check is a genuine medium-severity supply-chain concern. The 'chmod a+w $srcdir' and 'cp -ra $srcdir' pattern is also sloppy but not a security escalation beyond the above.
PKGBUILD
1 offending line(s) highlighted# Maintainer: soloturn@gmail.com
# Contributor: Allison Smith <alyway@protonmail.com>
# Contributor: Anthony Wang <ta180m@gmail.com>
# Contributor: Felix Golatofski <contact@xdfr.de>
# Contributor: Max Bruckner <max@maxbruckner.de>
pkgname=terasology-latest-bin
pkgver=5.4.0
pkgrel=1
pkgdesc="Yet another high resolution game with blocks like Minecraft!"
arch=('x86_64')
license=('Apache-2.0')
url="https://terasology.org"
options=('!strip')
depends=(zlib java-runtime-openjdk)
makedepends=('unzip')
source=(
"terasology"
"terasology.desktop"
"terasology-omega-${pkgver}.zip::https://jenkins.terasology.io/job/Terasology/job/Omega/job/develop/lastSuccessfulBuild/artifact/distros/omega/build/distributions/TerasologyOmega.zip"
)
sha512sums=(
'SKIP'
'737953ab10027100b6bd03ca60a3f1cd4fff503c4c5a1689b3e12ef8df66a3e3347c99d498e48dccc3be8d00e9e37fcab56d5c97bbb81dd310ce757979aa0276'
'SKIP'
)
package() {
install -Dm 755 "${srcdir}/terasology" "$pkgdir/usr/bin/terasology"
install -Dm 644 "${srcdir}/terasology.desktop" "${pkgdir}/usr/share/applications/terasology.desktop"
#cleanup
rm "${srcdir}/terasology" "${srcdir}/terasology.desktop" "${srcdir}/terasology-omega-${pkgver}.zip"
#extract and install icons
unzip -u libs/engine-${pkgver}-SNAPSHOT.jar "org/terasology/engine/icons/*"
pushd org/terasology/engine/icons
for icon in *
do
size=${icon##*_} #gooey_sweet_XX.png -> XX.png
size=${size/.png/} #XX.png -> XX
install -Dm 644 "$icon" "${pkgdir}/usr/share/icons/${size}x${size}/apps/terasology.png"
done
install -Dm 644 "${pkgdir}/usr/share/icons/64x64/apps/terasology.png" "${pkgdir}/usr/share/pixmaps/terasology.png"
popd
rm -r org
#remove files/dirs for other operating systems and native libraries
#rm run_macosx.command Terasology.{x86,x64}.exe
rm Terasology.bat
rm -r natives/macosx
rm -r natives/windows
strip -s natives/linux/libbullet-linux-amd64.so
chmod a+w "$srcdir" # Terrible permissions hack to get the game to start
cp -ra "$srcdir" "${pkgdir}/usr/share/terasology"
}
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 |