betblocker
The PKGBUILD downloads a prebuilt binary .deb from betblocker.org/front/download/2 — a non-versioned, opaque URL on the project's own domain — and extracts it directly into the package root. The sha256sum provides integrity checking against a known-good hash, which mitigates the risk of silent substitution somewhat, but the URL is not a versioned/tagged release artifact (it's a generic download endpoint that could serve different content over time without changing the URL). The installed artifact is a prebuilt Electron application binary (/opt/BetBlocker/BetBlocker) that runs with user privileges. The host is the official project domain (betblocker.org), not a personal or third-party host, which reduces but does not eliminate supply-chain concern. The non-versioned download URL is the main concern: if the maintainer doesn't update the PKGBUILD when upstream changes the binary, the sha256sum check would catch it, but the URL itself gives no version guarantee. Overall this is a legitimate medium-risk pattern: prebuilt binary from the official vendor site with a checksum, but via a non-versioned endpoint.
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
source=("${pkgname}-${pkgver}.deb::https://betblocker.org/front/download/2"
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 binary .deb from betblocker.org/front/download/2 — a non-versioned, opaque URL on the project's own domain — and extracts it directly into the package root. The sha256sum provides integrity checking against a known-good hash, which mitigates the risk of silent substitution somewhat, but the URL is not a versioned/tagged release artifact (it's a generic download endpoint that could serve different content over time without changing the URL). The installed artifact is a prebuilt Electron application binary (/opt/BetBlocker/BetBlocker) that runs with user privileges. The host is the official project domain (betblocker.org), not a personal or third-party host, which reduces but does not eliminate supply-chain concern. The non-versioned download URL is the main concern: if the maintainer doesn't update the PKGBUILD when upstream changes the binary, the sha256sum check would catch it, but the URL itself gives no version guarantee. Overall this is a legitimate medium-risk pattern: prebuilt binary from the official vendor site with a checksum, but via a non-versioned endpoint.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Dimitris Kiziridis <ragouel at outlook dot com>
pkgname=betblocker
pkgver=2.1.2
pkgrel=1
pkgdesc="A free tool to help you control your gambling"
arch=('x86_64')
url="https://betblocker.org"
license=("custom:${pkgname}")
depends=('nodejs-js-yaml'
'libnotify'
'nss'
'libxss'
'xdg-utils'
'uuid'
'libappindicator-gtk3'
'libsecret')
makedepends=('tar')
options=('!strip')
source=("${pkgname}-${pkgver}.deb::https://betblocker.org/front/download/2"
'LICENSE')
sha256sums=('b4aa86e0d8cf8f96fc47adbf925fd90bd98368fcc06f0ec1062548346b6619c6'
'c1a90c883551985f77391e693c6615e5b0e4e408d21bbfb9f90d4f03f0654c73')
package() {
tar xvf "${srcdir}/data.tar.xz" -C "${pkgdir}/"
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
install -d "${pkgdir}/usr/bin"
ln -sf '/opt/BetBlocker/BetBlocker' "${pkgdir}/usr/bin/betblocker"
cd "${pkgdir}/usr/share/doc"
mv bet-blocker betblocker
}
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 |