visor
The PKGBUILD itself is clean: it downloads a versioned tarball from GitHub with a pinned sha256sum, builds from source using gnu-efi, and installs files normally. The flagged pattern in the .install file (line 14) is merely an echo statement that prints a curl|sh one-liner as a suggestion to the user — it does not execute it. The text is displayed as informational output only; no actual remote download or code execution occurs during post_install/post_upgrade. The suggestion itself (curl|sh from a GitHub raw URL) is a poor practice to recommend to users, but the .install script never runs it. This is a low-severity concern at most — sloppy advice in a message, not an actual attack.
Triggered rules
llm_review
The static rules flagged this HIGH, but an AI model (anthropic/claude-sonnet-4.6) reviewed the full PKGBUILD and judged it LOW (confidence 85%): The PKGBUILD itself is clean: it downloads a versioned tarball from GitHub with a pinned sha256sum, builds from source using gnu-efi, and installs files normally. The flagged pattern in the .install file (line 14) is merely an echo statement that prints a curl|sh one-liner as a suggestion to the user — it does not execute it. The text is displayed as informational output only; no actual remote download or code execution occurs during post_install/post_upgrade. The suggestion itself (curl|sh from a GitHub raw URL) is a poor practice to recommend to users, but the .install script never runs it. This is a low-severity concern at most — sloppy advice in a message, not an actual attack.
1 higher static finding superseded - not the current verdict (shown for transparency)
curl_pipe_shell
curl/wget/fetch output reaches a shell (via pipe, xargs, process substitution, `sh -c "$(…)"`, or `| source`), executing remote code that was never reviewed or checksummed.
-
.install:14
echo ":: sh -c \"\$(curl -fsSL https://raw.githubusercontent.com/IO-ZetZor/Visor-BootManager/main/get.sh)\""
PKGBUILD
# Maintainer: IO-ZetZor <swag100iq111@gmail.com>
pkgname=visor
pkgver=1.5.7
pkgrel=1
pkgdesc="A minimal, fast, graphical UEFI boot manager"
arch=('x86_64' 'aarch64')
url="https://github.com/IO-ZetZor/Visor-BootManager"
license=('BSD-2-Clause')
depends=('bash')
makedepends=('gnu-efi')
optdepends=('sbctl: Secure Boot signing with sbctl'
'efibootmgr: UEFI boot entry management'
'python: kernel/initrd encryption (visor encrypt)'
'python-pillow: font baking (make bakefont)'
'ffmpeg: animated backgrounds (visor convert)'
'python-numpy: VBG backgrounds (visor convert --vbg)')
install=visor.install
source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
sha256sums=('c880901eb883d235434aa06861c359d1a3abc47b331d5f2c47dea0bce9b82be7')
_dir="Visor-BootManager-$pkgver"
build() {
cd "$srcdir/$_dir"
case "$CARCH" in
aarch64) make ARCH=aarch64 ;;
*) make ARCH=x86_64 ;;
esac
}
package() {
cd "$srcdir/$_dir"
case "$CARCH" in
aarch64) _efi=visor_aa64.efi ;;
*) _efi=visor_x64.efi ;;
esac
install -Dm644 "$_efi" "$pkgdir/usr/lib/visor/$_efi"
install -Dm755 visor "$pkgdir/usr/bin/visor"
install -Dm644 boot.conf.example "$pkgdir/usr/share/visor/boot.conf.example"
install -Dm644 docs/boot.conf.schema.json "$pkgdir/usr/share/visor/boot.conf.schema.json"
install -Dm755 tools/vbg_encode.py "$pkgdir/usr/share/visor/tools/vbg_encode.py"
install -Dm755 tools/visor_encrypt.py "$pkgdir/usr/share/visor/tools/visor_encrypt.py"
if [ -d assets/icons ]; then
cp -r assets/icons "$pkgdir/usr/share/visor/icons"
fi
if [ -d assets/backgrounds ]; then
cp -r assets/backgrounds "$pkgdir/usr/share/visor/backgrounds"
fi
if [ -f assets/logo.png ]; then
install -Dm644 assets/logo.png "$pkgdir/usr/share/visor/logo.png"
fi
install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Low | 2 |
| 2026-10-31 00:07:41 | Low | 2 |
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 00:13:55 | Low | 2 |
| 2026-10-28 09:50:05 | High | 1 |
| 2026-10-28 00:06:54 | Low | 2 |
| 2026-10-27 00:23:28 | Low | 2 |
| 2026-10-26 00:12:40 | Low | 2 |
| 2026-10-25 00:20:48 | Low | 2 |
| 2026-10-24 00:14:55 | Low | 2 |
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 00:06:55 | Low | 2 |
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |
| 2026-10-14 00:06:47 | Low | 2 |