rootvim
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:28
npm install -g typescript live-server 2>/dev/null || true
llm_review
The static rules found a suspicious pattern they could not resolve, so an AI model (anthropic/claude-4.6-sonnet-20260217) reviewed it and judged it HIGH (confidence 85%): Multiple serious issues: 1) Both sources have 'SKIP' checksums, meaning no integrity verification whatsoever — the zip from GitHub's main branch (not a tagged release) and an external 'install-noninteractive.sh' script are fetched without any hash validation. 2) The 'install-noninteractive.sh' script is a second source with SKIP checksum and unknown origin/content — it is executed directly with bash during packaging, representing an arbitrary code execution vector. 3) 'npm install -g typescript live-server' runs during the package() function, installing packages globally on the build host (not into $pkgdir), meaning it modifies the live system during packaging — this is both incorrect packaging practice and a supply-chain risk. 4) The wrapper script sets up a bundled Python environment from /usr/share/rootvim/.globalPython and prepends it to PATH, which could contain arbitrary executables. The combination of an unverified external shell script executed during build, no checksums on any source, and npm global installs modifying the host system during packaging constitutes a genuine high-severity supply-chain risk.
PKGBUILD
1 offending line(s) highlighted# Maintainer: SUDO <justmultiplythinks@gmail.com>
pkgname=rootvim
pkgver=2.6.0
pkgrel=1
pkgdesc="Custom Neovim configuration by realSUDO with isolated profile"
arch=('any')
url="https://github.com/realSUDO/rootVim"
license=('MIT')
# Required dependencies
depends=('neovim' 'python-pip' 'nodejs' 'npm' 'clang' 'xclip' 'wl-clipboard' 'tree-sitter' 'gcc' 'make' 'unzip' 'wget' 'curl' 'tar' 'gzip')
makedepends=('git')
optdepends=('stylua: Lua code formatting'
'live-server: HTML development server (npm package)'
'typescript: TypeScript compiler (npm package)')
# Source: your main repo zip + non-interactive install script
source=("https://github.com/realSUDO/rootVim/archive/refs/heads/main.zip"
"install-noninteractive.sh")
sha256sums=('SKIP'
'SKIP')
package() {
# Install configuration files using the non-interactive script
bash "$srcdir/install-noninteractive.sh" "$pkgdir"
# Install npm packages globally
npm install -g typescript live-server 2>/dev/null || true
# Create wrapper script for isolated Neovim profile
install -dm755 "$pkgdir/usr/bin"
cat <<'EOF' > "$pkgdir/usr/bin/rootvim"
#!/bin/bash
NVIM_ROOTVIM_HOME="$HOME/.config/rootvim"
mkdir -p "$NVIM_ROOTVIM_HOME"
cp -r /usr/share/rootvim/* "$NVIM_ROOTVIM_HOME" 2>/dev/null
# Activate bundled Python environment
GLOBAL_PY="/usr/share/rootvim/.globalPython"
export PATH="$GLOBAL_PY/bin:$PATH"
exec nvim -u "$NVIM_ROOTVIM_HOME/init.lua" "$@"
EOF
chmod +x "$pkgdir/usr/bin/rootvim"
install -dm755 "$pkgdir/usr/share/rootvim"
echo "rootvim version: 2.6.0" > "$pkgdir/usr/share/rootvim/VERSION"
echo "Build date: $(date)" >> "$pkgdir/usr/share/rootvim/VERSION"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | HIGH | 2 |
| 2026-08-02 00:16:08 | HIGH | 2 |
| 2026-08-01 00:11:18 | HIGH | 2 |
| 2026-07-31 00:14:10 | HIGH | 2 |
| 2026-07-30 00:17:23 | HIGH | 2 |
| 2026-07-29 00:25:53 | HIGH | 2 |
| 2026-07-28 00:07:28 | HIGH | 2 |
| 2026-07-27 00:24:32 | HIGH | 2 |
| 2026-07-26 00:07:32 | HIGH | 2 |
| 2026-07-25 00:13:44 | HIGH | 2 |
| 2026-07-24 00:02:28 | HIGH | 2 |
| 2026-07-23 00:14:47 | HIGH | 2 |
| 2026-07-22 00:29:32 | HIGH | 2 |
| 2026-07-21 00:24:15 | HIGH | 2 |
| 2026-07-20 00:19:49 | HIGH | 2 |
| 2026-07-19 00:17:08 | HIGH | 2 |
| 2026-07-18 00:14:48 | HIGH | 2 |
| 2026-07-17 00:06:16 | HIGH | 2 |
| 2026-07-16 00:05:41 | HIGH | 2 |
| 2026-07-15 00:09:25 | HIGH | 2 |