vortex-v2
The npx usage in build() runs electron-builder on the project's own source from GitHub, which is a normal part of building an Electron app; the source is verifiable and the command is not executing arbitrary remote code.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The npx usage in build() runs electron-builder on the project's own source from GitHub, which is a normal part of building an Electron app; the source is verifiable and the command is not executing arbitrary remote code.
1 higher static finding superseded - not the current verdict (shown for transparency)
remote_code_tool
`npx`/`bunx`/`pnpm dlx`/`deno run <url>` downloads AND runs a remote package at build time — the moral equivalent of piping a download into a shell. Severity downgraded: Node.js consumer context.
-
PKGBUILD:34
npx electron-builder --linux dir
PKGBUILD
1 offending line(s) highlighted# Maintainer: Doodcom <a.munro87@icloud.com>
# Build from a local checkout:
# cd packaging && makepkg -si
# For AUR publishing the source line points at the GitHub release tag.
pkgname=vortex-v2
pkgver=1.0.3
pkgrel=1
pkgdesc="System updater and tuner suite for CachyOS (updates, sched-ext, snapshots, cleaner)"
arch=('x86_64')
url="https://github.com/Doodcom/vortex-v2"
license=('MIT')
depends=('nss' 'libxtst' 'libxss' 'gtk3' 'mesa' 'alsa-lib')
makedepends=('git' 'nodejs' 'npm')
optdepends=(
'fwupd: device firmware updates in the Updater'
'snapper: pre-upgrade Btrfs snapshots'
'ufw: firewall view'
'paru: AUR update checks and builds'
'pacman-contrib: checkupdates + paccache for update checks and cache cleaning'
'scx-scheds: sched-ext schedulers for the Scheduler view and Game Mode'
'power-profiles-daemon: power profile switching'
'docker: container view'
'flatpak: flatpak management in Packages'
)
source=("$pkgname-$pkgver.tar.gz::https://github.com/Doodcom/vortex-v2/archive/refs/tags/v$pkgver.tar.gz")
sha256sums=('febd14a543f7611d2910b3da501529a193a5cca34757c42b3812d38b945fd7a2')
build() {
cd "$srcdir/$pkgname-$pkgver"
npm ci --legacy-peer-deps
npm run build
# dir target produces release/linux-unpacked with natives rebuilt for the bundled Electron
npx electron-builder --linux dir
}
package() {
cd "$srcdir/$pkgname-$pkgver"
# App payload
install -d "$pkgdir/opt/$pkgname"
cp -r release/linux-unpacked/. "$pkgdir/opt/$pkgname/"
chmod 4755 "$pkgdir/opt/$pkgname/chrome-sandbox"
# Launcher with the same GPU/Wayland flags electron-builder bakes into its own targets
install -d "$pkgdir/usr/bin"
cat > "$pkgdir/usr/bin/$pkgname" <<'EOF'
#!/usr/bin/env bash
exec "/opt/vortex-v2/vortex-v2" \
--ozone-platform-hint=auto \
--enable-features=VaapiVideoDecodeLinuxGL,UseOzonePlatform,WaylandWindowDecorations \
--use-gl=egl \
--enable-gpu-rasterization \
"$@"
EOF
chmod 755 "$pkgdir/usr/bin/$pkgname"
# Desktop entry + icons
install -Dm644 packaging/$pkgname.desktop "$pkgdir/usr/share/applications/$pkgname.desktop"
for size in 128 256 512; do
install -Dm644 "build/icons/${size}x${size}.png" \
"$pkgdir/usr/share/icons/hicolor/${size}x${size}/apps/$pkgname.png"
done
# Polkit rule: one auth per maintenance run instead of one per pkexec call
install -Dm644 resources/polkit/49-vortex.rules "$pkgdir/etc/polkit-1/rules.d/49-vortex.rules"
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 00:25:17 | Low | 2 |
| 2026-09-11 00:19:22 | Low | 2 |
| 2026-09-10 00:22:44 | Low | 2 |
| 2026-09-09 00:04:09 | Low | 2 |
| 2026-09-08 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |
| 2026-08-29 00:29:17 | Low | 2 |