nodejs-fast-cli
The PKGBUILD installs 'puppeteer' via npm at package time using a variable name without pinning or verifying its source, introducing a supply-chain risk from an undeclared external package.
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:71
npm install -g --prefix "$pkgdir/usr" puppeteer
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 90%): The PKGBUILD installs 'puppeteer' via npm at package time using a variable name without pinning or verifying its source, introducing a supply-chain risk from an undeclared external package.
-
PKGBUILD:70
npm install -g --prefix "$pkgdir/usr" $_npmname@$pkgver
PKGBUILD
2 offending line(s) highlighted# Maintainer: Trey Blancher < trey at blancher dot net >
#
# Generated from npm2PKGBUILD
#
# Note, fast-cli uses puppeteer, which contains chromium. The dependencies of
# chromium are included, otherwise fast-cli won't work as expected. It's more
# than just including the library/shared object (.so/ldd) dependencies of the
# chromium binary. This is a limitation of puppeteer. It uses chromium's
# Javascript engine to parse and navigate web pages. fast.com is heavily
# Javascript dependent, Netflix doesn't have a separate way to test outside of
# this web page.
#
pkgname=nodejs-fast-cli
_npmname=${pkgname/nodejs-/}
pkgver=5.2.0
pkgrel=2
pkgdesc="Test your download and upload speed using fast.com from Netflix"
arch=(any)
url="https://github.com/sindresorhus/fast-cli#readme"
license=(MIT)
depends=(
'alsa-lib'
'aom'
'brotli'
'dav1d'
'dbus'
'desktop-file-utils'
'ffmpeg'
'flac'
'fontconfig'
'freetype2'
'gtk3'
'harfbuzz'
'hicolor-icon-theme'
'icu'
'jsoncpp'
'libcups'
'libffi'
'libgcrypt'
'libjpeg-turbo'
'libpng'
'libpulse'
'libva'
'libwebp'
'libxml2'
'libxslt'
'libxss'
'minizip'
'nodejs'
'npm'
'nss'
'opus'
'pciutils'
're2'
'snappy'
'systemd'
'ttf-liberation'
'woff2'
'xdg-utils'
)
optdepends=()
source=(https://registry.npmjs.org/$_npmname/-/$_npmname-$pkgver.tgz)
noextract=($_npmname-$pkgver.tgz)
package() {
cd $srcdir
local _npmdir="$pkgdir/usr/lib/node_modules/"
mkdir -p $_npmdir
cd $_npmdir
npm install -g --prefix "$pkgdir/usr" $_npmname@$pkgver
npm install -g --prefix "$pkgdir/usr" puppeteer
chown -R root:root "$pkgdir"
}
# vim:set ts=2 sw=2 et:
sha256sums=('05e8cd8259e60631c280efb8e0d8c985aef402c76e8953f234bc4c3028b8fed5')
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 |