steamcommunity302

maintainer lingdianshiren · 2 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged This PKGBUILD downloads and installs prebuilt ELF binaries (x86_64 and aarch64) from dogfight360.com, a personal/unofficial blog/WordPress site operated by a Chinese developer known as '羽翼城'. The tool is a reverse-proxy accelerator for Steam/GitHub that requires root privileges (uses sudo, modifies DNS/netfilter via iptables/nftables). The binaries are installed to /opt and a wrapper script is placed in /usr/bin. The checksums are MD5 only (weak, but present). The host is not a recognized software distribution platform — it is a personal WordPress blog. The binary runs as root and manipulates network traffic (libnetfilter_queue, DNS redirection), making any compromise of the upstream host or binary substitution a high-impact event. The PKGBUILD itself is well-structured and the prepare() logic is transparent, but the core risk is the prebuilt closed-source binary from an unofficial personal host with root-level network access. This is a genuine medium supply-chain concern: not clearly malicious, but the combination of unofficial host + prebuilt binary + root execution + network interception capability is a real risk.

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:33 "https://www.dogfight360.com/blog/wp-content/uploads/${pkgdate}/steamcommunity_302_Linux_AMD64_V${pkgver}.tar.gz"
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): This PKGBUILD downloads and installs prebuilt ELF binaries (x86_64 and aarch64) from dogfight360.com, a personal/unofficial blog/WordPress site operated by a Chinese developer known as '羽翼城'. The tool is a reverse-proxy accelerator for Steam/GitHub that requires root privileges (uses sudo, modifies DNS/netfilter via iptables/nftables). The binaries are installed to /opt and a wrapper script is placed in /usr/bin. The checksums are MD5 only (weak, but present). The host is not a recognized software distribution platform — it is a personal WordPress blog. The binary runs as root and manipulates network traffic (libnetfilter_queue, DNS redirection), making any compromise of the upstream host or binary substitution a high-impact event. The PKGBUILD itself is well-structured and the prepare() logic is transparent, but the core risk is the prebuilt closed-source binary from an unofficial personal host with root-level network access. This is a genuine medium supply-chain concern: not clearly malicious, but the combination of unofficial host + prebuilt binary + root execution + network interception capability is a real risk.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: lingdianshiren <ldsrwu@foxmail.com>
2pkgname=steamcommunity302
3pkgver=14.0.02
4pkgdate=2026/02
5pkgrel=5
6#epoch=
7pkgdesc="羽翼城制作的Steam、Github等反代加速工具,使用s302命令启动"
8url="https://www.dogfight360.com/blog/18682/"
9arch=('x86_64' 'aarch64')
10license=('CC-BY-NC-4.0')
11optdepends=(
12 # 图形化提权(任选其一)
13 'zenity: graphical password prompt — GTK alternative'
14 'kdialog: graphical password prompt — KDE alternative'
15 'polkit: pkexec graphical privilege elevation — alternative to zenity/kdialog'
16
17 # 终端回退(任选其一)
18 'gnome-terminal: terminal fallback — GNOME'
19 'konsole: terminal fallback — KDE Plasma'
20 'xfce4-terminal: terminal fallback — XFCE'
21 'mate-terminal: terminal fallback — MATE'
22 'lxterminal: terminal fallback — LXDE'
23 'xterm: terminal fallback — minimal / universal'
24
25 # Netfilter/DNS 重定向后端(任选其一)
26 'iptables: Netfilter backend for DNS redirection'
27 'nftables: Netfilter backend for DNS redirection'
28 'firewalld: Netfilter backend for DNS redirection'
29 'ufw: Netfilter backend for DNS redirection'
30)
31depends=('nss' 'libnetfilter_queue' 'gtk3' 'glibc' 'gcc-libs' 'zlib' 'sudo' 'xorg-xhost')
32source_x86_64=(
33 "https://www.dogfight360.com/blog/wp-content/uploads/${pkgdate}/steamcommunity_302_Linux_AMD64_V${pkgver}.tar.gz"
34)
35source_aarch64=(
36 "https://www.dogfight360.com/blog/wp-content/uploads/${pkgdate}/steamcommunity_302_Linux_ARM64_V${pkgver}.tar.gz"
37)
38md5sums_x86_64=('4b9994102b2256ca5fdf2e806a2c7035')
39md5sums_aarch64=('6b19edfc3a24c1b43024bb569da9cf5e')
40options=(!strip)
41
42_install_dir="/opt/steamcommunity302"
43
44prepare() {
45 local _root="${srcdir}/Steamcommunity_302"
46 local _launcher="${_root}/.launcher/launcher_启动器.sh"
47 local _setup="${_root}/.launcher/setup_desktop_生成桌面快捷方式.sh"
48 local _icon="${_root}/.launcher/302_icon.ico"
49 local _main="${_root}/Steamcommunity_302"
50
51 # 校验关键文件存在(结构变更立即报错)
52 for f in "${_launcher}" "${_setup}" "${_icon}" "${_main}"; do
53 [ -e "$f" ] || { msg2 "ERROR: 上游缺失关键文件: $f"; return 1; }
54 done
55
56 # 校验 launcher 路径计算模式仍命中(模式失效时人工介入,避免静默坏包)
57 if ! grep -q 'LAUNCHER_DIR=.*dirname.*\$0' "${_launcher}"; then
58 msg2 "ERROR: 上游 launcher 路径计算方式已变,请同步更新 sed 规则"
59 return 1
60 fi
61
62 # --- 1. 派生 s302 ---
63 # 把上游 launcher 的动态路径探测替换为硬编码,保留所有提权逻辑
64 # 同时删除运行时 chmod(普通用户无权修改 /opt 下文件)并注入 xhost 配置
65 sed -E \
66 -e 's|^[[:space:]]*LAUNCHER_DIR=.*|LAUNCHER_DIR="'"${_install_dir}"'/.launcher"|' \
67 -e 's|^[[:space:]]*SCRIPT_DIR=.*|SCRIPT_DIR="'"${_install_dir}"'"|' \
68 -e '/^[[:space:]]*chmod \+x/d' \
69 "${_launcher}" > "${srcdir}/s302"
70
71 # 在主程序检查前注入 xhost 配置(解决 root 无法连接 X11 的问题)
72 sed -i '/^# 检查主程序/i\
73# xhost 配置(允许 root 访问当前用户 X11 会话)\
74if command -v xhost >/dev/null 2>&1; then\
75 xhost +SI:localuser:root >/dev/null 2>&1 || true\
76fi\
77' "${srcdir}/s302"
78 chmod +x "${srcdir}/s302"
79
80 # --- 2. 派生 .desktop ---
81 # 执行上游脚本生成 .desktop(复用其字段内容),再修正 Exec/Icon 路径
82 local _setup_out
83 if ! _setup_out=$(bash "${_setup}" 2>&1); then
84 msg2 "ERROR: 上游 setup_desktop 执行失败:"
85 msg2 "$_setup_out"
86 return 1
87 fi
88
89 local _src_desktop="${_root}/Steamcommunity_302.desktop"
90 [ -f "${_src_desktop}" ] || { msg2 "ERROR: 上游未生成 .desktop"; return 1; }
91
92 sed -E \
93 -e 's|^[[:space:]]*Exec=.*|Exec=/usr/bin/s302|' \
94 -e 's|^[[:space:]]*Icon=.*|Icon=/usr/share/pixmaps/steamcommunity302.ico|' \
95 "${_src_desktop}" > "${srcdir}/steamcommunity302.desktop"
96 rm -f "${_src_desktop}"
97
98 # --- 3. 派生图标(复用上游 .ico) ---
99 cp "${_icon}" "${srcdir}/steamcommunity302.ico"
100
101 # --- 4. 在 prepare 中统一设置权限(避开 fakeroot 中 file 命令崩溃) ---
102 find "$_root" -type f -print0 | while IFS= read -r -d '' f; do
103 local ft=$(file -b "$f" 2>/dev/null)
104 if echo "$ft" | grep -q 'ELF.*\(executable\|shared object\)'; then
105 chmod 755 "$f"
106 elif echo "$ft" | grep -q 'shell script'; then
107 chmod 755 "$f"
108 else
109 chmod 644 "$f"
110 fi
111 done
112}
113
114package() {
115 local _src="${srcdir}/Steamcommunity_302"
116 local _f _rel _dst
117
118 # 递归安装所有文件
119 # 权限由 prepare() 中 file 检测后 chmod 设置,此处用 -x 判断即可(避开 fakeroot 中 file 崩溃)
120 while IFS= read -r -d '' _f; do
121 _rel="${_f#${_src}/}"
122
123 # 跳过已有派生版本替代或无需保留的文件和脚本
124 case "$_rel" in
125 ".launcher/302_icon.ico" ) continue ;;
126 ".launcher/launcher_启动器.sh" ) continue ;;
127 ".launcher/setup_desktop_生成桌面快捷方式.sh" ) continue ;;
128 "Steamcommunity_302.desktop" ) continue ;;
129 "run_运行.sh" ) continue ;;
130 esac
131
132 _dst="${pkgdir}${_install_dir}/${_rel}"
133 if [ -x "$_f" ]; then
134 install -Dm755 "$_f" "$_dst"
135 else
136 install -Dm644 "$_f" "$_dst"
137 fi
138 done < <(find "$_src" -type f -print0)
139
140 # 安装派生文件
141 install -Dm755 "${srcdir}/s302" "${pkgdir}/usr/bin/s302"
142 install -Dm644 "${srcdir}/steamcommunity302.ico" \
143 "${pkgdir}/usr/share/pixmaps/steamcommunity302.ico"
144 install -Dm644 "${srcdir}/steamcommunity302.desktop" \
145 "${pkgdir}/usr/share/applications/steamcommunity302.desktop"
146}
147

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