python-mkl-fft-bin
This PKGBUILD downloads a prebuilt binary package (a compiled Python extension using Intel MKL) from repo.anaconda.com, which is Anaconda's official package repository. While Anaconda is a legitimate and well-known distribution channel, the package installs a prebuilt binary (not source-compiled) from a non-Arch host. The sha256sum is pinned, which mitigates tampering risk at the transport level, but the binary's provenance and build reproducibility cannot be independently verified. The prefix-replacement sed operation on the installed binary is a standard Anaconda relocation technique, not malicious. The overall pattern — pinned hash, official Anaconda repo, known upstream (IntelPython/mkl_fft on GitHub) — makes this a legitimate but non-standard packaging approach. The medium rating is appropriate: it's not an attack, but installing prebuilt binaries from a non-Arch source into the Python path is a genuine supply-chain concern if Anaconda's infrastructure were compromised or the package were silently updated.
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 Python extension using Intel MKL) from repo.anaconda.com, which is Anaconda's official package repository. While Anaconda is a legitimate and well-known distribution channel, the package installs a prebuilt binary (not source-compiled) from a non-Arch host. The sha256sum is pinned, which mitigates tampering risk at the transport level, but the binary's provenance and build reproducibility cannot be independently verified. The prefix-replacement sed operation on the installed binary is a standard Anaconda relocation technique, not malicious. The overall pattern — pinned hash, official Anaconda repo, known upstream (IntelPython/mkl_fft on GitHub) — makes this a legitimate but non-standard packaging approach. The medium rating is appropriate: it's not an attack, but installing prebuilt binaries from a non-Arch source into the Python path is a genuine supply-chain concern if Anaconda's infrastructure were compromised or the package were silently updated.
PKGBUILD
1 offending line(s) highlighted# Maintainer : Chris Billington <chrisjbillington@gmail.com>
pkgname=python-mkl-fft-bin
_pkgname=mkl_fft
_pkgver=1.3.6
_build=py311ha02d727_1
pkgver="${_pkgver}.anaconda${_build##*_}"
pkgrel=3
epoch=1
pkgdesc="Fast Fourier Transform using Intel MKL - prebuilt binaries from Anaconda"
arch=('x86_64')
url="https://github.com/IntelPython/mkl_fft"
license=('custom')
provides=('python-mkl-fft')
conflicts=('python-mkl-fft')
depends=('python-mkl-service' 'python-numpy')
makedepends=('jq')
source=("https://repo.anaconda.com/pkgs/main/linux-64/${_pkgname}-${_pkgver}-${_build}.tar.bz2")
sha256sums=('ca708f0195f2e0320f7bc11e3a7adea84a61fc7419bd7c563fcac77cf2a9ea2a')
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 "${pkgdir}/usr"
cp -drp --no-preserve=ownership "${srcdir}/lib" "${pkgdir}/usr/lib"
install -D -m 644 "${srcdir}/info/licenses/LICENSE.txt" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
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 |