visual
Triggered rules
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:10
source_x86_64=("http://bit.ly/visuallinux_${_pkgver}_amd64")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 85%): The PKGBUILD downloads prebuilt binaries (a .deb-style archive containing data.tar.xz with an executable) via bit.ly shortened URLs. This is a genuine supply-chain concern: bit.ly URLs can be repointed at any time by whoever controls the bit.ly account, meaning the sha512 checksums provide integrity only for the current target but offer no protection if the redirect is changed before download. The actual content is a prebuilt ARM emulator binary from a personal Bitbucket page (salmanarif), which is itself an unofficial/personal host. Executing prebuilt binaries from a personal host via an obfuscated redirect URL is a textbook medium-severity supply-chain risk. The sha512sums do provide some integrity guarantee at the moment of packaging, but the indirection through bit.ly undermines this. The package also removes a bundled JRE and patches a shell script, which is normal. No evidence of active malice or piracy.
PKGBUILD
1 offending line(s) highlighted# Maintainer: David Manouchehri <manouchehri@riseup.net>
pkgname="visual"
pkgver=1.27
_pkgver="${pkgver//.}"
pkgrel=2
pkgdesc="A highly visual ARM emulator, designed to make learning ARM Assembly language easier."
url="http://salmanarif.bitbucket.org/visual/"
license=('unknown')
source_x86_64=("http://bit.ly/visuallinux_${_pkgver}_amd64")
source_i686=("http://bit.ly/visuallinux_${_pkgver}_i386")
sha512sums_x86_64=('ef86dcac1c3a4ff0b8931d76a74731530badea4c3f0317b2000ecfc8045258042fec1bf8b25d66d8e30a1666b6d11ba70ac04980843c51aa14ff47193b255ce2')
sha512sums_i686=('4b46d0d9eed27c0d71f8171f6cb6e732d3ccd72c8427d184a0d725335abc19234b836ee10e4e807ec666d56a4c45021ed540f1360a1a99f3e33b5170ac91de39')
arch=('i686' 'x86_64')
depends=('java-runtime' 'java-openjfx')
package() {
cd "${srcdir}/"
tar -xvf 'data.tar.xz' -C "${pkgdir}/"
# Use the system's JRE.
sed -i 's,../jre/bin/java,java,' "${pkgdir}/usr/local/bin/visual/VisUAL.sh"
rm -r "${pkgdir}/usr/local/bin/visual/jre/" # Remove the bundled JRE.
}
# vim:set et sw=2 sts=2 tw=80:
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | MEDIUM | 2 |
| 2026-08-02 00:16:08 | MEDIUM | 2 |
| 2026-08-01 00:11:18 | MEDIUM | 2 |
| 2026-07-31 00:14:10 | MEDIUM | 2 |
| 2026-07-30 00:17:23 | MEDIUM | 2 |
| 2026-07-29 00:25:53 | MEDIUM | 2 |
| 2026-07-28 00:07:28 | MEDIUM | 2 |
| 2026-07-27 00:24:32 | MEDIUM | 2 |
| 2026-07-26 00:07:32 | MEDIUM | 2 |
| 2026-07-25 00:13:44 | MEDIUM | 2 |
| 2026-07-24 00:02:28 | MEDIUM | 2 |
| 2026-07-23 00:14:47 | MEDIUM | 2 |
| 2026-07-22 00:29:32 | MEDIUM | 2 |
| 2026-07-21 00:24:15 | MEDIUM | 2 |
| 2026-07-20 00:19:49 | MEDIUM | 2 |
| 2026-07-19 00:17:08 | MEDIUM | 2 |
| 2026-07-18 00:14:48 | MEDIUM | 2 |
| 2026-07-17 00:06:16 | MEDIUM | 2 |
| 2026-07-16 00:05:41 | MEDIUM | 2 |
| 2026-07-15 00:09:25 | MEDIUM | 2 |