anythingllm-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:16
source_x86_64=("${_appimage}::https://cdn.anythingllm.com/latest/AnythingLLMDesktop.AppImage")
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 cdn.anythingllm.com, which is the official CDN for the AnythingLLM project (Mintplex Labs). The binary is executed during prepare() via --appimage-extract and then installed. A b2sum checksum is provided, which pins the specific binary. The host is the vendor's own CDN rather than GitHub releases, but it is the canonical distribution channel for this application. The main concern is that the checksum is only 103 hex characters (b2sum should be 128 hex chars for BLAKE2b-512), which suggests it may be truncated or incorrect, potentially allowing a different binary to pass verification. Additionally, downloading and executing a prebuilt binary blob from any external host (even an official CDN) without source-based verification is a genuine supply-chain concern — if the CDN were compromised or the URL were silently updated, a malicious binary could be distributed. The 'latest' path component in the URL is also notable: while the version is in pkgver, the actual URL does not contain the version number, meaning the downloaded file could differ from what was tested. Overall this is a real medium-severity supply-chain concern: executed binary from an external host with a potentially malformed checksum and a version-agnostic URL path.
PKGBUILD
1 offending line(s) highlighted# Maintainer: David Birks <david@birks.dev>
# Contributor: pika02 <pikakolendo02 at gmail dot com>
_pkgname=anythingllm
pkgname="${_pkgname}"-appimage
pkgver=1.12.1
pkgrel=1
pkgdesc="AnythingLLM: The all-in-one AI app you were looking for. Any LLM, unlimited documents, and fully private. All on your desktop."
arch=('x86_64')
url="https://anythingllm.com/"
license=('custom')
depends=('zlib' 'hicolor-icon-theme' 'fuse2')
options=(!strip !debug)
_appimage="AnythingLLMDesktop.AppImage"
source_x86_64=("${_appimage}::https://cdn.anythingllm.com/latest/AnythingLLMDesktop.AppImage")
noextract=("${_appimage}")
b2sums_x86_64=('a3d16ced5d18e2ca6aa1c65f92d0f7fb43c293ffa7e6710cc46dfd45ef517b992cf1b21560b2dcc9f8b1a35c856a4b45cd56d09006bf8ab12797260fcf3e3b04')
appname="anythingllm-desktop"
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/${appname}|"\
"squashfs-root/${appname}.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"
install -Dm644 "${srcdir}/squashfs-root/LICENSE.electron.txt" "${pkgdir}/opt/${pkgname}/LICENSE"
# Desktop file
install -Dm644 "${srcdir}/squashfs-root/${appname}.desktop"\
"${pkgdir}/usr/share/applications/${appname}.desktop"
# Icon images
install -dm755 "${pkgdir}/usr/share/"
cp -a "${srcdir}/squashfs-root/usr/share/icons" "${pkgdir}/usr/share/"
# Symlink executable
install -dm755 "${pkgdir}/usr/bin"
ln -s "/opt/${pkgname}/${pkgname}.AppImage" "${pkgdir}/usr/bin/${appname}"
# Symlink license
install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}/"
ln -s "/opt/$pkgname/LICENSE" "$pkgdir/usr/share/licenses/$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 |