nrf-sniffer-ble
The package downloads a source archive from a non-whitelisted but official Nordic Semiconductor Azure blob storage host, which is plausibly the project's own; the content is firmware, Python scripts, and a shell wrapper for Wireshark, all used as intended by the project, with no obfuscated or unverifiable executable payloads.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a source archive from a non-whitelisted but official Nordic Semiconductor Azure blob storage host, which is plausibly the project's own; the content is firmware, Python scripts, and a shell wrapper for Wireshark, all used as intended by the project, with no obfuscated or unverifiable executable 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:18
source=("https://nsscprodmedia.blob.core.windows.net/prod/software-and-other-downloads/desktop-software/nrf-sniffer/sw/nrf_sniffer_for_bluetooth_le_${pkgver}.zip"
PKGBUILD
1 offending line(s) highlighted# Maintainer: Szabolcs Sipos <archur [at] balfug [dot] com>
# based on nrf5x-sniffer by GI_Jack
pkgname=nrf-sniffer-ble
pkgdesc="nRF Sniffer for Bluetooth LE - firmware, SnifferAPI and Wireshark plugin"
pkgver=4.1.1
pkgrel=6
arch=('any')
url="https://www.nordicsemi.com/Products/Development-tools/nRF-Sniffer-for-Bluetooth-LE"
depends=('python' 'python-pyserial' 'wireshark-cli>=4.6.5' )
optdepends=('nrf5x-command-line-tools: for flashing the firmware'
'nrfconnect-appimage: for flashing the firmware'
'nrf-udev'
)
install="${pkgname}.install"
license=(custom)
options=(!strip)
source=("https://nsscprodmedia.blob.core.windows.net/prod/software-and-other-downloads/desktop-software/nrf-sniffer/sw/nrf_sniffer_for_bluetooth_le_${pkgver}.zip"
'nrf_sniffer_ble.sh'
'0001-drop-Filelock-use.patch'
'0002-string-escape-fix.patch'
)
sha256sums=('26502447742346cd0b0c597564b12a621859ffd4ad05c029069c4fa22deddd40'
'SKIP'
'SKIP'
'SKIP'
)
package() {
cd "${srcdir}"
patch -p1 -i 0001-drop-Filelock-use.patch
patch -p1 -i 0002-string-escape-fix.patch
# License and release notes
install -Dm644 LICENSE.txt "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
install -Dm644 release_notes.txt -t "${pkgdir}/usr/share/${pkgname}/"
# Firmware
install -Dm644 hex/* -t "${pkgdir}/usr/share/${pkgname}/firmware"
# extcap and SnifferAPI
install -Dm655 extcap/nrf_sniffer_ble.py -t "${pkgdir}/usr/lib/${pkgname}/extcap/"
mkdir -p "${pkgdir}/usr/lib/${pkgname}/pymodule"
cp -r extcap/SnifferAPI "${pkgdir}/usr/lib/${pkgname}/pymodule"
# Wireshark plugin
install -Dm755 nrf_sniffer_ble.sh -t "${pkgdir}/usr/lib/wireshark/extcap/"
}
Scan 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 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 |
| 2026-08-29 00:29:17 | Low | 2 |