necta-wifi-mouse
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:12
source_x86_64=("mouseserver.deb::http://wifimouse.necta.us/apk/mouseserver-64.deb")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): This PKGBUILD downloads prebuilt binary .deb packages from wifimouse.necta.us (the official vendor site for the WiFi Mouse product, matching the pkgurl), extracts them, and installs the compiled binary 'mouseserver' directly onto the system. The host is the upstream vendor's own domain, not a random personal host, which reduces but does not eliminate supply-chain risk. Key concerns: (1) binaries are downloaded over plain HTTP with only MD5 checksums (no HTTPS, no stronger hash like SHA256/SHA512), meaning the download is vulnerable to MITM substitution and the integrity check is weak; (2) a prebuilt closed-source binary is being executed — despite the license claiming GPL2, there is no source build, which is suspicious; (3) the prepare() function attempts to extract data.tar.gz but there is no ar extraction step to unpack the .deb first, making this likely broken in practice. The combination of HTTP-only delivery, weak MD5 integrity, and direct execution of a prebuilt binary from a vendor host constitutes a genuine medium supply-chain concern, consistent with the cheaper model's assessment.
PKGBUILD
1 offending line(s) highlighted# Contributer: Julian Daube <joposter (at) gmail (dot) com>
pkgname=necta-wifi-mouse
pkgdesc="wifi mouse for android (server part)"
pkgver=1.0.2
pkgrel=1
arch=("x86_64" "i686")
url=http://wifimouse.necta.us/
license=("GPL2")
source=("icon.png")
source_x86_64=("mouseserver.deb::http://wifimouse.necta.us/apk/mouseserver-64.deb")
source_i686=("mouseserver.deb::http://wifimouse.necta.us/apk/mouseserver-32.deb")
depends=()
makedepends=("sed" "tar")
prepare() {
# extract data portion of deb file
tar -xf "$srcdir/data.tar.gz"
}
package() {
# create destination directories
mkdir -p "$pkgdir/usr/bin"
mkdir -p "$pkgdir/usr/share/applications"
mkdir -p "$pkgdir/usr/share/mouseserver/icons"
mkdir -p "$pkgdir/usr/share/icons/hicolor/128x128/apps/"
# install files
install -m 775 "$srcdir/usr/sbin/mouseserver" "$pkgdir/usr/bin"
install -m 664 "$srcdir/usr/share/applications/mouseserver.desktop" "$pkgdir/usr/share/applications/mouseserver.desktop"
install -m 664 "$srcdir/icon.png" "$pkgdir/usr/share/icons/hicolor/128x128/apps/mouseserver.png"
install -m 644 -D "$srcdir/usr/share/mouseserver/icons/"* "$pkgdir/usr/share/mouseserver/icons"
# modify desktop file
desktopfile="$pkgdir/usr/share/applications/mouseserver.desktop"
sed -i 's/Exec=.*$/Exec=\/usr\/bin\/mouseserver/' "$desktopfile"
sed -i 's/Icon=.*$/Icon=\/usr\/share\/icons\/hicolor\/128x128\/apps\/mouseserver.png/' "$desktopfile"
}
md5sums=('671cbe35275357e3a42aa118a7e35a8f')
md5sums_x86_64=('2db5e825e61be4c3d8f391e978b75cd3')
md5sums_i686=('125a616a9af78a9a6552ec49e8f32571')
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 |