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 not actually executed code - it is an `echo` statement that prints a curl-pipe-sh one-liner as a suggestion to the user. The script never actually runs `curl | sh`; it only displays the command as documentation. However, this is still a meaningful concern: printing a `sh -c "$(curl -fsSL ...)"` command pointing to a mutable `main` branch script (not a pinned commit or tag) in a post-install message actively encourages users to execute an unverified remote script. This is a supply-chain risk pattern (the GitHub `main` branch URL could be updated to serve malicious content at any time), but since the PKGBUILD itself does not execute it, it does not rise to HIGH/RCE. It is rated medium because it actively promotes execution of an unaudited, mutable remote shell script as an alternative installation path.
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 MEDIUM (confidence 72%): 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 not actually executed code - it is an `echo` statement that prints a curl-pipe-sh one-liner as a suggestion to the user. The script never actually runs `curl | sh`; it only displays the command as documentation. However, this is still a meaningful concern: printing a `sh -c "$(curl -fsSL ...)"` command pointing to a mutable `main` branch script (not a pinned commit or tag) in a post-install message actively encourages users to execute an unverified remote script. This is a supply-chain risk pattern (the GitHub `main` branch URL could be updated to serve malicious content at any time), but since the PKGBUILD itself does not execute it, it does not rise to HIGH/RCE. It is rated medium because it actively promotes execution of an unaudited, mutable remote shell script as an alternative installation path.
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.6
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=('64f0430829d600d612369cf20f0cfb0371b19d3cf9d1928f485254b0aab3d0fc')
_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"
}
Changes since previous scan
--- PKGBUILD @ 2026-09-14 00:27+++ PKGBUILD @ 2026-09-17 00:27@@ -1,7 +1,7 @@ # Maintainer: IO-ZetZor <swag100iq111@gmail.com> pkgname=visor-pkgver=1.5.5+pkgver=1.5.6 pkgrel=1 pkgdesc="A minimal, fast, graphical UEFI boot manager" arch=('x86_64' 'aarch64')@@ -17,7 +17,7 @@ 'python-numpy: VBG backgrounds (visor convert --vbg)') install=visor.install source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")-sha256sums=('eabcc7057943c0a1dd35da1fbd2541e00b22bafebb6cadeebc91fd995f33741e')+sha256sums=('64f0430829d600d612369cf20f0cfb0371b19d3cf9d1928f485254b0aab3d0fc') _dir="Visor-BootManager-$pkgver" 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 19:19:30 | Medium | 2 |
| 2026-09-14 19:17:46 | High | 1 |
| 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 09:20:04 | Low | 2 |
| 2026-09-08 09:16:51 | High | 1 |
| 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 14:00:04 | Medium | 2 |
| 2026-09-04 13:57:51 | High | 1 |
| 2026-09-04 00:03:13 | Low | 2 |