securelink
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=("https://download-sdwan.wangsu.com/public/securelink/pkg/formal/COMMON/ubuntuX64/SecureLink-ubuntu-x64-${pkgver}-66.deb")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 70%): This package installs a prebuilt proprietary binary (a .deb) from a non-standard Wangsu CDN host (download-sdwan.wangsu.com) that is plausibly the vendor's own infrastructure, but the software is a closed-source Zero Trust/VPN client with privileged binaries (setuid chrome-sandbox, root-level daemon SecureLink_Client -install) that cannot be audited; the checksum is present so the specific artifact is pinned, but the host is not an official well-known release domain and the package has few votes, making supply-chain substitution a realistic concern.
PKGBUILD
1 offending line(s) highlighted# Maintainer: lingdianshiren <ldsrwu@foxmail.com>
pkgname=securelink
pkgver=3.8.13
pkgrel=1
pkgdesc="SecureLink client for Wangsu SDP / Zero Trust secure access (Ubuntu GUI version)"
arch=('x86_64')
url="https://www.wangsu.com/app/securelink"
license=('custom')
depends=('libnotify' 'libxtst' 'nss' 'dmidecode' 'mesa' 'libappindicator-gtk3')
options=('!strip')
install=securelink.install
source=("https://download-sdwan.wangsu.com/public/securelink/pkg/formal/COMMON/ubuntuX64/SecureLink-ubuntu-x64-${pkgver}-66.deb")
sha256sums=('5304f18254f6c46fb4e66cf61ed65b73d882d9b5530e4556016051e4df3959b8')
package() {
cd "$srcdir"
# Extract the Debian package
ar x "SecureLink-ubuntu-x64-${pkgver}-66.deb"
# Install payload into the package root
bsdtar -xf data.tar.xz -C "$pkgdir"
# The .deb ships some internal ELF executables without the executable bit,
# which causes SecureLink to report error 3313 ("SecureLink_Client blocked
# by security software") because the Electron shell cannot spawn them.
chmod 755 "$pkgdir/opt/SecureLink/resources/app.asar.unpacked/assets/app-ext/securelink_linux64/bin/SecureLink_Client"
chmod 755 "$pkgdir/opt/SecureLink/resources/app.asar.unpacked/assets/app-ext/securelink_linux64/bin/uninstall"
chmod 755 "$pkgdir/opt/SecureLink/resources/app.asar.unpacked/assets/app-ext/securelink_linux64/plugin/bin/SecureLink_Agent"
chmod 755 "$pkgdir/opt/SecureLink/resources/app.asar.unpacked/assets/app-ext/securelink_linux64/plugin/bin/SecureLink_Core"
chmod 755 "$pkgdir/opt/SecureLink/resources/app.asar.unpacked/assets/app-ext/securelink_linux64/plugin/bin/SecureLink_DP"
chmod 755 "$pkgdir/opt/SecureLink/resources/app.asar.unpacked/assets/app-ext/securelink_linux64/plugin/bin/SecureLink_Report_Tool"
chmod 755 "$pkgdir/opt/SecureLink/resources/app.asar.unpacked/assets/app-ext/securelink_linux64/plugin/bin/hwinfo"
# Electron's setuid sandbox helper must be owned by root and have the
# setuid bit set; otherwise the renderer/GPU sandbox cannot be created.
chmod 4755 "$pkgdir/opt/SecureLink/chrome-sandbox"
# Record the original package name so the install script can feed it to
# SecureLink_Client -install without hard-coding the version.
install -Dm644 /dev/stdin "$pkgdir/opt/SecureLink/.pkgmeta" <<EOF
DEB_NAME=SecureLink-ubuntu-x64-${pkgver}-66.deb
EOF
# The upstream service file contains shell-style quoting and redirection
# that systemd does not parse correctly, so install a corrected version.
install -Dm644 /dev/stdin "$pkgdir/usr/lib/systemd/system/securelink.service" <<'EOF'
[Unit]
Description=SecureLink Daemon
After=network.target
[Service]
Type=simple
Restart=on-failure
ExecStart=/opt/SecureLink/resources/app.asar.unpacked/assets/app-ext/securelink_linux64/bin/SecureLink_Client -d
ExecStop=/bin/kill -HUP $MAINPID
KillMode=process
[Install]
WantedBy=multi-user.target
EOF
# Create a convenience symlink in /usr/bin
install -dm755 "$pkgdir/usr/bin"
ln -s /opt/SecureLink/securelink "$pkgdir/usr/bin/securelink"
}
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 | 3 |
| 2026-07-17 00:06:16 | MEDIUM | 3 |
| 2026-07-16 00:05:41 | MEDIUM | 3 |
| 2026-07-15 00:09:25 | MEDIUM | 3 |