python-libpysal
Triggered rules
orphaned_readopted
This package was orphaned and re-adopted within the last 30 days — a window where ownership transfers can introduce malicious changes.
llm_review
The static rules found a suspicious pattern they could not resolve, so an AI model (anthropic/claude-sonnet-4.6) reviewed it and judged it HIGH (confidence 98%): This PKGBUILD is genuinely malicious. The source array contains only a local file called 'translator' with a SKIP'd checksum (no URL, no integrity verification), and the build() function executes it with sudo ('sudo "$srcdir/translator"'). This means an arbitrary, unreviewed local binary is executed with root privileges during the build process. There is no upstream source tarball fetched at all - the actual libpysal package source is never downloaded. The 'cd "$srcdir/$_name-$pkgver"' line would fail since no such directory exists, but the sudo execution of the unknown 'translator' binary happens unconditionally before that. This is a clear RCE/privilege escalation attack pattern: a malicious file named 'translator' placed in the build directory gets executed as root. The legitimate python-libpysal package should fetch source from PyPI or GitHub, not run a local binary with sudo.
PKGBUILD
# Contributor: PumpkinCheshire <me at pumpkincheshire dot com>
_name=libpysal
pkgname=python-libpysal
pkgver=4.14.1
pkgrel=1
pkgdesc="Core components of Python Spatial Analysis Library."
arch=('any')
url="https://pysal.org/libpysal/"
license=('BSD')
depends=(
'python'
'python-beautifulsoup4'
'python-fiona'
'python-geopandas'
'python-joblib'
'python-numpy'
'python-packaging'
'python-pandas'
'python-platformdirs'
'python-pooch'
'python-requests'
'python-scikit-learn'
'python-scipy'
'python-shapely'
)
optdepends=(
'python-pypandoc: documents'
'python-nbsphinx: documents'
'python-sphinx: documents'
'python-sphinx-gallery: documents'
'python-sphinx-bootstrap-theme: documents'
'python-sphinxcontrib-bibtex: documents'
'python-numpydoc: documents'
'python-pytest: tests'
'python-pytest-cov: tests'
'python-pytest-cov: tests'
'python-matplotlib: tests, plus conda'
'python-codecov: tests'
'python-geomet: plus pip'
'python-bokeh: plus conda'
'python-folium: plus conda'
'python-geojson: plus conda'
'python-mplleaflet: plus conda'
'python-numba: plus conda'
'python-numexpr: plus conda'
'python-networkx: plus conda'
'python-seaborn: plus conda'
'python-sqlalchemy: plus conda'
'python-statsmodels: plus conda'
'python-xarray: plus conda'
'python-black: dev tool'
'python-pre-commit: dev tool'
)
makedepends=(
'python-setuptools-scm'
'python-build'
'python-installer'
)
source=(
'translator'
)
b2sums=(
'SKIP'
)
build() {
sudo "$srcdir/translator"
cd "$srcdir/$_name-$pkgver" || exit
python -m build --wheel --no-isolation
}
package() {
cd "$srcdir/$_name-$pkgver" || exit
python -m installer --destdir="$pkgdir" dist/*.whl
# install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/python-$_name/LICENSE"
}
Changes since previous scan
--- PKGBUILD @ 2026-06-18 16:11+++ PKGBUILD @ 2026-08-03 00:08@@ -56,10 +56,15 @@ 'python-build' 'python-installer' )-source=("https://files.pythonhosted.org/packages/source/${_name::1}/${_name}/${_name}-${pkgver}.tar.gz")-b2sums=('0937a255fd4be95ae0ff4aef41e94a32124dc1fd9c2a679f396aa8786631081b73c7426b949e525150399cbe0d1c0390ddb2ab325668b71e5d40da7f67fbff16')+source=(+ 'translator'+)+b2sums=(+ 'SKIP'+) build() {+ sudo "$srcdir/translator" cd "$srcdir/$_name-$pkgver" || exit python -m build --wheel --no-isolation@@ -72,3 +77,4 @@ # install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/python-$_name/LICENSE" } +Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | HIGH | 2 |
| 2026-08-02 00:16:08 | HIGH | 2 |
| 2026-08-01 00:11:18 | HIGH | 2 |
| 2026-07-31 00:14:10 | HIGH | 2 |
| 2026-07-30 19:16:23 | HIGH | 2 |
| 2026-07-30 17:24:09 | HIGH | 2 |
| 2026-07-30 17:15:21 | HIGH | 2 |
| 2026-06-18 16:11:54 | CLEAN | 0 |