qianxin-vpn-bin
maintainer yangzhe
· 0 votes
· scanned 2026-08-03 00:08:14.047287
LOW
View on AUR ↗
Why flagged
The package downloads a self-extracting archive from the vendor's official domain (qianxin.com) to extract and install a proprietary VPN client;虽非标准源但来源可信,无代码执行或隐蔽 payload, worst case is supply chain compromise of official vendor release.
Triggered rules
LOW
AI review downgraded a static finding
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 self-extracting archive from the vendor's official domain (qianxin.com) to extract and install a proprietary VPN client;虽非标准源但来源可信,无代码执行或隐蔽 payload, worst case is supply chain compromise of official vendor release.
1 higher static finding superseded - not the current verdict (shown for transparency)
MEDIUM
source=() URL on a non-standard host
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:25
"https://appstore.qianxin.com/file/download/1276"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: yangzhe <2217332562@qq.com>
2
_appname='vpnclient'
3
_pkgname='qianxin-vpn-bin'
4
pkgname="${_pkgname}"
5
pkgver=1.2.1
6
pkgrel=1
7
pkgdesc="奇安信VPN客户端"
8
arch=('x86_64')
9
url="https://www.qianxin.com/"
10
license=('proprietary')
11
conflicts=("${pkgname}" "${_pkgname}")
12
depends=(
13
'qt5-base'
14
'qt5-svg'
15
'qt5-multimedia'
16
'krb5'
17
'openssl'
18
'libcurl-compat'
19
'libglvnd'
20
'glibc'
21
'net-tools'
22
)
23
backup=('etc/vpn_client/Info.plist')
24
source=(
25
"https://appstore.qianxin.com/file/download/1276"
26
)
27
sha256sums=('96c591154e555afaef0f37d227b3a333b5a6181c9b010ed2142ac369ec815609')
28
29
prepare() {
30
# Downloaded file is a self-extracting archive containing the deb
31
# First extract the inner deb from the archive
32
if [ -f "${srcdir}/1276" ]; then
33
bsdtar -xf "${srcdir}/1276" -C "${srcdir}"
34
mv "${srcdir}/vpn-client-amd64-463/vpn-client-amd64-463.deb" "${srcdir}/"
35
fi
36
37
# Extract deb package data
38
bsdtar -xf "${srcdir}/"*.deb
39
bsdtar -xf "${srcdir}/data.tar.xz"
40
}
41
42
package() {
43
_libdir="${pkgdir}/usr/lib/${pkgname}"
44
_bindir="${_libdir}/sbin"
45
46
# Install library files
47
install -Dm755 -d "${_libdir}"
48
cp -Pr --no-preserve=ownership "${srcdir}/usr/lib/"* "${_libdir}/"
49
50
# Install binary files to /usr/lib/vpn-client/sbin (avoid /usr/sbin conflict)
51
install -Dm755 -d "${_bindir}"
52
cp -Pr --no-preserve=ownership "${srcdir}/usr/sbin/"* "${_bindir}/"
53
54
# Install vpnclient files
55
install -Dm755 -d "${_libdir}"
56
cp -Pr --no-preserve=ownership "${srcdir}/usr/${_appname}/"* "${_libdir}/"
57
58
# Create symlinks for binaries in /usr/bin
59
install -Dm755 -d "${pkgdir}/usr/bin"
60
ln -s "/usr/lib/${pkgname}/sbin/vpnservice" "${pkgdir}/usr/bin/vpnservice"
61
ln -s "/usr/lib/${pkgname}/sbin/vpncore" "${pkgdir}/usr/bin/vpncore"
62
ln -s "/usr/lib/${pkgname}/sbin/sts" "${pkgdir}/usr/bin/sts"
63
ln -s "/usr/lib/${pkgname}/sbin/vpn_gui/QianxinVPN" "${pkgdir}/usr/bin/QianxinVPN"
64
65
# Install config file
66
install -Dm644 "${srcdir}/etc/vpn_client/Info.plist" "${pkgdir}/etc/vpn_client/Info.plist"
67
68
# Install systemd service
69
install -Dm644 <(cat << 'EOF'
70
[Unit]
71
Description=Qianxin VPN Client Service
72
After=network.target
73
74
[Service]
75
Type=simple
76
ExecStart=/usr/bin/vpnservice
77
Restart=on-failure
78
RestartSec=5
79
80
[Install]
81
WantedBy=multi-user.target
82
EOF
83
) "${pkgdir}/usr/lib/systemd/system/${pkgname}.service"
84
85
# Install desktop entry
86
install -Dm644 "${_libdir}/vpnclient.desktop" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
87
sed -i "s|Exec=sh /usr/vpnclient/gui_start.sh|Exec=/usr/bin/QianxinVPN|g" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
88
sed -i "s|Icon=/usr/vpnclient/vpnclient.png|Icon=/usr/lib/${pkgname}/vpnclient.png|g" "${pkgdir}/usr/share/applications/${pkgname}.desktop"
89
90
# Install ld.so.conf config
91
install -Dm644 "${_libdir}/vpn_gui_lib.conf" "${pkgdir}/etc/ld.so.conf.d/${pkgname}.conf"
92
}
93
94
post_install() {
95
ldconfig
96
systemctl enable "${pkgname}.service" 2>/dev/null || true
97
systemctl start "${pkgname}.service" 2>/dev/null || true
98
}
99
100
post_upgrade() {
101
post_install
102
}
103
104
pre_remove() {
105
systemctl stop "${pkgname}.service" 2>/dev/null || true
106
systemctl disable "${pkgname}.service" 2>/dev/null || true
107
}
108
109
post_remove() {
110
rm -f "${pkgdir}/etc/ld.so.conf.d/${pkgname}.conf"
111
ldconfig
112
}
113
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 2 |
| 2026-08-02 00:16:08 | LOW | 2 |
| 2026-08-01 00:11:18 | LOW | 2 |
| 2026-07-31 00:14:10 | LOW | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 00:02:28 | LOW | 2 |
| 2026-07-23 00:14:47 | LOW | 2 |
| 2026-07-22 00:29:32 | LOW | 2 |
| 2026-07-21 00:24:15 | LOW | 2 |
| 2026-07-20 00:19:49 | LOW | 2 |
| 2026-07-19 00:17:08 | LOW | 2 |
| 2026-07-18 00:14:48 | LOW | 2 |
| 2026-07-17 00:06:16 | LOW | 2 |
| 2026-07-16 00:05:41 | LOW | 2 |
| 2026-07-15 00:09:25 | LOW | 2 |