easycrypt-bin
The package downloads a prebuilt Debian binary from a non-standard, non-whitelisted host (repo.formosa-crypto.org), which is not the project's primary repository, creating a supply-chain risk if the host is compromised or malicious.
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:33
"${_pkgname}_${_debver}_amd64.deb::https://repo.formosa-crypto.org/debian/pool/main/e/easycrypt/${_pkgname}_${_debver}_amd64.deb"
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 95%): The package downloads a prebuilt Debian binary from a non-standard, non-whitelisted host (repo.formosa-crypto.org), which is not the project's primary repository, creating a supply-chain risk if the host is compromised or malicious.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Davide Carnemolla <herbrant@protonmail.com>
pkgname=easycrypt-bin
pkgver=2026.07
pkgrel=1
pkgdesc="Interactive framework for cryptographic proofs (EasyCrypt)"
arch=('x86_64')
url="https://github.com/EasyCrypt/easycrypt"
license=('MIT')
# Prebuilt, already-stripped binaries: skip strip/debug to avoid
# "gdb-add-index: No index was created" noise and an empty -debug package
options=('!strip' '!debug' '!lto')
# Runtime dependencies available in official repositories
depends=(
'ocaml'
'gmp'
'mpfr'
'why3-bin'
)
# Tools required to extract the Debian package
makedepends=('binutils' 'tar')
# Debian packages
_pkgname=easycrypt
# Debian version string used in the source URL
_debver="${pkgver}-1"
source=(
"${_pkgname}_${_debver}_amd64.deb::https://repo.formosa-crypto.org/debian/pool/main/e/easycrypt/${_pkgname}_${_debver}_amd64.deb"
)
sha256sums=('0a801ef86be76a6e46960c9f2a391e0915d88d53b46019c8a54f5717698c30cb')
package() {
cd "$srcdir"
# Extract the Debian package
ar x "${_pkgname}_${_debver}_amd64.deb"
# Extract the data archive (format may vary)
if [ -f data.tar.xz ]; then
tar -xf data.tar.xz -C "$pkgdir"
elif [ -f data.tar.gz ]; then
tar -xf data.tar.gz -C "$pkgdir"
elif [ -f data.tar.zst ]; then
tar -xf data.tar.zst -C "$pkgdir"
fi
# Remove Debian-specific changelog files
if [ -d "$pkgdir/usr/share/doc/$_pkgname" ]; then
rm -f "$pkgdir/usr/share/doc/$_pkgname/changelog.Debian"*
fi
# Install the MIT license under the package's own name.
# The Debian copyright file is empty, so use the real LICENSE shipped
# in the docs directory and fall back to copyright only if it is missing.
if [ -s "$pkgdir/usr/doc/$_pkgname/LICENSE" ]; then
install -Dm644 \
"$pkgdir/usr/doc/$_pkgname/LICENSE" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
elif [ -s "$pkgdir/usr/share/doc/$_pkgname/copyright" ]; then
install -Dm644 \
"$pkgdir/usr/share/doc/$_pkgname/copyright" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
fi
# Drop the empty Debian copyright stub
rm -f "$pkgdir/usr/share/doc/$_pkgname/copyright"
rmdir --ignore-fail-on-non-empty \
"$pkgdir/usr/share/doc/$_pkgname" "$pkgdir/usr/share/doc" 2>/dev/null || true
}
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 |