sinerider
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:22
source=("https://s3.amazonaws.com/sinerider/SineRider+Linux.zip" "sinerider.desktop")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The package downloads a prebuilt Unity3D binary from an S3 bucket (s3.amazonaws.com/sinerider) rather than from the official game website (sineridergame.com) or a verifiable release page. The binary is executed directly and installed to /opt. While S3 is a common distribution mechanism for indie games and the checksum is pinned (md5, though weak), the host is not the project's canonical domain and there is no way to verify the binary's provenance or integrity beyond the md5sum. This is a genuine supply-chain concern: if the S3 bucket were taken over or the object replaced, users would install a malicious binary. The md5 checksum provides minimal protection. This fits the medium category: a prebuilt binary from an unofficial/personal host with no source build option.
PKGBUILD
1 offending line(s) highlighted# Maintainer: swyter <swyterzone+aur@gmail.com>
# Note: Haven't really tested it with i686, but it should work all the same... at least in theory. :)
pkgname=sinerider
pkgver=0.4
pkgrel=1
epoch=
pkgdesc="A game of numerical sledding. It will make you see math the way mathematicians see it: a creative process of exploration and discovery. Math is the ultimate puzzle, and SineRider is the ultimate math puzzle game."
arch=('x86_64' 'i686')
url="http://sineridergame.com/"
license=('custom:freeware' 'unknown')
groups=()
depends=('glibc' 'glu' 'libgl' 'libx11' 'libxext' 'libxcursor' 'libxrandr' 'gcc-libs' 'expat' 'libxdamage' 'libxfixes' 'libxcb' 'libxshmfence' 'libxxf86vm' 'libdrm' 'libxrender' 'libxau' 'libxdmcp')
makedepends=()
checkdepends=()
optdepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
source=("https://s3.amazonaws.com/sinerider/SineRider+Linux.zip" "sinerider.desktop")
md5sums=("36071911e1f861c017004feca55f4f10"
"778d8fd98d2a051882220c7b55bd0846")
install=sinerider.install
package()
{
# look up table from unity3d's silly arch nomenclature
declare -A archlut=([x86_64]="x86_64" [i686]="x86")
# mosly optional
cd "$srcdir"
# create the main folder
install -d "$pkgdir/opt/sinerider"
# copy the engine assets...
cp -rp "$srcdir/SineRider_Data" "$pkgdir/opt/sinerider/"
# ...and the right executable, depending on our current arch
install -Dm 755 "SineRider.${archlut[$CARCH]}" "$pkgdir/opt/sinerider/SineRider.$CARCH"
# remove unneeded stuff from the other arch
# unset the platform we're using from the look-up array,
# get the value of the other index and use it to delete anything we want.
unset archlut[$CARCH]
otherarch=${archlut[${!archlut[@]}]}
rm -rf "$pkgdir/opt/sinerider/SineRider_Data/Mono/$otherarch"
rm -rf "$pkgdir/opt/sinerider/SineRider_Data/Plugins/$otherarch"
# sundry icons and symlinked launcher
install -d "$pkgdir/usr/bin"
echo "/opt/sinerider/SineRider.$CARCH" > "$pkgdir/usr/bin/sinerider"
chmod +x "$pkgdir/usr/bin/sinerider"
install -Dm 755 "sinerider.desktop" "$pkgdir/usr/share/applications/sinerider.desktop"
install -Dm 644 "$srcdir/SineRider_Data/Resources/UnityPlayer.png" "$pkgdir/usr/share/pixmaps/sinerider.png"
}
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 |