netextender
The package downloads prebuilt binaries from SonicWall's official software domain, which is the legitimate vendor; despite the static analyzer flag for a non-standard host, the source is trustworthy and the binaries are expected for this proprietary software.
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 prebuilt binaries from SonicWall's official software domain, which is the legitimate vendor; despite the static analyzer flag for a non-standard host, the source is trustworthy and the binaries are expected for this proprietary software.
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:33
"https://software.sonicwall.com/NetExtender/NetExtender-linux-arm64-${pkgver/_/-}.tar.gz" -
PKGBUILD:34
"https://www.sonicwall.com/legal/general-product-agreement"
PKGBUILD
2 offending line(s) highlighted# Maintainer: Sato Ki <satoki at em dot advant dot click>
# Contributor: techge
# Contributor: physkets
# Contributor: Andrew Crouthamel
# Contributor: Liviu Cristian Mirea-Ghiban
# Contributor: Lars Øyvind Hagland
# Contributor: Vishnu V K
# Contributor: George Shammas
# Contributor: Ainola
# Contributor: Jeff Sharpe
# Contributor: Roman Pearah
pkgname=netextender
pkgver=10.3.6_39
pkgrel=2
pkgdesc="SonicWALL SSL VPN Client"
arch=('aarch64' 'x86_64')
url="https://www.sonicwall.com/en-us/products/remote-access/vpn-client"
license=('LicenseRef-SonicWall-General-Product-Agreement')
depends=('bash'
'net-tools'
'webkit2gtk-4.1'
'resolvconf'
'iproute2'
'hicolor-icon-theme')
optdepends=('xdg-utils: open the browser for SAML/external authentication'
'bind: nslookup in the Diagnostics tab'
'traceroute: traceroute in the Diagnostics tab'
'iperf3: throughput test in the Diagnostics tab'
'nftables: firewall rules for WireGuard tunnel-all mode'
'iptables: firewall rules for WireGuard tunnel-all mode, if nft is absent')
source_aarch64=(
"https://software.sonicwall.com/NetExtender/NetExtender-linux-arm64-${pkgver/_/-}.tar.gz"
"https://www.sonicwall.com/legal/general-product-agreement"
"com.sonicwall.NetExtender.desktop.patch"
"NEService.service.patch"
"neservice.patch"
"netextender.install"
"resolvconf-shim"
)
source_x86_64=(
"https://software.sonicwall.com/NetExtender/NetExtender-linux-amd64-${pkgver/_/-}.tar.gz"
"https://www.sonicwall.com/legal/general-product-agreement"
"com.sonicwall.NetExtender.desktop.patch"
"NEService.service.patch"
"neservice.patch"
"netextender.install"
"resolvconf-shim"
)
sha256sums_aarch64=(
"4e9d35d4b28cc175260689661f0ed25b8068bfda27563a2f0ce04c16d38ef5d9"
"SKIP"
"1c591a89e1b13112b51fe1bb9f0c0b4969530a3b7fd4949df1650365c39350d1"
"8f77c91234de54578743f8b57395785c7d6852fb4c7f5d452e6321ba3744ebde"
"7c64cd38edb35aaf601fc01b9982fffc42542917832f9155c8ccf6605331ce9d"
"6972d594eec5a0d8c884f960360cebcf44e900cd20705a07de78c23127a92d68"
"331d4ef801d0d72a760ff5438098a3b61dfb92a5a76d17c973dbfa8eb2cf1c5d"
)
sha256sums_x86_64=(
"c2cb58cc39402ec5e08a18b57a73ff10ca313017ace06ea7bf04d9388c1b8357"
"SKIP"
"1c591a89e1b13112b51fe1bb9f0c0b4969530a3b7fd4949df1650365c39350d1"
"8f77c91234de54578743f8b57395785c7d6852fb4c7f5d452e6321ba3744ebde"
"7c64cd38edb35aaf601fc01b9982fffc42542917832f9155c8ccf6605331ce9d"
"6972d594eec5a0d8c884f960360cebcf44e900cd20705a07de78c23127a92d68"
"331d4ef801d0d72a760ff5438098a3b61dfb92a5a76d17c973dbfa8eb2cf1c5d"
)
install="${pkgname}.install"
DLAGENTS=("https::/usr/bin/curl -A 'Mozilla' -fLC - --retry 3 --retry-delay 3 -o %o %u")
package() {
install -Dm 644 general-product-agreement "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
cd "netextender"
netextenderdir="${pkgdir}/opt/netextender"
install -Dm 755 wg "${netextenderdir}/wg"
install -Dm 755 wg-quick "${netextenderdir}/wg-quick"
install -Dm 755 wireguard-go "${netextenderdir}/wireguard-go"
install -Dm 755 NEService "${netextenderdir}/NEService"
install -Dm 755 NetExtender_webkit2_41 "${netextenderdir}/NetExtender"
#install -Dm 755 autoUpgrader_webkit2_41 "${netextenderdir}/autoUpgrader"
install -Dm 755 nxcli "${netextenderdir}/nxcli"
#install -Dm 755 upgrade.sh "${netextenderdir}/upgrade.sh"
patch "${srcdir}/netextender/NEService.service" < "${srcdir}/NEService.service.patch"
patch "${srcdir}/netextender/neservice" < "${srcdir}/neservice.patch"
install -Dm 644 NEService.service "${netextenderdir}/NEService.service"
install -Dm 644 neservice "${netextenderdir}/neservice"
# NEService 10.3.6 replaced its resolvectl fallback with a probe that only
# accepts resolvconf if "resolvconf --version" mentions openresolv.
# systemd-resolvconf reports "systemd NNN", so the probe fails and the tunnel
# comes up with no DNS servers, search domains or default route on the link.
# The shim corrects only that banner; NEService.service puts it first on PATH.
install -Dm 755 "${srcdir}/resolvconf-shim" "${netextenderdir}/bin/resolvconf"
mkdir -p "${netextenderdir}/locales"
install -Dm 644 locales/* "${netextenderdir}/locales"
patch "${srcdir}/netextender/com.sonicwall.NetExtender.desktop" < "${srcdir}/com.sonicwall.NetExtender.desktop.patch"
install -Dm 644 com.sonicwall.NetExtender.desktop "${netextenderdir}/com.sonicwall.NetExtender.desktop"
# The GTK window sets its Wayland app_id from argv[0], i.e. "NetExtender".
# KWin only finds a window's icon through a desktop file named after the
# app_id, so the entry must be installed as NetExtender.desktop.
install -Dm 644 com.sonicwall.NetExtender.desktop "${pkgdir}/usr/share/applications/NetExtender.desktop"
install -Dm 644 nx-icon.png "${netextenderdir}/nx-icon.png"
install -Dm 644 nx-icon.png "${pkgdir}/usr/share/icons/hicolor/128x128/apps/netextender.png"
mkdir -p "${pkgdir}/usr/bin"
ln -s /opt/netextender/nxcli "${pkgdir}/usr/bin/netExtender"
ln -s /opt/netextender/nxcli "${pkgdir}/usr/bin/nxcli"
# Unconditional: probing the build host's PID 1 makes the package depend on
# where it was built, and yields no unit at all inside a clean chroot.
# /etc/systemd/system belongs to the sysadmin, packages ship units in /usr/lib.
# OpenRC users can install /opt/netextender/neservice into /etc/init.d.
install -Dm 644 NEService.service "${pkgdir}/usr/lib/systemd/system/NEService.service"
install -dm 755 "${netextenderdir}" \
"${netextenderdir}/bin" \
"${netextenderdir}/locales"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |
| 2026-10-14 00:06:47 | Low | 2 |
| 2026-10-13 00:23:45 | Low | 2 |
| 2026-10-12 00:18:51 | Low | 2 |
| 2026-10-11 00:26:05 | Low | 2 |
| 2026-10-10 00:11:52 | Low | 2 |
| 2026-10-09 00:05:33 | Low | 2 |
| 2026-10-08 00:28:03 | Low | 2 |
| 2026-10-07 00:21:34 | Low | 2 |
| 2026-10-06 00:13:36 | Low | 2 |
| 2026-10-05 00:08:03 | Low | 2 |
| 2026-10-04 00:18:08 | Low | 2 |
| 2026-10-03 00:23:04 | Low | 2 |
| 2026-10-02 00:00:32 | Low | 2 |
| 2026-10-01 00:02:06 | Low | 2 |
| 2026-09-30 00:20:07 | Low | 2 |
| 2026-09-29 00:07:46 | Low | 2 |
| 2026-09-28 00:28:32 | Low | 2 |