utools-bin
MEDIUM
maintainer zxp19821005
6 votes
scanned 2026-11-01 00:21:48.120785
Why flagged
The package downloads a prebuilt .deb from a non-standard host (open.u-tools.cn) which is not a common trusted source for binaries, posing a potential supply-chain risk if the host is compromised or malicious.
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:22
"${pkgname%-bin}-${pkgver}.deb::https://open.u-tools.cn/download/${pkgname%-bin}_${pkgver}_amd64.deb"
Medium
AI review
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 85%): The package downloads a prebuilt .deb from a non-standard host (open.u-tools.cn) which is not a common trusted source for binaries, posing a potential supply-chain risk if the host is compromised or malicious.
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
2
pkgname=utools-bin
3
_pkgname=uTools
4
# 更新日志 https://www.u-tools.cn/docs/guide/changelog.html
5
pkgver=8.0.2
6
_electronversion=34
7
pkgrel=1
8
pkgdesc="uTools Utilities.新一代效率工具平台,自由组合插件应用,打造专属你的趁手工具集"
9
arch=('x86_64')
10
url="https://www.u-tools.cn/"
11
_ghurl="https://github.com/uTools-Labs"
12
license=('LicenseRef-custom')
13
conflicts=("${pkgname%-bin}")
14
provides=("${pkgname%-bin}=${pkgver}")
15
depends=(
16
"electron${_electronversion}"
17
)
18
options=(
19
'!strip'
20
)
21
source=(
22
"${pkgname%-bin}-${pkgver}.deb::https://open.u-tools.cn/download/${pkgname%-bin}_${pkgver}_amd64.deb"
23
"LICENSE-${pkgver}.html::${url}/agreement.html"
24
)
25
sha256sums=('3904b1081ae0562cd1ae4c3f3d33592521f3a9001f72392b5b0228cde3c23056'
26
'986625f2970528f051391a41b1ede526de70c896209fc5bf818934b88cc12cfd')
27
_get_app_dir() {
28
find "${srcdir}" -type f -name "resources.pak" ! -path "*/node_modules/*" -printf '%h\n' 2>/dev/null \
29
| while read -r d; do [[ -d "${d}/resources" ]] && { echo "$d"; return 0; }; done
30
}
31
_check_electron_version() {
32
local _v=$(strings "$(find "$(_get_app_dir)" -maxdepth 1 -type f \
33
-executable -printf '%s %p\n' | sort -nr | head -1 | cut -d' ' -f2-)" \
34
| grep -oP 'Electron/\K[0-9]+' | head -1)
35
[[ -z "$_v" ]] && { echo -e "\033[1;33mNote: Could not check version.\033[0m"; return; }
36
(( _v == _electronversion )) && c=32 || c=31
37
echo -e "Electron version: \033[1;${c}m$_v$([[ $c -eq 31 ]] && echo " (expected $_electronversion)")\033[0m"
38
}
39
prepare() {
40
bsdtar -xf "${srcdir}/data."*
41
_check_electron_version
42
sed -i "s/\/opt\/${_pkgname}\///g" "${srcdir}/usr/share/applications/${pkgname%-bin}.desktop"
43
_file_list=(chrome_100_percent.pak chrome_200_percent.pak chrome-sandbox icudtl.dat libEGL.so libffmpeg.so \
44
libGLESv2.so libvk_swiftshader.so libvulkan.so.1 resources.pak vk_swiftshader_icd.json)
45
for _files in "${_file_list[@]}";do
46
ln -sf "/usr/lib/electron${_electronversion}/${_files}" "${srcdir}/opt/${_pkgname}/${_files}"
47
done
48
}
49
package() {
50
install -Dm755 -d "${pkgdir}/usr/bin"
51
cp -a "${srcdir}/opt" "${pkgdir}"
52
ln -sf "/opt/${_pkgname}/${pkgname%-bin}" "${pkgdir}/usr/bin/${pkgname%-bin}"
53
install -Dm644 "${srcdir}/usr/share/applications/${pkgname%-bin}.desktop" -t "${pkgdir}/usr/share/applications"
54
find "${srcdir}" -type f \( -name "*.png" -o -name "*.svg" \) -path "*share/icons/*" | while read -r _i; do
55
_extension="${_i##*.}"
56
_icon_path="${_i#*share/icons/}"
57
_target_dir="/usr/share/icons/$(dirname "${_icon_path}")"
58
install -Dm644 "${_i}" "${pkgdir}${_target_dir}/${pkgname%-bin}.${_extension}"
59
done
60
install -Dm644 "${srcdir}/LICENSE-${pkgver}.html" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.html"
61
}
62
Changes since previous scan
--- PKGBUILD @ 2026-10-30 00:29+++ PKGBUILD @ 2026-11-01 00:21@@ -2,12 +2,12 @@ pkgname=utools-bin _pkgname=uTools # 更新日志 https://www.u-tools.cn/docs/guide/changelog.html-pkgver=7.8.0-_electronversion=22+pkgver=8.0.2+_electronversion=34 pkgrel=1-pkgdesc="uTools Utilities.(Prebuilt version)新一代效率工具平台,自由组合插件应用,打造专属你的趁手工具集"+pkgdesc="uTools Utilities.新一代效率工具平台,自由组合插件应用,打造专属你的趁手工具集" arch=('x86_64')-url="https://u.tools"+url="https://www.u-tools.cn/" _ghurl="https://github.com/uTools-Labs" license=('LicenseRef-custom') conflicts=("${pkgname%-bin}")@@ -22,32 +22,41 @@ "${pkgname%-bin}-${pkgver}.deb::https://open.u-tools.cn/download/${pkgname%-bin}_${pkgver}_amd64.deb" "LICENSE-${pkgver}.html::${url}/agreement.html" )-sha256sums=('38fd1a7d1b558c55756e1436bd58e7d6fd46eb0271319a4af2113a6188e1857b'+sha256sums=('3904b1081ae0562cd1ae4c3f3d33592521f3a9001f72392b5b0228cde3c23056' '986625f2970528f051391a41b1ede526de70c896209fc5bf818934b88cc12cfd')-_get_electron_version() {- _elec_ver="$(strings "${srcdir}/opt/${_pkgname}/${pkgname%-bin}" | grep '^Chrome/[0-9.]* Electron/[0-9]' | cut -d'/' -f3 | cut -d'.' -f1)"- echo -e "The electron version is: \033[1;31m${_elec_ver}\033[0m"+_get_app_dir() {+ find "${srcdir}" -type f -name "resources.pak" ! -path "*/node_modules/*" -printf '%h\n' 2>/dev/null \+ | while read -r d; do [[ -d "${d}/resources" ]] && { echo "$d"; return 0; }; done+}+_check_electron_version() {+ local _v=$(strings "$(find "$(_get_app_dir)" -maxdepth 1 -type f \+ -executable -printf '%s %p\n' | sort -nr | head -1 | cut -d' ' -f2-)" \+ | grep -oP 'Electron/\K[0-9]+' | head -1)+ [[ -z "$_v" ]] && { echo -e "\033[1;33mNote: Could not check version.\033[0m"; return; }+ (( _v == _electronversion )) && c=32 || c=31+ echo -e "Electron version: \033[1;${c}m$_v$([[ $c -eq 31 ]] && echo " (expected $_electronversion)")\033[0m" } prepare() { bsdtar -xf "${srcdir}/data."*- _get_electron_version+ _check_electron_version sed -i "s/\/opt\/${_pkgname}\///g" "${srcdir}/usr/share/applications/${pkgname%-bin}.desktop" _file_list=(chrome_100_percent.pak chrome_200_percent.pak chrome-sandbox icudtl.dat libEGL.so libffmpeg.so \- libGLESv2.so libvk_swiftshader.so libvulkan.so.1 resources.pak vk_swiftshader_icd.json)- for _files in "${_file_list[@]}";do- ln -sf "/usr/lib/electron${_electronversion}/${_files}" "${srcdir}/opt/${_pkgname}/${_files}"- done+ libGLESv2.so libvk_swiftshader.so libvulkan.so.1 resources.pak vk_swiftshader_icd.json)+ for _files in "${_file_list[@]}";do+ ln -sf "/usr/lib/electron${_electronversion}/${_files}" "${srcdir}/opt/${_pkgname}/${_files}"+ done } package() { install -Dm755 -d "${pkgdir}/usr/bin"- cp -Pr --no-preserve=ownership "${srcdir}/opt" "${pkgdir}"+ cp -a "${srcdir}/opt" "${pkgdir}" ln -sf "/opt/${_pkgname}/${pkgname%-bin}" "${pkgdir}/usr/bin/${pkgname%-bin}" install -Dm644 "${srcdir}/usr/share/applications/${pkgname%-bin}.desktop" -t "${pkgdir}/usr/share/applications"- _icon_sizes=(16x16 32x32 48x48 64x64 128x128 256x256 512x512)- for _icons in "${_icon_sizes[@]}";do- install -Dm644 "${srcdir}/usr/share/icons/hicolor/${_icons}/apps/${pkgname%-bin}.png" \- -t "${pkgdir}/usr/share/icons/hicolor/${_icons}/apps"- done+ find "${srcdir}" -type f \( -name "*.png" -o -name "*.svg" \) -path "*share/icons/*" | while read -r _i; do+ _extension="${_i##*.}"+ _icon_path="${_i#*share/icons/}"+ _target_dir="/usr/share/icons/$(dirname "${_icon_path}")"+ install -Dm644 "${_i}" "${pkgdir}${_target_dir}/${pkgname%-bin}.${_extension}"+ done install -Dm644 "${srcdir}/LICENSE-${pkgver}.html" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.html" } Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Medium | 2 |
| 2026-10-31 00:07:41 | Medium | 2 |
| 2026-10-30 09:55:25 | Medium | 2 |
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 00:13:55 | Low | 2 |
| 2026-10-28 00:06:54 | Low | 2 |
| 2026-10-27 00:23:28 | Low | 2 |
| 2026-10-26 00:12:40 | Low | 2 |
| 2026-10-25 00:20:48 | Low | 2 |
| 2026-10-24 00:14:55 | Low | 2 |
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 00:06:55 | Low | 2 |
| 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 |