coolvlviewer-experimental-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:24
source=("http://sldev.free.fr/binaries/CoolVLViewer-${pkgver}-Linux-x86_64-Setup"
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 installer from sldev.free.fr (the official Cool VL Viewer development site run by Henri Beauchamp, the sole developer of this viewer), executes it during the build phase to self-extract, and then installs the resulting files. While sldev.free.fr is a personal/unofficial host rather than a major distribution mirror, it is the canonical upstream source for this project — there is no other official distribution channel. The binary is checksummed with SHA1 (weak but present), providing some integrity guarantee. The core concern is that a prebuilt binary installer is executed at build time from a personal free-hosting domain, which is a genuine supply-chain risk: if the host were compromised or the download intercepted (no HTTPS), arbitrary code would execute during packaging. The lack of HTTPS is a notable additional concern. This fits the medium severity definition: an executed binary from an unofficial/personal host, not clearly malicious but a real supply-chain concern.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Alex Tharp <alex at toastercup dot io>
pkgname=coolvlviewer-experimental-bin
pkgver=1.32.1.9
pkgrel=1
pkgdesc="A third-party viewer for Second Life (C) (secondlife) and OpenSim (opensimulator) grids. ('VL' stands for virtual life, formerly known as 'Cool SL Viewer', binary)"
url="http://sldev.free.fr"
license=('custom')
depends=('apr-util' 'glib2>=2.32' 'libgl' 'libidn' 'mesa' 'sdl' 'glu' 'pangox-compat' 'gconf' 'libxss' 'libxrandr' 'libxcomposite' 'libgl' 'lib32-zlib' 'libcups' 'atk' 'lib32-libsndfile' 'lib32-util-linux' 'lib32-libidn' 'libxcursor' 'libxtst')
optdepends=(
'libpulse: for PulseAudio support'
'alsa-lib: for ALSA support'
'lib32-alsa-lib: for ALSA support'
'nvidia-utils: for NVIDIA support'
'pepper-flash: for inworld Flash support'
'gst-plugins-good: for video support'
'gst-plugins-bad: for video support'
'gst-plugins-ugly: for video support'
'lib32-freealut: for OpenAL support'
'lib32-libidn11: for voice support'
'wine: for SLVoice support')
arch=('x86_64')
conflicts=('coolvlviewer-bin' 'coolvlviewer-experimental' 'coolvlviewer')
install=coolvlviewer.install
source=("http://sldev.free.fr/binaries/CoolVLViewer-${pkgver}-Linux-x86_64-Setup"
"coolvlviewer.desktop"
"coolvlviewer.launcher")
sha1sums=('e46fa3ac6b95525c12d39f786bfeb54fb30dd6d0'
'd5defd3d847fcfb7cdf41150ab55684dedc79275'
'3ef1284a00a4437e4c34f809311ee0672604ef04')
build() {
cd $srcdir
chmod +x CoolVLViewer-${pkgver}-Linux-x86_64-Setup
# Run the installer
./CoolVLViewer-${pkgver}-Linux-x86_64-Setup --mode silent --destination $srcdir/coolvlviewer/
}
package() {
# Install Desktop File
install -D -m644 $srcdir/coolvlviewer.desktop \
$pkgdir/usr/share/applications/coolvlviewer.desktop
# Install Icon File
install -D -m755 $srcdir/coolvlviewer/cvlv_icon.png \
$pkgdir/usr/share/pixmaps/clvl_icon.png
# Install Launcher
install -D -m755 $srcdir/coolvlviewer.launcher \
$pkgdir/usr/bin/coolvlviewer
# Install License
install -D -m644 $srcdir/coolvlviewer/licenses.txt \
$pkgdir/usr/share/licenses/$pkgname/LISENSE
# Move Data to Destination Directory
install -d $pkgdir/opt/
mv coolvlviewer/ $pkgdir/opt/
# Change Permissions of files to root:games
chown -R root:games $pkgdir/opt/coolvlviewer
chmod -R g+rw $pkgdir/opt/coolvlviewer
# Make Binary Group-Executable
chmod g+x $pkgdir/opt/coolvlviewer/cool_vl_viewer
}
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 |