circuitjs-bin
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:17
source=("https://www.falstad.com/circuit/offline/circuitjs1-linux64.tgz" -
PKGBUILD:18
https://i.postimg.cc/Y0ZkBmDV/circuitjs.png
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD installs a prebuilt binary tarball (circuitjs1-linux64.tgz) from www.falstad.com, which is the official upstream vendor site for the Falstad Circuit Simulator — this is legitimate. However, two concerns remain: (1) The main binary source uses 'SKIP' for its sha256sum, meaning there is no integrity verification of the executed binary at all; if the upstream host is compromised or the file is swapped, there is no detection mechanism. (2) The icon is fetched from postimg.cc, a third-party image hosting service with no integrity guarantee beyond its sha256sum. The combination of an unverified prebuilt binary (SKIP checksum) installed to /opt and symlinked into /usr/bin constitutes a real supply-chain risk — not because the current content is malicious, but because the missing checksum means any future substitution of the binary would go undetected. This warrants a medium rating.
PKGBUILD
2 offending line(s) highlighted# Maintainer: Ali Najafian <AliNajafian81@gmail.com>
pkgname=circuitjs-bin
pkgver=2.7.1
pkgrel=1
pkgdesc="Falstad Circuit Simulator for Linux. (Real and offline version)"
arch=(x86_64)
url="https://www.falstad.com/circuit/"
license=('GPL')
depends=()
makedepends=()
checkdepends=()
optdepends=()
provides=(circuitjs-bin)
conflicts=(circuitjs-bin)
options=(!strip)
source=("https://www.falstad.com/circuit/offline/circuitjs1-linux64.tgz"
https://i.postimg.cc/Y0ZkBmDV/circuitjs.png
circuitjs.desktop)
sha256sums=('SKIP' 'b3ed46fb30478e7207a557658226be18ae1edacd1ee784cb2089e6eaa9a13716' 'e9cb7b4b74ff97f4a5da500bb7217d2796bbe21f2ed62508b391275adb1e3a14')
package()
{
cd $srcdir/circuitjs1
echo packaging ${pkgname}
install -d $pkgdir/opt/circuitjs/
install -d ${pkgdir}/usr/bin
cp -R "${srcdir}/circuitjs1/." "${pkgdir}/opt/circuitjs/"
# create symlink from real opt to bin
ln -s /opt/circuitjs/circuitjs1 "${pkgdir}"/usr/bin/circuitjs
#integrate the desktop file
install -d ${pkgdir}/usr/share/applications/
install -m644 ${srcdir}/circuitjs.desktop ${pkgdir}/usr/share/applications/circuitjs.desktop
#integrate icons...
for res in 32 48 64 128 192 256 512; do
install -d $pkgdir/usr/share/icons/hicolor/${res}x${res}/apps
install -m644 ${srcdir}/circuitjs.png $pkgdir/usr/share/icons/hicolor/${res}x${res}/apps/circuitjs.png
done
echo done!
}
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 |