deviceshelf-bin
The package downloads a prebuilt .deb from the official project's own domain (downloads.deviceshelf.app), which is plausibly controlled by the vendor; while the host is not on standard whitelists, it is not a third-party file-sharing service, and the binary is installed directly without obfuscation or additional payloads.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a prebuilt .deb from the official project's own domain (downloads.deviceshelf.app), which is plausibly controlled by the vendor; while the host is not on standard whitelists, it is not a third-party file-sharing service, and the binary is installed directly without obfuscation or additional payloads.
1 higher static finding superseded - not the current verdict (shown for transparency)
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=("${pkgname}-${pkgver}.deb::https://downloads.deviceshelf.app/DeviceShelf-${pkgver}.deb")
PKGBUILD
1 offending line(s) highlighted# Maintainer: Christof Müller <hello@deviceshelf.app>
pkgname=deviceshelf-bin
pkgver=1.9.34
pkgrel=1
pkgdesc="Local-first network scanner: discover and identify every device on your LAN, with open ports and a security report"
arch=('x86_64')
url="https://deviceshelf.app"
# Proprietary, paid software with a 7-day trial. The terms live on the website;
# the package ships no licence file of its own, so LicenseRef- it is.
license=('LicenseRef-DeviceShelf')
# Matches the Depends line of the upstream .deb: gtk3, webkit2gtk-4.1, libpcap.
# libpcap is not optional — the binary links wpcap/libpcap at load time.
depends=('gtk3' 'webkit2gtk-4.1' 'libpcap')
provides=('deviceshelf')
conflicts=('deviceshelf')
options=('!strip' '!debug')
source=("${pkgname}-${pkgver}.deb::https://downloads.deviceshelf.app/DeviceShelf-${pkgver}.deb")
sha256sums=('86aef72cb7dbade6a8880455b26004d78f65c2e16e8557627440736498a7b923')
package() {
# The .deb already follows the FHS: /usr/bin/deviceshelf, a .desktop entry and
# a 512px hicolor icon. Unpacking data.tar.gz straight into $pkgdir is enough.
bsdtar -xf data.tar.gz -C "$pkgdir"
# Upstream puts its README under /usr/share/doc/deviceshelf; keep it, and add
# a licence pointer where pacman users look for one.
install -d "$pkgdir/usr/share/licenses/$pkgname"
ln -s /usr/share/doc/deviceshelf/README "$pkgdir/usr/share/licenses/$pkgname/README"
}
Changes since previous scan
--- PKGBUILD @ 2026-09-12 00:25+++ PKGBUILD @ 2026-09-17 00:27@@ -1,6 +1,6 @@ # Maintainer: Christof Müller <hello@deviceshelf.app> pkgname=deviceshelf-bin-pkgver=1.7.7+pkgver=1.9.34 pkgrel=1 pkgdesc="Local-first network scanner: discover and identify every device on your LAN, with open ports and a security report" arch=('x86_64')@@ -15,7 +15,7 @@ conflicts=('deviceshelf') options=('!strip' '!debug') source=("${pkgname}-${pkgver}.deb::https://downloads.deviceshelf.app/DeviceShelf-${pkgver}.deb")-sha256sums=('b1982c5285c0df29622529552f2aeadfd6c6ca1aea781b71fee99d1a4440db78')+sha256sums=('86aef72cb7dbade6a8880455b26004d78f65c2e16e8557627440736498a7b923') package() { # The .deb already follows the FHS: /usr/bin/deviceshelf, a .desktop entry andScan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Low | 2 |
| 2026-09-16 00:03:17 | Low | 2 |
| 2026-09-15 00:25:31 | Low | 2 |
| 2026-09-14 00:27:57 | Low | 2 |
| 2026-09-13 00:19:54 | Low | 2 |
| 2026-09-12 21:12:39 | Medium | 1 |
| 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 00:18:08 | Low | 2 |
| 2026-09-07 00:30:15 | Low | 2 |
| 2026-09-06 00:17:06 | Low | 2 |
| 2026-09-05 00:16:27 | Low | 2 |
| 2026-09-04 00:03:13 | Low | 2 |
| 2026-09-03 00:15:47 | Low | 2 |
| 2026-09-02 00:02:31 | Low | 2 |
| 2026-09-01 00:11:19 | Low | 2 |
| 2026-08-31 00:19:57 | Low | 2 |
| 2026-08-30 00:04:14 | Low | 2 |