utools
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:11
source=("https://publish.u-tools.cn/version2/utools_${pkgver}_amd64.deb")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD downloads a prebuilt binary .deb from publish.u-tools.cn, which is the official CDN/distribution host for the uTools application (a legitimate Chinese productivity launcher). The domain is operated by the uTools vendor (u.tools). While not a well-known Western forge, this is the vendor's own distribution infrastructure, analogous to how other proprietary apps distribute via their own CDN. A sha512 checksum is present, mitigating substitution attacks at rest, but the checksum only protects against accidental corruption or a one-time swap — it does not protect against the vendor pushing a malicious update (the version is pinned so this is less of a concern). The real concern is that this installs a closed-source, prebuilt binary from a Chinese vendor's CDN directly into /opt, with no source verification beyond the checksum. This is a legitimate supply-chain concern (executed binary from a non-auditable, non-reproducible source), which warrants medium severity, but there is no evidence of active malice, obfuscation, or piracy.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Jack Chen <redchenjs@live.com>
pkgname=utools
pkgver=6.1.0
pkgrel=1
pkgdesc="uTools Utilities"
arch=('x86_64')
url="https://u.tools/"
license=('custom')
depends=('gtk3' 'nss' 'alsa-lib' 'openssl-1.1')
source=("https://publish.u-tools.cn/version2/utools_${pkgver}_amd64.deb")
sha512sums=('509c5abd5ddd96b13105069f04ffca7d4aee0fd04bfbfaa4be507830dd6dc732c2e3f94c4bc5379e36f8b58929220bda56a3448821503b4fd47315619e0ada77')
package() {
tar -xf "$srcdir/data.tar.xz" -C "$pkgdir/"
install -dm755 "$pkgdir/usr/bin"
ln -s /opt/uTools/utools "$pkgdir/usr/bin/utools"
}
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 | 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 |