vatis-appimage
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:18
source=("${_appimage}::https://hub.vatis.app/download/linux")
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 AppImage binary from hub.vatis.app, which is the official distribution host for the vATIS project (vatis.app is the project's own domain, hub.vatis.app is their release/download hub). The URL https://hub.vatis.app/download/linux appears to be a redirect/alias to the latest release rather than a versioned artifact URL, which is slightly concerning from a reproducibility standpoint. However, a b2sum checksum is provided, which pins the specific binary being installed and mitigates silent substitution risk. The AppImage is extracted and executed during prepare() to unpack its contents. The main residual concern is that hub.vatis.app is not a widely-recognized official mirror (like GitHub releases), and the non-versioned download URL means the checksum could become stale if the upstream silently updates the binary at the same URL. Overall this is a standard AppImage packaging pattern with a checksum, from what appears to be the project's own infrastructure, making it a low-to-medium supply chain concern rather than a clear attack.
PKGBUILD
1 offending line(s) highlighted# Maintainer: munsternet <munsternet at ik dot me>
_pkgname=vatis
pkgname="${_pkgname}-appimage"
pkgver=4.1.0_beta.19
pkgrel=1
pkgdesc="The latest stable AppImage of vATIS - an ATIS Solution for VATSIM"
arch=('x86_64')
url="https://vatis.app"
license=('GPL-3.0-or-later')
provides=("${pkgname}")
depends=('zlib' 'fuse2')
options=(!strip)
_appimage="${pkgname}-${pkgver}.AppImage"
_desktop_prefix="org.vatsim.${_pkgname}"
source=("${_appimage}::https://hub.vatis.app/download/linux")
noextract=("${_appimage}")
b2sums=('9242aedb3e08490cb67c21cbffb5071f1febc5dd9f9863c2ee191a07eba8302ce6cd5f89e0a3da13e4ede339dfc8876b46999ee88c1161d6e2b938d7009b1677')
prepare() {
chmod +x "${_appimage}"
./"${_appimage}" --appimage-extract
}
build() {
# Adjust .desktop so it will work outside of AppImage container
sed -i -E "s|Exec=AppRun|Exec=env DESKTOPINTEGRATION=false /usr/bin/${_pkgname}|"\
"squashfs-root/${_desktop_prefix}.desktop"
# Fix permissions; .AppImage permissions are 700 for all directories
chmod -R a-x+rX squashfs-root/usr
}
package() {
# AppImage
install -Dm755 "${srcdir}/${_appimage}" "${pkgdir}/opt/${pkgname}/${pkgname}.AppImage"
# Desktop file
install -Dm644 "${srcdir}/squashfs-root/${_desktop_prefix}.desktop"\
"${pkgdir}/usr/share/applications/${_pkgname}.desktop"
# Icon images
install -dm755 "${pkgdir}/usr/share/icons/hicolor/256x256/apps/"
cp -a "${srcdir}/squashfs-root/${_desktop_prefix}.png" "${pkgdir}/usr/share/icons/hicolor/256x256/apps/"
# Symlink executable
install -dm755 "${pkgdir}/usr/bin"
ln -s "/opt/${pkgname}/${pkgname}.AppImage" "${pkgdir}/usr/bin/${_pkgname}"
}
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 |