igv-web
The package downloads a prebuilt web application from a non-standard host (igv.org/app-archive/) with a fixed checksum, and runs 'npm install' on specific external packages not declared as dependencies, posing a supply-chain risk if the source or npm packages were compromised.
Triggered rules
npm_install_external
Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time. Severity downgraded: the package declares/looks like a Node.js consumer, where build-time installs are expected.
-
PKGBUILD:37
npm install bootstrap@5.3.3 \
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://igv.org/app-archive/igv-webapp.${pkgver}.zip"
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 85%): The package downloads a prebuilt web application from a non-standard host (igv.org/app-archive/) with a fixed checksum, and runs 'npm install' on specific external packages not declared as dependencies, posing a supply-chain risk if the source or npm packages were compromised.
PKGBUILD
2 offending line(s) highlighted# Maintainer: Rongbo <wurongbo2012@hotmail.com>
pkgname=igv-web
_pkgname=igv
pkgver=2.4.8
pkgrel=1
pkgdesc='A web application for exploring genomic datasets using igv.js'
arch=('any')
url='https://igv.org/doc/webapp/'
license=('MIT')
keywords=('bioinformatics')
depends=('nginx')
makedepends=('npm')
backup=("etc/nginx/conf.d/${pkgname}.conf")
source=("https://igv.org/app-archive/igv-webapp.${pkgver}.zip"
"igv-web.patch"
"igv-web.conf"
"igvwebConfig.patch"
)
sha256sums=('c6c0d06abf9bdb630ae1a5e2d985d507c77f9b7ddb77c1548d2776313544494b'
'b131c27b138880a92dd24fa4c4c1c99161ab2ff1ab268fa8f1637a585e7c40e2'
'813c375ee0c763d38b66ea589dd9340b4f2c7ff8b969ab57ec13870cc0348a56'
'2b0c9a51f42ae36ac7c50a01e7f923440fa56f9f63c14134d46ee497e6281fd9')
options=('!debug' '!strip')
prepare() {
patch igv-webapp.${pkgver}/index.html -i ${pkgname}.patch
patch igv-webapp.${pkgver}/igvwebConfig.js -i igvwebConfig.patch
mkdir -p igv-webapp.${pkgver}/node_modules
}
build() {
cd igv-webapp.${pkgver}
npm install bootstrap@5.3.3 \
bootstrap-icons \
jquery@3.5.1 \
datatables.net-select-dt@1.3.1 \
react-dom@16.14.0 \
@jbrowse/react-circular-genome-view@1.7
echo "you can customize igvwebConfig.js in /srv/http/${pkgname}"
}
package() {
install -Dm644 ${pkgname}.conf ${pkgdir}/etc/nginx/conf.d/${pkgname}.conf
install -dm755 ${pkgdir}/srv/http
cp -r ${srcdir}/igv-webapp.${pkgver} ${pkgdir}/srv/http/${pkgname}
echo "you should include conf.d/ in /etc/nginx/nginx.conf http block"
}
Changes since previous scan
--- PKGBUILD @ 2026-09-08 00:18+++ PKGBUILD @ 2026-09-17 00:27@@ -2,7 +2,7 @@ pkgname=igv-web _pkgname=igv-pkgver=2.4.7+pkgver=2.4.8 pkgrel=1 pkgdesc='A web application for exploring genomic datasets using igv.js' arch=('any')@@ -19,7 +19,7 @@ "igv-web.conf" "igvwebConfig.patch" )-sha256sums=('0d02ba01df2e1ad3d10884d4267075d24b1950d54e3f0580c62c80b94257ed86'+sha256sums=('c6c0d06abf9bdb630ae1a5e2d985d507c77f9b7ddb77c1548d2776313544494b' 'b131c27b138880a92dd24fa4c4c1c99161ab2ff1ab268fa8f1637a585e7c40e2' '813c375ee0c763d38b66ea589dd9340b4f2c7ff8b969ab57ec13870cc0348a56' '2b0c9a51f42ae36ac7c50a01e7f923440fa56f9f63c14134d46ee497e6281fd9')Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Medium | 3 |
| 2026-09-16 00:03:17 | Medium | 3 |
| 2026-09-15 00:25:31 | Medium | 3 |
| 2026-09-14 00:27:57 | Medium | 3 |
| 2026-09-13 00:19:54 | Medium | 3 |
| 2026-09-12 00:25:17 | Medium | 3 |
| 2026-09-11 00:19:22 | Medium | 3 |
| 2026-09-10 00:22:44 | Medium | 3 |
| 2026-09-09 00:04:09 | Medium | 3 |
| 2026-09-08 07:16:32 | Medium | 3 |
| 2026-09-08 00:18:08 | Low | 3 |
| 2026-09-07 00:30:15 | Low | 3 |
| 2026-09-06 00:17:06 | Low | 3 |
| 2026-09-05 00:16:27 | Low | 3 |
| 2026-09-04 00:03:13 | Low | 3 |
| 2026-09-03 00:15:47 | Low | 3 |
| 2026-09-02 00:02:31 | Low | 3 |
| 2026-09-01 00:11:19 | Low | 3 |
| 2026-08-31 00:19:57 | Low | 3 |
| 2026-08-30 00:04:14 | Low | 3 |