sober-bin

LOW
maintainer marmai 0 votes scanned 2026-09-17 00:27:14.276658
View on AUR
Why flagged

The package downloads a prebuilt binary and its checksum manifest from the project's own distribution domain; while the host is not whitelisted, the binary is verified against both a pinned hash in the PKGBUILD and a cross-checked release manifest line, ensuring integrity despite the non-standard host.

Triggered rules

Low AI review downgraded a static finding llm_review

The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a prebuilt binary and its checksum manifest from the project's own distribution domain; while the host is not whitelisted, the binary is verified against both a pinned hash in the PKGBUILD and a cross-checked release manifest line, ensuring integrity despite the non-standard host.

2 higher static findings superseded - not the current verdict (shown for transparency)
Medium External download from an untrusted host, not in source=() 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:57 curl -fsSL "https://pkg.sober-dev.app/ce/SHA256SUMS?ref=${_upstream_version}" \
Medium source=() URL on a non-standard host 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:26 "https://pkg.sober-dev.app/ce/sober_v${_upstream_version}_linux_amd64"

PKGBUILD

2 offending line(s) highlighted
1# Maintainer: Markus Maiwald <markus@maiwald.work>
2pkgname=sober-bin
3_upstream_version=2026.09.1
4pkgver="${_upstream_version//-/_}"
5pkgrel=1
6pkgdesc='Prevent AI-Slop: a local-first repository governance client and code reviewer with deterministic review readiness (local app; the forge-side Raccoon daemon and dashboard ship in Sober Enterprise)'
7arch=('x86_64')
8# Marketing / product site (read about Sober). Source + releases: git.sovereign-society.org/Sober/sober
9url='https://sober-dev.app'
10license=('LSL-1.0')
11depends=('tree-sitter')
12provides=('sober')
13conflicts=('sober')
14
15# Integrity model (why this is not "no verification"):
16# 1) makepkg validates the binary against the pinned sha256sums[0] in this PKGBUILD
17# (the AUR git history is the trust anchor — standard Arch -bin practice).
18# 2) prepare() re-checks the same binary against the release SHA256SUMS *line*
19# for this artifact only (cross-check vs the published release manifest).
20# SHA256SUMS itself uses SKIP: that file is rewritten when OCI/Debian image
21# assets are attached later; pinning its whole-file hash caused false AUR
22# failures. The binary line inside it stays stable for a given release.
23# Sources come from the sober-dist R2 layer (download-counter instrumented),
24# not the forge release page, so installs are visible in the /stats counters.
25source=(
26 "https://pkg.sober-dev.app/ce/sober_v${_upstream_version}_linux_amd64"
27 "https://pkg.sober-dev.app/ce/SHA256SUMS"
28)
29sha256sums=(
30 '47550b5af9e7a33c0c13e4aaed97db2c3648ab3c19029966b125dc500faf8a53'
31 'SKIP'
32)
33
34prepare() {
35 cd "${srcdir}"
36 local bin="sober_v${_upstream_version}_linux_amd64"
37 local line
38
39 if [[ ! -f SHA256SUMS ]]; then
40 echo "error: release SHA256SUMS missing from sources" >&2
41 return 1
42 fi
43 if [[ ! -f "${bin}" ]]; then
44 echo "error: binary ${bin} missing from sources" >&2
45 return 1
46 fi
47
48 # Exact artifact line (hash + two spaces/tabs + filename).
49 line="$(grep -E "^[0-9a-fA-F]{64}[[:space:]]+${bin}\$" SHA256SUMS || true)"
50 if [[ -z "${line}" ]]; then
51 # SHA256SUMS is a moving file fetched with hash SKIP, so a copy cached
52 # by makepkg (SRCDEST) or a CDN edge can predate this release. Re-fetch
53 # once — the query string busts edge caches — before declaring the
54 # release broken.
55 echo "note: ${bin} missing from local SHA256SUMS — refetching manifest" >&2
56 if command -v curl >/dev/null 2>&1; then
57 curl -fsSL "https://pkg.sober-dev.app/ce/SHA256SUMS?ref=${_upstream_version}" \
58 -o SHA256SUMS || true
59 fi
60 line="$(grep -E "^[0-9a-fA-F]{64}[[:space:]]+${bin}\$" SHA256SUMS || true)"
61 fi
62 if [[ -z "${line}" ]]; then
63 echo "error: ${bin} is not listed in upstream SHA256SUMS" >&2
64 echo "hint: stale cached manifest — retry with fresh sources: paru -S ${pkgname} --redownload" >&2
65 echo "------- SHA256SUMS -------" >&2
66 cat SHA256SUMS >&2 || true
67 return 1
68 fi
69
70 # Cross-check binary bytes against the release manifest line.
71 if ! printf '%s\n' "${line}" | sha256sum -c -; then
72 echo "error: binary failed verification against release SHA256SUMS" >&2
73 return 1
74 fi
75
76 # Defense in depth: manifest hash must equal the PKGBUILD pin (makepkg
77 # already checked the file; this catches a stale pin vs updated release).
78 local from_sums actual
79 from_sums="$(printf '%s\n' "${line}" | awk '{print tolower($1)}')"
80 actual="$(sha256sum "${bin}" | awk '{print tolower($1)}')"
81 if [[ "${from_sums}" != "${actual}" ]]; then
82 echo "error: SHA256SUMS hash (${from_sums}) != binary hash (${actual})" >&2
83 return 1
84 fi
85 if [[ "${from_sums}" != "${sha256sums[0]}" ]]; then
86 echo "error: PKGBUILD pin (${sha256sums[0]}) != release SHA256SUMS (${from_sums})" >&2
87 echo "hint: maintainer must re-run scripts/publish-aur.sh after re-uploading the binary" >&2
88 return 1
89 fi
90
91 echo "ok: ${bin} matches PKGBUILD pin and release SHA256SUMS"
92}
93
94package() {
95 install -Dm755 "${srcdir}/sober_v${_upstream_version}_linux_amd64" \
96 "${pkgdir}/usr/bin/sober"
97 # Ship the release manifest so operators can re-verify offline.
98 install -Dm644 "${srcdir}/SHA256SUMS" \
99 "${pkgdir}/usr/share/doc/${pkgname}/SHA256SUMS"
100}
101

Changes since previous scan

--- PKGBUILD @ 2026-09-16 15:22
+++ PKGBUILD @ 2026-09-17 00:27
@@ -1,9 +1,9 @@
# Maintainer: Markus Maiwald <markus@maiwald.work>
pkgname=sober-bin
-_upstream_version=0.11.0
+_upstream_version=2026.09.1
pkgver="${_upstream_version//-/_}"
-pkgrel=2
-pkgdesc='Prevent AI-Slop: The Sober Raccoon is your local CodeRabbit: A Local-first repository governance assistant and code reviewer with deterministic review readiness'
+pkgrel=1
+pkgdesc='Prevent AI-Slop: a local-first repository governance client and code reviewer with deterministic review readiness (local app; the forge-side Raccoon daemon and dashboard ship in Sober Enterprise)'
arch=('x86_64')
# Marketing / product site (read about Sober). Source + releases: git.sovereign-society.org/Sober/sober
url='https://sober-dev.app'
@@ -27,7 +27,7 @@
"https://pkg.sober-dev.app/ce/SHA256SUMS"
)
sha256sums=(
- '4fb595ca85ae131c7477918bc4dde0cc714ba482eece080c6e87ddff5eace7ad'
+ '47550b5af9e7a33c0c13e4aaed97db2c3648ab3c19029966b125dc500faf8a53'
'SKIP'
)

Scan history

Scanned at (UTC)SeverityRules
2026-09-17 00:27:14 Low 3
2026-09-16 17:23:26 Medium 2
2026-09-16 15:22:50 Medium 2
2026-09-16 00:03:17 Low 3
2026-09-15 00:25:31 Low 3
2026-09-14 00:27:57 Low 3
2026-09-13 00:19:54 Low 3
2026-09-12 00:25:17 Low 3
2026-09-11 00:19:22 Low 3
2026-09-10 00:22:44 Low 3
2026-09-09 00:04:09 Low 3
2026-09-08 00:18:08 Low 3
2026-09-07 00:30:15 Low 3
2026-09-06 00:17:06 Low 3
2026-09-05 00:16:27 Low 3
2026-09-04 00:03:13 Low 3
2026-09-03 00:15:47 Low 3
2026-09-02 00:02:31 Low 3
2026-09-01 00:11:19 Low 3
2026-08-31 00:19:57 Low 3

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion