visor

MEDIUM
maintainer IO-ZetZor 0 votes scanned 2026-09-17 00:27:14.276658
View on AUR
Why flagged

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

Medium AI review downgraded a static finding 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)
High Remote download executed by a shell 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

1# Maintainer: IO-ZetZor <swag100iq111@gmail.com>
2
3pkgname=visor
4pkgver=1.5.6
5pkgrel=1
6pkgdesc="A minimal, fast, graphical UEFI boot manager"
7arch=('x86_64' 'aarch64')
8url="https://github.com/IO-ZetZor/Visor-BootManager"
9license=('BSD-2-Clause')
10depends=('bash')
11makedepends=('gnu-efi')
12optdepends=('sbctl: Secure Boot signing with sbctl'
13 'efibootmgr: UEFI boot entry management'
14 'python: kernel/initrd encryption (visor encrypt)'
15 'python-pillow: font baking (make bakefont)'
16 'ffmpeg: animated backgrounds (visor convert)'
17 'python-numpy: VBG backgrounds (visor convert --vbg)')
18install=visor.install
19source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
20sha256sums=('64f0430829d600d612369cf20f0cfb0371b19d3cf9d1928f485254b0aab3d0fc')
21
22_dir="Visor-BootManager-$pkgver"
23
24build() {
25 cd "$srcdir/$_dir"
26 case "$CARCH" in
27 aarch64) make ARCH=aarch64 ;;
28 *) make ARCH=x86_64 ;;
29 esac
30}
31
32package() {
33 cd "$srcdir/$_dir"
34
35 case "$CARCH" in
36 aarch64) _efi=visor_aa64.efi ;;
37 *) _efi=visor_x64.efi ;;
38 esac
39 install -Dm644 "$_efi" "$pkgdir/usr/lib/visor/$_efi"
40
41 install -Dm755 visor "$pkgdir/usr/bin/visor"
42 install -Dm644 boot.conf.example "$pkgdir/usr/share/visor/boot.conf.example"
43 install -Dm644 docs/boot.conf.schema.json "$pkgdir/usr/share/visor/boot.conf.schema.json"
44
45 install -Dm755 tools/vbg_encode.py "$pkgdir/usr/share/visor/tools/vbg_encode.py"
46 install -Dm755 tools/visor_encrypt.py "$pkgdir/usr/share/visor/tools/visor_encrypt.py"
47
48 if [ -d assets/icons ]; then
49 cp -r assets/icons "$pkgdir/usr/share/visor/icons"
50 fi
51 if [ -d assets/backgrounds ]; then
52 cp -r assets/backgrounds "$pkgdir/usr/share/visor/backgrounds"
53 fi
54 if [ -f assets/logo.png ]; then
55 install -Dm644 assets/logo.png "$pkgdir/usr/share/visor/logo.png"
56 fi
57
58 install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
59}
60

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)SeverityRules
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

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion