univpn

maintainer tsaitang · 0 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged The package downloads a prebuilt binary installer (a .run script containing a tar.gz payload) from download.leagsoft.com. This is the official distribution host for UniVPN by Leagsoft (联软科技), a Chinese enterprise security software vendor — leagsoft.com is their actual corporate domain, not a random personal host. The sha256sum is pinned, which mitigates silent substitution risk. However, the package installs a closed-source, prebuilt binary VPN client with no source available for inspection, and the wrapper script runs the binary via pkexec (root), meaning the binary executes with elevated privileges. The binary itself is opaque and from a Chinese enterprise vendor. This is a legitimate medium-risk concern: not because the host is unofficial (it is the vendor's own host), but because an unauditable prebuilt binary is installed and executed as root via pkexec. This is the standard medium-risk pattern for proprietary binary AUR packages.

Triggered rules

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:11 source=("https://download.leagsoft.com/download/UniVPN/linux/univpn-linux-64-${pkgver}.zip")
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The package downloads a prebuilt binary installer (a .run script containing a tar.gz payload) from download.leagsoft.com. This is the official distribution host for UniVPN by Leagsoft (联软科技), a Chinese enterprise security software vendor — leagsoft.com is their actual corporate domain, not a random personal host. The sha256sum is pinned, which mitigates silent substitution risk. However, the package installs a closed-source, prebuilt binary VPN client with no source available for inspection, and the wrapper script runs the binary via pkexec (root), meaning the binary executes with elevated privileges. The binary itself is opaque and from a Chinese enterprise vendor. This is a legitimate medium-risk concern: not because the host is unofficial (it is the vendor's own host), but because an unauditable prebuilt binary is installed and executed as root via pkexec. This is the standard medium-risk pattern for proprietary binary AUR packages.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Tsaitang <tsaitang404 at gmail dot com>
2pkgname=univpn
3pkgver=10781.18.1.0512
4pkgrel=10
5pkgdesc="企业级VPN客户端"
6arch=('x86_64')
7url="https://www.univpn.com/"
8license=('unknown')
9depends=('polkit')
10makedepends=('unzip')
11source=("https://download.leagsoft.com/download/UniVPN/linux/univpn-linux-64-${pkgver}.zip")
12noextract=("univpn-linux-64-${pkgver}.zip")
13sha256sums=('854708ffe5761af08d52f98e03996e47bacb4106dc2b6b041ef03b487626ce5e')
14
15prepare() {
16 cd "$srcdir" || return
17 unzip -qo "univpn-linux-64-${pkgver}.zip"
18
19 # 修补脚本中的 arch 命令,在 Arch Linux 中不存在,需要替换为 uname -m
20 sed -i 's/ARCH="`arch`"/ARCH="`uname -m`"/g' "univpn-linux-64-${pkgver}.run"
21
22 # 创建临时安装目录并运行安装脚本来提取文件
23 mkdir -p extract_temp
24 cd extract_temp || return
25
26 # 使用安装脚本的逻辑提取tar.gz文件
27 tail -n +258 "../univpn-linux-64-${pkgver}.run" > UniVPN.tar.gz
28
29 # 尝试解压
30 if ! tar -zxf UniVPN.tar.gz 2>/dev/null; then
31 # 如果是损坏的gzip,尝试直接作为tar文件
32 if ! tar -xf UniVPN.tar.gz 2>/dev/null; then
33 echo "Error: Cannot extract UniVPN archive"
34 return 1
35 fi
36 fi
37
38 # 回到源码目录
39 cd "$srcdir" || return
40}
41
42package() {
43 cd "$srcdir" || return
44
45 # 安装提取出的程序文件
46 if [ -d "extract_temp" ]; then
47 # 安装主程序目录到 /usr/local/UniVPN
48 install -dm755 "$pkgdir/usr/local/UniVPN"
49 cp -r extract_temp/* "$pkgdir/usr/local/UniVPN/"
50
51 # 确保主程序可执行
52 chmod 755 "$pkgdir/usr/local/UniVPN/UniVPN"
53
54 # 创建启动脚本到 /usr/bin,设置正确的库路径
55 install -dm755 "$pkgdir/usr/bin"
56 cat > "$pkgdir/usr/bin/univpn" << 'EOF'
57#!/bin/bash
58# 使用绝对路径执行程序,避免工作目录问题
59cd /usr/local/UniVPN
60exec pkexec bash -c "export DISPLAY='$DISPLAY'; export XAUTHORITY='$XAUTHORITY'; export LD_LIBRARY_PATH='/usr/local/UniVPN/lib:$LD_LIBRARY_PATH'; /usr/local/UniVPN/UniVPN \"\$@\"" _ "$@"
61
62EOF
63 chmod 755 "$pkgdir/usr/bin/univpn"
64 else
65 # 备用方案:执行安装脚本进行安装
66 echo "Warning: extract_temp not found, running installation script as fallback"
67
68 # 创建临时安装目录
69 mkdir -p "$pkgdir/usr/local"
70
71 # 执行安装脚本(以静默模式)
72 DESTDIR="$pkgdir/usr/local/UniVPN"
73 mkdir -p "$DESTDIR"
74
75 # 手动提取和安装,模拟安装脚本的行为
76 tail -n +258 "univpn-linux-64-${pkgver}.run" > UniVPN.tar.gz
77 tar -zxf UniVPN.tar.gz -C "$DESTDIR"
78 rm UniVPN.tar.gz
79
80 # 创建启动脚本
81 install -dm755 "$pkgdir/usr/bin"
82 cat > "$pkgdir/usr/bin/univpn" << 'EOF'
83#!/bin/bash
84# 使用绝对路径执行程序,避免工作目录问题
85cd /usr/local/UniVPN
86exec pkexec bash -c "export DISPLAY='$DISPLAY'; export XAUTHORITY='$XAUTHORITY'; export LD_LIBRARY_PATH='/usr/local/UniVPN/lib:$LD_LIBRARY_PATH'; /usr/local/UniVPN/UniVPN \"\$@\"" _ "$@"
87
88EOF
89 chmod 755 "$pkgdir/usr/bin/univpn"
90 fi
91
92 # 创建桌面文件
93 install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/univpn.desktop" << EOF
94[Desktop Entry]
95Name=UniVPN
96Comment=UniVPN 客户端
97Exec=univpn
98Icon=network-vpn
99Type=Application
100Categories=Network;
101EOF
102}
103

Scan history

Scanned at (UTC)SeverityRules
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 2
2026-07-17 00:06:16 MEDIUM 2
2026-07-16 00:05:41 MEDIUM 2
2026-07-15 00:09:25 MEDIUM 2

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion