carnagecontest
Triggered rules
external_download_not_in_source
curl/wget fetches a URL on a non-allowlisted host that is not part of source=(), so it is not checksum-verified by makepkg.
-
PKGBUILD:25
echo "$(curl -Ss "http://www.unrealsoftware.de/get.php?get=${file}&p=1" |
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:30
source=(cc_b${_ver}_linux.zip::"http://www.unrealsoftware.de/get.php?get=cc_b${_ver}_linux.zip&p=1&cid=${_cid}"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD downloads prebuilt binaries (a Linux executable 'CarnageContest' and a Windows zip) from unrealsoftware.de, which is the official upstream host for Carnage Contest (the game's own distribution server), not a random personal host. The sha512sums are present and pin the downloaded files, which mitigates runtime tampering. However, the URL construction is dynamic: grabcid() makes a live curl request at build time to fetch a session/challenge ID, then embeds it in the source URLs. This means the actual download URL is not fully deterministic and the integrity check depends on the fetched CID matching what was used when the sha512sums were computed. If the CID mechanism causes a different file to be served, the checksum would catch it. The real concern is that prebuilt closed-source binaries are being installed and executed (the Linux binary is symlinked into /usr/bin and made executable), sourced from a third-party host with a non-standard dynamic URL scheme. This is a genuine medium-severity supply-chain concern: executed binary from a non-official-distro host, even if it is the upstream vendor's own site, with a dynamic URL that slightly complicates reproducibility. The sha512sums provide meaningful protection against substitution attacks, keeping this from being high severity.
PKGBUILD
2 offending line(s) highlighted#! /bin/bash
# Contributor: josephgbr <rafael.f.f1@gmail.com>
# Contributor: darkraid1 <darkraid1@gmail.com>
# Contributor: jorge_barroso <jorge.barroso.11 at gmail dot com>
#
pkgname=carnagecontest
pkgver=0.1.0.1
_ver=0101
pkgrel=2
pkgdesc="A free 2D turn based multiplayer shooter with fully destructible terrain"
arch=('i686' 'x86_64')
url="http://carnagecontest.com/"
license=('custom')
if [ "$CARCH" == "i686" ]; then
depends=('freetype2' 'libtxc_dxtn' 'libxcursor' 'mesa' 'openal' 'lua')
elif [ "$CARCH" == "x86_64" ]; then
depends=('lib32-freetype2' 'lib32-libtxc_dxtn' 'lib32-libxcursor' 'lib32-mesa' 'lib32-openal' 'lua')
fi
makedepends=('unzip' 'curl')
#https://bbs.archlinux.org/viewtopic.php?id=141195
grabcid() {
local file=cc_b${_ver}_linux.zip
echo "$(curl -Ss "http://www.unrealsoftware.de/get.php?get=${file}&p=1" |
grep -o '"get.php[^"]\+"' | cut -d'"' -f2 | sed 's/&/\&/g')"
}
_cid=$(grabcid) # this will hide the cmd line above from AUR interface
source=(cc_b${_ver}_linux.zip::"http://www.unrealsoftware.de/get.php?get=cc_b${_ver}_linux.zip&p=1&cid=${_cid}"
cc_b${_ver}_win.zip::"http://www.unrealsoftware.de/get.php?get=cc_b${_ver}_win.zip&p=1&cid=${_cid}"
$pkgname.desktop)
install="$pkgname.install"
noextract=(cc_b${_ver}_linux.zip
cc_b${_ver}_win.zip)
sha512sums=('a6ce91c774f5fa6c8d509508b4aef097b78cea6644815fda9947233dd12ab42ec63acb62c19dc733123a2da90c4d7d043db9a61a739b11f63259ee9a4053a152'
'dc7c184f77df074f10b3d27ad9087eaddb231d78cac6db3ab57f0a7257a6897763039868b78f285b98603670a1bdf3112fdbd1e06917b9321d1dd284ba9aeae2'
'cb69c66b037c4cea9572dfbaff3f29b532875848f24d931b3b5aff6bd1b2dad01698c36ac4c940c65b853a03858e49062b53043185ccb0895f6309faa5fed1f4')
package() {
install -d -m 755 "$pkgdir"/usr/share/$pkgname
unzip cc_b${_ver}_win.zip -d "$pkgdir"/usr/share/$pkgname
unzip -o cc_b${_ver}_linux.zip -d "$pkgdir"/usr/share/$pkgname
find "$pkgdir"/usr/share/$pkgname/sys -type f -exec chmod -R 666 {} \;
find "$pkgdir"/usr/share/$pkgname/teams -type f -exec chmod -R 666 {} \;
chmod 777 "$pkgdir"/usr/share/$pkgname/{teams,sys,sys/gamesettings}
install -d -m 666 "$pkgdir"/usr/share/$pkgname/debug
install -d -m 755 "$pkgdir"/usr/bin
ln -s /usr/share/$pkgname/CarnageContest "$pkgdir"/usr/bin/$pkgname
chmod +x "$pkgdir"/usr/share/$pkgname/CarnageContest
#install -Dm644 $pkgname.png "$pkgdir"/usr/share/pixmaps/$pkgname.png
install -Dm644 $pkgname.desktop "$pkgdir"/usr/share/applications/$pkgname.desktop
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | MEDIUM | 3 |
| 2026-08-02 00:16:08 | MEDIUM | 3 |
| 2026-08-01 00:11:18 | MEDIUM | 3 |
| 2026-07-31 00:14:10 | MEDIUM | 3 |
| 2026-07-30 00:17:23 | MEDIUM | 3 |
| 2026-07-29 00:25:53 | MEDIUM | 3 |
| 2026-07-28 00:07:28 | MEDIUM | 3 |
| 2026-07-27 00:24:32 | MEDIUM | 3 |
| 2026-07-26 00:07:32 | MEDIUM | 3 |
| 2026-07-25 00:13:44 | MEDIUM | 3 |
| 2026-07-24 00:02:28 | MEDIUM | 3 |
| 2026-07-23 00:14:47 | MEDIUM | 3 |
| 2026-07-22 00:29:32 | MEDIUM | 3 |
| 2026-07-21 00:24:15 | MEDIUM | 3 |
| 2026-07-20 00:19:49 | MEDIUM | 3 |
| 2026-07-19 00:17:08 | MEDIUM | 3 |
| 2026-07-18 00:14:48 | MEDIUM | 3 |
| 2026-07-17 00:06:16 | MEDIUM | 3 |
| 2026-07-16 00:05:41 | MEDIUM | 3 |
| 2026-07-15 00:09:25 | MEDIUM | 3 |