circuitjs-bin
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.
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-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 00:27:57 | Medium | 2 |
| 2026-09-13 00:19:54 | Medium | 2 |
| 2026-09-12 00:25:17 | Medium | 2 |
| 2026-09-11 00:19:22 | Medium | 2 |
| 2026-09-10 00:22:44 | Medium | 2 |
| 2026-09-09 00:04:09 | Medium | 2 |
| 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 00:03:13 | Medium | 2 |
| 2026-09-03 00:15:47 | Medium | 2 |
| 2026-09-02 00:02:31 | Medium | 2 |
| 2026-09-01 00:11:19 | Medium | 2 |
| 2026-08-31 00:19:57 | Medium | 2 |
| 2026-08-30 00:04:14 | Medium | 2 |
| 2026-08-29 00:29:17 | Medium | 2 |