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"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Medium | 3 |
| 2026-10-31 00:07:41 | Medium | 3 |
| 2026-10-30 00:29:30 | Medium | 3 |
| 2026-10-29 00:13:55 | Medium | 3 |
| 2026-10-28 00:06:54 | Medium | 3 |
| 2026-10-27 00:23:28 | Medium | 3 |
| 2026-10-26 00:12:40 | Medium | 3 |
| 2026-10-25 00:20:48 | Medium | 3 |
| 2026-10-24 00:14:55 | Medium | 3 |
| 2026-10-23 00:02:19 | Medium | 3 |
| 2026-10-22 00:13:10 | Medium | 3 |
| 2026-10-21 00:12:50 | Medium | 3 |
| 2026-10-20 00:10:31 | Medium | 3 |
| 2026-10-19 00:03:55 | Medium | 3 |
| 2026-10-18 00:06:55 | Medium | 3 |
| 2026-10-17 00:21:55 | Medium | 3 |
| 2026-10-16 00:12:47 | Medium | 3 |
| 2026-10-15 00:28:05 | Medium | 3 |
| 2026-10-14 00:06:47 | Medium | 3 |
| 2026-10-13 00:23:45 | Medium | 3 |