paper-desktop-bin
This PKGBUILD downloads a prebuilt binary .deb from download.paper.design (the vendor's own download server, not a personal/unofficial host) and installs it directly. The main concerns are: (1) sha256sums=('SKIP') means no integrity verification — if the host is compromised or the URL is hijacked, a malicious binary would be installed silently; (2) the URL 'https://download.paper.design/linux/deb' appears to serve a rolling/latest release rather than a pinned version, so the downloaded binary can change at any time without the PKGBUILD reflecting it; (3) a prebuilt closed-source binary is being executed on the user's system. The host itself (download.paper.design) is the official vendor domain matching the project URL (paper.design), which reduces but does not eliminate supply-chain risk. The combination of an executed binary with no checksum verification is a genuine medium-severity supply-chain concern — not clearly malicious, but a real risk if the CDN or DNS is compromised.
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:11
source=("${pkgname%-bin}.deb::https://download.paper.design/linux/deb")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): This PKGBUILD downloads a prebuilt binary .deb from download.paper.design (the vendor's own download server, not a personal/unofficial host) and installs it directly. The main concerns are: (1) sha256sums=('SKIP') means no integrity verification — if the host is compromised or the URL is hijacked, a malicious binary would be installed silently; (2) the URL 'https://download.paper.design/linux/deb' appears to serve a rolling/latest release rather than a pinned version, so the downloaded binary can change at any time without the PKGBUILD reflecting it; (3) a prebuilt closed-source binary is being executed on the user's system. The host itself (download.paper.design) is the official vendor domain matching the project URL (paper.design), which reduces but does not eliminate supply-chain risk. The combination of an executed binary with no checksum verification is a genuine medium-severity supply-chain concern — not clearly malicious, but a real risk if the CDN or DNS is compromised.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Wei Zhu <yesmeck@gmail.com>
pkgname=paper-desktop-bin
pkgver=0.1.10
pkgrel=1
pkgdesc="Paper is a modern and powerful design tool that helps you create, share, and ship your best work."
arch=('x86_64')
url="https://paper.design"
license=('custom')
options=('!debug' '!strip')
depends=('gtk3' 'webkit2gtk' 'libappindicator-gtk3')
source=("${pkgname%-bin}.deb::https://download.paper.design/linux/deb")
sha256sums=('SKIP')
pkgver() {
cd "$srcdir"
# Extract control info from deb to get version
bsdtar -xf "${pkgname%-bin}.deb" control.tar.xz
bsdtar -xf control.tar.xz ./control
grep -E '^Version:' control | sed 's/Version: //' | cut -d'-' -f1
}
package() {
# Extract the deb package
bsdtar -xf "$srcdir/${pkgname%-bin}.deb" -C "$srcdir"
bsdtar -xf "$srcdir/data.tar.xz" -C "$pkgdir"
# Fix permissions
find "$pkgdir" -type d -exec chmod 755 {} \;
find "$pkgdir" -type f -exec chmod 644 {} \;
# Make binaries executable
find "$pkgdir/usr/bin" -type f -exec chmod 755 {} \; 2>/dev/null || true
# Make the main binary in /opt executable
chmod 755 "$pkgdir/opt/Paper/paper-desktop"
# Create symlink to /usr/bin if it doesn't exist
install -d "$pkgdir/usr/bin"
ln -sf "/opt/Paper/paper-desktop" "$pkgdir/usr/bin/paper-desktop"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Medium | 2 |
| 2026-09-16 00:03:17 | Medium | 2 |
| 2026-09-15 00:25:31 | Medium | 2 |
| 2026-09-14 00:27:57 | Medium | 2 |
| 2026-09-13 00:19:54 | Medium | 2 |
| 2026-09-12 00:25:17 | Medium | 2 |
| 2026-09-11 00:19:22 | Medium | 2 |
| 2026-09-10 00:22:44 | Medium | 2 |
| 2026-09-09 00:04:09 | Medium | 2 |
| 2026-09-08 00:18:08 | Medium | 2 |
| 2026-09-07 00:30:15 | Medium | 2 |
| 2026-09-06 00:17:06 | Medium | 2 |
| 2026-09-05 00:16:27 | Medium | 2 |
| 2026-09-04 00:03:13 | Medium | 2 |
| 2026-09-03 00:15:47 | Medium | 2 |
| 2026-09-02 00:02:31 | Medium | 2 |
| 2026-09-01 00:11:19 | Medium | 2 |
| 2026-08-31 00:19:57 | Medium | 2 |
| 2026-08-30 00:04:14 | Medium | 2 |
| 2026-08-29 00:29:17 | Medium | 2 |