proidcm
Triggered rules
external_download_not_in_source
curl/wget fetches a URL on a non-allowlisted host that is not part of source=(), so it is not checksum-verified by makepkg.
-
PKGBUILD:14
_sourceurl=$(curl https://appcenter.proid.cz/download?solutionId=1aba3679-25ec-4ca2-b854-c787550a6753 | grep sasurl | sed -n 's/.*sasurl:"\([^"]*\)".*/\1/p' || exit 1)
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): The PKGBUILD fetches a prebuilt binary .deb from a dynamically resolved Azure SAS URL obtained via an API call to appcenter.proid.cz at build time, bypassing the standard source=() array and Arch's integrity checking infrastructure. However, there are mitigating factors: (1) the package does perform a sha256sum check against a .sha256 file bundled in the zip, so the binary integrity is verified against a checksum provided by the same server; (2) the host appcenter.proid.cz appears to be the official vendor's app distribution endpoint for ProID (a Czech government smart card solution), not a random personal host; (3) the SAS URL pattern is consistent with Azure Blob Storage, a common vendor distribution mechanism. The real concern is that both the binary and its checksum come from the same server in the same request chain, so a compromised or MITM'd server could serve a malicious binary with a matching checksum — the sha256 check provides no independent trust anchor. The dynamic URL resolution also means the package is not reproducible and could silently deliver different binaries over time. This is a genuine supply-chain concern (executed binary from a non-Arch-mirrored host with no independent checksum verification), justifying MEDIUM, but there is no evidence of malicious intent.
PKGBUILD
1 offending line(s) highlighted# Maintainer: k8ie <k8ie@mcld.eu>
pkgname='proidcm'
pkgver=1.0.2
pkgrel=3
_filename="${pkgname}-${pkgver}-0.amd64"
pkgdesc="Graphical utility for managing ProID Smart Cards"
depends=(libproidplus-gui qt6-base)
makedepends=(sed curl)
arch=('x86_64')
url="https://proid.cz/"
license=('custom:EULA')
prepare () {
_sourceurl=$(curl https://appcenter.proid.cz/download?solutionId=1aba3679-25ec-4ca2-b854-c787550a6753 | grep sasurl | sed -n 's/.*sasurl:"\([^"]*\)".*/\1/p' || exit 1)
curl -OJ $_sourceurl
bsdtar -xf "$srcdir/${_filename}.deb.zip"
echo "$(cat $srcdir/$_filename.deb.sha256 | cut -d ' ' -f1) $srcdir/$_filename.deb" | sha256sum --check --status
bsdtar -xf "$srcdir/$_filename.deb"
}
package () {
bsdtar -C "$pkgdir" -xf "$srcdir/data.tar.xz"
find $pkgdir -type d -exec chmod -c 755 {} +
}
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 |