verifast-nightly-bin

maintainer PixelHamster · 0 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged This PKGBUILD downloads a prebuilt binary tarball from GitHub releases (official upstream repo: github.com/verifast/verifast) and installs executables (verifast, vfide) into /usr/bin. The source URL is constructed dynamically at parse time by curling GitHub's releases page, meaning the exact binary fetched is determined at build time rather than being pinned. The sha256sum for the binary is 'SKIP', so there is no integrity verification. While the source is the official upstream GitHub repository (not a personal/unofficial host), the combination of a dynamically resolved nightly asset URL plus SKIP checksum means there is no way to verify the binary's integrity — a compromised GitHub release asset or a MITM could substitute a malicious binary. This is a genuine supply-chain concern: executed binaries with no checksum verification. The LICENSE is fetched from the nightly branch with a pinned hash, which is fine. The risk is real but not clearly malicious — this is a nightly build pattern that trades reproducibility for currency, which is medium severity.

Triggered rules

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:32 source=("https://github.com${_rel_nightly_bin}" "https://raw.githubusercontent.com/verifast/verifast/nightly/LICENSE.md")
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): This PKGBUILD downloads a prebuilt binary tarball from GitHub releases (official upstream repo: github.com/verifast/verifast) and installs executables (verifast, vfide) into /usr/bin. The source URL is constructed dynamically at parse time by curling GitHub's releases page, meaning the exact binary fetched is determined at build time rather than being pinned. The sha256sum for the binary is 'SKIP', so there is no integrity verification. While the source is the official upstream GitHub repository (not a personal/unofficial host), the combination of a dynamically resolved nightly asset URL plus SKIP checksum means there is no way to verify the binary's integrity — a compromised GitHub release asset or a MITM could substitute a malicious binary. This is a genuine supply-chain concern: executed binaries with no checksum verification. The LICENSE is fetched from the nightly branch with a pinned hash, which is fine. The risk is real but not clearly malicious — this is a nightly build pattern that trades reproducibility for currency, which is medium severity.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Merlijn Verstraete <toxicmushroom + aur A_ melijn · com>
2
3pkgname=verifast-nightly-bin
4_pkgname=verifast
5pkgdesc="Research prototype tool for modular formal verification of C and Java programs"
6arch=("any")
7url="https://github.com/verifast/verifast"
8
9# 25.02
10_version=$(curl -sI https://github.com/verifast/verifast/releases/latest | tr -d '\r' | sed -En 's/^location: https:\/\/github\.com\/verifast\/verifast\/releases\/tag\/(.*)/\1/p')
11
12# /verifast/verifast/releases/download/nightly/verifast-24.08.30-147-g6a791d31-linux.tar.gz
13_rel_nightly_bin=$(curl -s https://github.com/verifast/verifast/releases/expanded_assets/nightly | grep -oh -E "/verifast/verifast/releases/download/nightly/.*-linux.tar.gz")
14
15# verifast-24.08.30-147-g6a791d31
16_untarred_name=$(echo ${_rel_nightly_bin} | sed -En 's/^\/verifast\/verifast\/releases\/download\/nightly\/(.*)\-linux\.tar\.gz/\1/p')
17
18# 6a791d31
19_commit=$(echo ${_rel_nightly_bin} | sed -En 's/^\/verifast\/.*\-g(.*)\-linux\.tar\.gz/\1/p')
20
21pkgver=25.02.gd74e7b10
22pkgrel=1
23
24pkgver() {
25 printf "%s.g%s" ${_version} ${_commit}
26}
27
28license=('MIT')
29depends=(gtk2)
30conflicts=(verifast-bin)
31
32source=("https://github.com${_rel_nightly_bin}" "https://raw.githubusercontent.com/verifast/verifast/nightly/LICENSE.md")
33sha256sums=("SKIP" "309c4afede6331d0b813e5f0e850d6b638370a70dd31fa2fbf5e40bc5421b49f")
34
35prepare() {
36 # idk what the proper way to do this is, this feels wrong
37 cp ../$_pkgname.desktop $_pkgname.desktop
38 cp ../icon.png icon.png
39}
40
41package() {
42 install -d "${pkgdir}/usr/bin"
43 install -d "${pkgdir}/usr/share/licenses/${_pkgname}"
44 install -d "${pkgdir}/opt"
45
46 install -m644 "${srcdir}/LICENSE.md" "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE"
47
48 _destdir="/opt/${_pkgname}"
49 destdir="${pkgdir}${_destdir}"
50 cp -r "${srcdir}/${_untarred_name}" "${destdir}"
51
52 install -d "$pkgdir"/usr/share/applications
53 install -m644 "${srcdir}/icon.png" "${destdir}/icon.png"
54 install -m644 "${srcdir}/${_pkgname}.desktop" "${pkgdir}/usr/share/applications/${_pkgname}.desktop"
55
56 ln -s "${_destdir}/bin/verifast" "${pkgdir}/usr/bin/verifast"
57 ln -s "${_destdir}/bin/vfide" "${pkgdir}/usr/bin/vfide"
58 ln -s "${_destdir}/bin/vfide" "${pkgdir}/usr/bin/verifast-ide"
59}
60

Scan history

Scanned at (UTC)SeverityRules
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

Report a package

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

0 / 4000
Your suggestion