python-scipy-mkl-bin
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:17
source=(https://repo.anaconda.com/pkgs/main/linux-64/${_pkgname}-${pkgver}-${_build}.tar.bz2)
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 package (a compiled .so-heavy Python extension including MKL-linked scipy) from repo.anaconda.com and installs it directly. While Anaconda is a legitimate, well-known distribution channel, this is still an executed/loaded binary (native .so libraries) from a non-Arch, non-PyPI source. The sha256 checksum provides integrity verification against the specific artifact, but there is no GPG signature verification. The main concern is that Anaconda's conda package format is being repurposed for Arch: the prepare() step does a sed-based prefix replacement on arbitrary paths listed in info/paths.json, which could touch unexpected files. The binary itself is a real Anaconda-distributed scipy build, not from a personal or unknown host, which reduces risk compared to a truly unofficial source. However, installing prebuilt native binaries (with MKL linkage) from a non-distro channel into /usr remains a genuine supply-chain concern — if the Anaconda package were compromised or the checksum were wrong, arbitrary native code would execute in the Python runtime. This is a legitimate MEDIUM: not clearly malicious, but a real concern due to executed native binaries from an unofficial (for Arch) source.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Carlos Aznarán <caznaranl@uni.pe>
# Contributor: Chris Billington <chrisjbillington@gmail.com>
pkgname=python-scipy-mkl-bin
_pkgname=scipy
pkgver=1.16.3
_build=py314h3d0cd3c_0
pkgrel=1
pkgdesc="SciPy is open-source software for mathematics, science, and engineering - with Intel MKL - prebuilt binaries from Anaconda"
arch=(x86_64)
license=(BSD-3-Clause)
url="https://scipy.org"
provides=("python-scipy=${pkgver}")
conflicts=(python-scipy)
depends=(python-numpy python-mkl-service)
makedepends=(jq)
optdepends=('python-pillow: for image saving module')
source=(https://repo.anaconda.com/pkgs/main/linux-64/${_pkgname}-${pkgver}-${_build}.tar.bz2)
sha256sums=('846aad16261f27d3854a55756f7fa5d3c898d2386579fb30a6be450e51ed7d8a')
prepare() {
# Prefix replacement
for row in $(jq -c '.paths[] | select(has("prefix_placeholder"))' "info/paths.json"); do
path=$(echo $row | jq -r '._path')
prefix=$(echo $row | jq -r '.prefix_placeholder')
sed -i "s:${prefix}:/usr:g" "${path}"
done
}
package() {
mkdir -p "${pkgdir}/usr/"
cp -drp --no-preserve=ownership "${srcdir}/lib" "${pkgdir}/usr/"
install -D -m 644 "${srcdir}/info/licenses/LICENSE.txt" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 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 |