owa-epanet-ui-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
"${pkgname}-${pkgver}.zip::https://drive.google.com/uc?export=download&id=1Pfn92pQvc44TYwuDBdCVUyAKmH1ONZVG"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 85%): This PKGBUILD downloads a prebuilt binary (epanet-ui) and several shared libraries (libepanet2.so, libepanetmsx.so, libshp.so, libproj.so) from a Google Drive personal/shared link. Google Drive is not an official release host — the file ID can be silently replaced by whoever controls the Drive account, and there is no way to verify the provenance of the binary independently of the SHA256 checksum. The checksum for the zip is present (c0ca66fd...), which provides some integrity guarantee, but only against the current file; if the Drive owner swaps the file the checksum would change and the build would fail, but a compromised maintainer could update both simultaneously. The core concern is that prebuilt executables and shared libraries are being installed from a non-canonical, non-reproducible host (not GitHub Releases, not the upstream project's own server) with no source build option. The upstream project (OpenWaterAnalytics/EPANET-UI on GitHub) does not appear to publish official binary releases at this Google Drive link, making this a genuine supply-chain risk. Additionally, several other source files (desktop entry, icons) use SKIP for checksums, which is sloppy but not the primary concern. This is a real medium-severity supply-chain risk: executed binaries and libraries from an unofficial personal host.
PKGBUILD
1 offending line(s) highlighted# Maintainer: AOWIS
pkgname=owa-epanet-ui-bin
pkgver=1.0.2
pkgrel=2
pkgdesc="Hydraulic and water quality modeling tool for water distribution networks (EPANET) GUI"
arch=('x86_64')
url='https://github.com/OpenWaterAnalytics/EPANET-UI'
license=('custom')
provides=('epanet-ui')
conflicts=('epanet-ui')
depends=('qt5pas')
source=(
"${pkgname}-${pkgver}.zip::https://drive.google.com/uc?export=download&id=1Pfn92pQvc44TYwuDBdCVUyAKmH1ONZVG"
"epanet-ui.desktop"
"epanet-ui_32.png"
"epanet-ui_48.png"
"epanet-ui_64.png"
"epanet-ui_128.png"
"epanet-ui_256.png"
)
sha256sums=(
'c0ca66fd395efee2210422c77d29cc31c106c26fbbd055bdb548f6f243fb7900'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
'SKIP'
)
package() {
cd "$srcdir"
install -dm755 "$pkgdir/usr/lib/epanet-ui"
# main binary
install -m755 epanet-ui "$pkgdir/usr/lib/epanet-ui/"
# bundled libs
install -m755 libepanet2.so "$pkgdir/usr/lib/epanet-ui/"
install -m755 libepanetmsx.so "$pkgdir/usr/lib/epanet-ui/"
install -m755 libshp.so "$pkgdir/usr/lib/epanet-ui/"
# PROJ fix (SONAME required)
if [[ -f libproj.so.12 ]]; then
install -m755 libproj.so.12 "$pkgdir/usr/lib/epanet-ui/"
elif [[ -f libproj.so ]]; then
install -m755 libproj.so "$pkgdir/usr/lib/epanet-ui/"
ln -sf libproj.so "$pkgdir/usr/lib/epanet-ui/libproj.so.12"
else
echo "ERROR: libproj not found"
exit 1
fi
# launcher
install -dm755 "$pkgdir/usr/bin"
cat > "$pkgdir/usr/bin/epanet-ui" <<'EOF'
#!/bin/sh
export QT_STYLE_OVERRIDE=Fusion
exec /usr/lib/epanet-ui/epanet-ui "$@"
EOF
chmod 755 "$pkgdir/usr/bin/epanet-ui"
# desktop entry
install -Dm644 epanet-ui.desktop \
"$pkgdir/usr/share/applications/epanet-ui.desktop"
# =========================
# hicolor icon theme install
# =========================
install -dm755 "$pkgdir/usr/share/icons/hicolor/32x32/apps"
install -dm755 "$pkgdir/usr/share/icons/hicolor/48x48/apps"
install -dm755 "$pkgdir/usr/share/icons/hicolor/64x64/apps"
install -dm755 "$pkgdir/usr/share/icons/hicolor/128x128/apps"
install -dm755 "$pkgdir/usr/share/icons/hicolor/256x256/apps"
install -m644 epanet-ui_32.png "$pkgdir/usr/share/icons/hicolor/32x32/apps/epanet-ui.png"
install -m644 epanet-ui_48.png "$pkgdir/usr/share/icons/hicolor/48x48/apps/epanet-ui.png"
install -m644 epanet-ui_64.png "$pkgdir/usr/share/icons/hicolor/64x64/apps/epanet-ui.png"
install -m644 epanet-ui_128.png "$pkgdir/usr/share/icons/hicolor/128x128/apps/epanet-ui.png"
install -m644 epanet-ui_256.png "$pkgdir/usr/share/icons/hicolor/256x256/apps/epanet-ui.png"
# documentation
install -Dm644 ReadMeFirst.txt \
"$pkgdir/usr/share/doc/$pkgname/ReadMeFirst.txt"
install -Dm644 manual.html \
"$pkgdir/usr/share/doc/$pkgname/manual.html"
install -Dm644 tutorial.html \
"$pkgdir/usr/share/doc/$pkgname/tutorial.html"
}
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 |