truple-latest-bin
This PKGBUILD downloads a prebuilt AppImage binary from linux.truple.io (the project's own Linux distribution subdomain) and executes it during both pkgver() and build() phases. The concerns are: (1) sha256sums='SKIP' means there is no integrity verification — the binary could be silently replaced or served differently to different users; (2) the source URL points to a 'latest' path (prod/Truple.AppImage) with no version pinning in the URL itself, meaning the downloaded binary may not correspond to pkgver=1.10.4; (3) the AppImage is executed at build time to extract itself. While linux.truple.io appears to be the official vendor distribution host for this proprietary accountability/screenshot software, the combination of an executed binary with SKIP checksums and a floating 'latest' URL constitutes a genuine supply-chain risk — any compromise of that host or DNS hijack would result in arbitrary code execution on the builder's machine with no integrity check to catch it. This is a real medium-severity concern, not a false positive.
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:20
"$_filename"::"https://linux.truple.io/prod/Truple.AppImage"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): This PKGBUILD downloads a prebuilt AppImage binary from linux.truple.io (the project's own Linux distribution subdomain) and executes it during both pkgver() and build() phases. The concerns are: (1) sha256sums='SKIP' means there is no integrity verification — the binary could be silently replaced or served differently to different users; (2) the source URL points to a 'latest' path (prod/Truple.AppImage) with no version pinning in the URL itself, meaning the downloaded binary may not correspond to pkgver=1.10.4; (3) the AppImage is executed at build time to extract itself. While linux.truple.io appears to be the official vendor distribution host for this proprietary accountability/screenshot software, the combination of an executed binary with SKIP checksums and a floating 'latest' URL constitutes a genuine supply-chain risk — any compromise of that host or DNS hijack would result in arbitrary code execution on the builder's machine with no integrity check to catch it. This is a real medium-severity concern, not a false positive.
PKGBUILD
1 offending line(s) highlighted# Maintainer: DanielNak <daniel@tee.cat>
_filename=Truple.AppImage
_pkgname='truple'
pkgname="$_pkgname-latest-bin"
pkgver=1.10.4
pkgrel=1
pkgdesc="Truple Screenshot Accountability holds you accountable for how you use your Linux machine by randomly capturing and sharing screenshots with a trusted friend or loved one of your choosing."
arch=('x86_64')
url="https://truple.io/"
license=('custom')
depends=(
'hicolor-icon-theme'
)
makedepends=()
provides=("$_pkgname")
conflicts=("$_pkgname")
options=('!strip')
source=(
"$_filename"::"https://linux.truple.io/prod/Truple.AppImage"
)
sha256sums=(
'SKIP'
)
pkgver() {
cd "$srcdir"
# extract appimage
chmod +x "$_filename"
"$srcdir/$_filename" --appimage-extract truple.desktop > /dev/null
cat squashfs-root/truple.desktop | grep Version | cut -d= -f2
}
build() {
cd "$srcdir"
# extract appimage
chmod +x "$_filename"
"$srcdir/$_filename" --appimage-extract
# fix folder permissions
find "$srcdir/squashfs-root" -type d -exec chmod 755 {} \;
# fix apprun script
sed -Ei \
's@^(if \[ -z \"\$APPDIR\" ] ; then)$@APPDIR="/opt/truple"\n\1@' \
"$srcdir/squashfs-root/AppRun"
# fix desktop file
sed -Ei \
's@^Exec=AppRun (.*)$@Exec=truple \1@' \
"$srcdir/squashfs-root/truple.desktop"
}
package() {
# apprun script
install -vDm0755 "$srcdir/squashfs-root/AppRun" "$pkgdir/usr/bin/truple"
# desktop file
install -vDm0644 "$srcdir/squashfs-root/truple.desktop" "$pkgdir/usr/share/applications/truple.desktop"
# icons
install -vDm0644 "$srcdir/squashfs-root/usr/share/icons/hicolor/0x0/apps/truple.png" -t "$pkgdir/usr/share/icons/hicolor/512x512/apps"
# license files
install -vDm0644 "$srcdir/squashfs-root/LICENSE.electron.txt" -t "$pkgdir/usr/share/licenses/$_pkgname"
install -vDm0644 "$srcdir/squashfs-root/LICENSES.chromium.html" -t "$pkgdir/usr/share/licenses/$_pkgname"
# everything else
mkdir -p "$pkgdir/opt"
mv "$srcdir/squashfs-root" "$pkgdir/opt/truple"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Medium | 2 |
| 2026-10-31 00:07:41 | Medium | 2 |
| 2026-10-30 00:29:30 | Medium | 2 |
| 2026-10-29 00:13:55 | Medium | 2 |
| 2026-10-28 00:06:54 | Medium | 2 |
| 2026-10-27 00:23:28 | Medium | 2 |
| 2026-10-26 00:12:40 | Medium | 2 |
| 2026-10-25 00:20:48 | Medium | 2 |
| 2026-10-24 00:14:55 | Medium | 2 |
| 2026-10-23 00:02:19 | Medium | 2 |
| 2026-10-22 00:13:10 | Medium | 2 |
| 2026-10-21 00:12:50 | Medium | 2 |
| 2026-10-20 00:10:31 | Medium | 2 |
| 2026-10-19 00:03:55 | Medium | 2 |
| 2026-10-18 00:06:55 | Medium | 2 |
| 2026-10-17 00:21:55 | Medium | 2 |
| 2026-10-16 00:12:47 | Medium | 2 |
| 2026-10-15 00:28:05 | Medium | 2 |
| 2026-10-14 00:06:47 | Medium | 2 |
| 2026-10-13 00:23:45 | Medium | 2 |