sober-bin

LOW
maintainer marmai 1 votes scanned 2026-11-01 00:21:48.120785
View on AUR
Why flagged

The package installs a prebuilt binary from a project-owned host with strong cross-checking via a release manifest, and the source is verified against a pinned checksum in the PKGBUILD; the untrusted host flags are mitigated by the integrity checks, making the risk low.

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 installs a prebuilt binary from a project-owned host with strong cross-checking via a release manifest, and the source is verified against a pinned checksum in the PKGBUILD; the untrusted host flags are mitigated by the integrity checks, making the risk low.

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.10.30
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 '92be4898ddf351c29339ce4b306fa9e565afe4a518c967892dcff075b283ba20'
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-10-30 00:29
+++ PKGBUILD @ 2026-11-01 00:21
@@ -1,6 +1,6 @@
# Maintainer: Markus Maiwald <markus@maiwald.work>
pkgname=sober-bin
-_upstream_version=2026.10.28
+_upstream_version=2026.10.30
pkgver="${_upstream_version//-/_}"
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)'
@@ -27,7 +27,7 @@
"https://pkg.sober-dev.app/ce/SHA256SUMS"
)
sha256sums=(
- '17717bc0a518bb9f5b3390d486bdcb951f4ffe4dab1d30a453d335e88135a12f'
+ '92be4898ddf351c29339ce4b306fa9e565afe4a518c967892dcff075b283ba20'
'SKIP'
)

Scan history

Scanned at (UTC)SeverityRules
2026-11-01 00:21:48 Low 3
2026-10-31 00:07:41 Low 3
2026-10-30 17:56:37 Medium 2
2026-10-30 00:29:30 Low 3
2026-10-29 23:54:04 Medium 2
2026-10-29 00:13:55 Low 3
2026-10-28 00:06:54 Low 3
2026-10-27 15:48:05 Medium 2
2026-10-27 05:46:44 Medium 2
2026-10-27 00:23:28 Low 3
2026-10-26 00:12:40 Low 3
2026-10-25 00:20:48 Low 3
2026-10-24 00:14:55 Low 3
2026-10-23 00:02:19 Low 3
2026-10-22 00:13:10 Low 3
2026-10-21 00:12:50 Low 3
2026-10-20 00:10:31 Low 3
2026-10-19 00:03:55 Low 3
2026-10-18 00:06:55 Low 3
2026-10-17 00:21:55 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