celeste-client-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:31
source=("${pkgname%-bin}-${pkgver}.snap::https://api.snapcraft.io/api/v1/snaps/download/${_snap}.snap")
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 snap binary from api.snapcraft.io and extracts/installs the binary directly. api.snapcraft.io is Canonical's official Snap Store API, so this is a legitimate vendor distribution channel (analogous to downloading from the Ubuntu Snap Store). However, the concern is real from an Arch packaging perspective: snap binaries are not the upstream source, they are pre-compiled opaque blobs from a third-party distribution channel rather than the project's own GitHub releases. The binary is installed directly to /usr/bin without any source build. The sha256sum pins a specific snap revision (_snap token includes revision _36), which mitigates substitution risk somewhat, but the snap store could theoretically serve different content under the same URL in the future. This is a genuine medium-severity supply-chain concern: an executed binary from a non-primary distribution channel (not GitHub releases, not the project's own hosting), even if Canonical's infrastructure is generally trustworthy. The pattern is common in AUR for snap-based packages but does represent a real risk compared to building from source or downloading from the project's own release page.
PKGBUILD
1 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
# Contributor: Fabio 'Lolix' Loli <fabio.loli@disroot.org> -> https://github.com/FabioLolix
#_getverurl="https://github.com/flathub/com.hunterwittenborn.Celeste/blob/master/com.hunterwittenborn.Celeste.yml"
_pkgname=celeste
pkgname="${_pkgname}-client-bin"
_appname=com.hunterwittenborn.Celeste
pkgver=0.8.3
_snap="a9zAmHVl4doDwIGkptVyA7VI7fMlPPpE_36"
pkgrel=3
pkgdesc="GUI file synchronization client that can sync with any cloud provider "
arch=('x86_64')
url="https://github.com/hwittenborn/celeste"
license=('GPL-3.0-or-later')
provides=(
"${pkgname%-bin}=${pkgver}"
"${_pkgname}=${pkgver}"
)
conflicts=(
"${pkgname%-bin}"
"${_pkgname}"
)
depends=(
'libadwaita'
'rclone'
)
makedepends=(
'squashfs-tools'
)
source=()
source=("${pkgname%-bin}-${pkgver}.snap::https://api.snapcraft.io/api/v1/snaps/download/${_snap}.snap")
sha256sums=('b8dc5d75c795930529018096523ade359aff22543a18c9eaeff8b20bbf0d7f38')
prepare() {
unsquashfs -f "${srcdir}/${pkgname%-bin}-${pkgver}.snap"
sed -e "
s/Exec=${_pkgname}/Exec=${pkgname%-bin}/g
s/Icon=${_appname}/Icon=${pkgname%-bin}/g
" -i "${srcdir}/squashfs-root/usr/share/applications/${_appname}.desktop"
sed -i "s/${_appname}/${pkgname%-bin}/g" "${srcdir}/squashfs-root/usr/share/metainfo/${_appname}.metainfo.xml"
}
package() {
install -Dm755 "${srcdir}/squashfs-root/usr/bin/${_pkgname}" "${pkgdir}/usr/bin/${pkgname%-bin}"
install -Dm644 "${srcdir}/squashfs-root/usr/share/applications/${_appname}.desktop" "${pkgdir}/usr/share/applications/${pkgname%-bin}.desktop"
install -Dm644 "${srcdir}/squashfs-root/usr/share/icons/hicolor/scalable/apps/${_appname}.svg" "${pkgdir}/usr/share/icons/hicolor/scalable/app/${pkgname%-bin}.svg"
}
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 |