ydict
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:18
source=("https://files.cnblogs.com/files/dream-saddle/YDict-$pkgver.tar.gz")
llm_review
The static rules found a suspicious pattern they could not resolve, so an AI model (anthropic/claude-4.6-sonnet-20260217) reviewed it and judged it HIGH (confidence 92%): This PKGBUILD downloads a prebuilt binary tarball from cnblogs.com (a Chinese blogging platform, not the project's official GitHub release infrastructure) with md5sums='SKIP' (no integrity verification), then executes an arbitrary install.sh script from inside that tarball with root-level package() privileges. The combination of: (1) an unofficial, unverified binary blob from a personal blog host, (2) no checksum validation whatsoever, and (3) execution of a bundled shell script that can do anything to the system, constitutes a genuine supply-chain risk that goes beyond a typical MEDIUM concern. If cnblogs.com is compromised or the file is replaced, arbitrary code runs during package installation. This is effectively an unverified binary installer pattern — the executed shell script from an untrusted host with no integrity check elevates this to HIGH.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Your Name <1289747698@qq.com>
pkgname=ydict
pkgver=0.3.2
pkgrel=1
pkgdesc="dictionary/translation tool developed in Rust+Qt"
arch=('x86_64')
url="https://github.com/DreamSaddle/youdao-dict"
license=('GPL3')
depends=()
makedepends=()
provides=()
conflicts=()
replaces=()
backup=()
options=()
install=
source=("https://files.cnblogs.com/files/dream-saddle/YDict-$pkgver.tar.gz")
noextract=()
md5sums=('SKIP')
prepare() {
echo ""
}
build() {
echo "此软件通过打包好的二进制文件安装, 无需编译."
}
package() {
cd "YDict-$pkgver/scripts"
chmod +x install.sh
./install.sh
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | HIGH | 2 |
| 2026-08-02 00:16:08 | HIGH | 2 |
| 2026-08-01 00:11:18 | HIGH | 2 |
| 2026-07-31 00:14:10 | HIGH | 2 |
| 2026-07-30 00:17:23 | HIGH | 2 |
| 2026-07-29 00:25:53 | HIGH | 2 |
| 2026-07-28 00:07:28 | HIGH | 2 |
| 2026-07-27 00:24:32 | HIGH | 2 |
| 2026-07-26 00:07:32 | HIGH | 2 |
| 2026-07-25 00:13:44 | HIGH | 2 |
| 2026-07-24 00:02:28 | HIGH | 2 |
| 2026-07-23 00:14:47 | HIGH | 2 |
| 2026-07-22 00:29:32 | HIGH | 2 |
| 2026-07-21 00:24:15 | HIGH | 2 |
| 2026-07-20 00:19:49 | HIGH | 2 |
| 2026-07-19 00:17:08 | HIGH | 2 |
| 2026-07-18 00:14:48 | HIGH | 2 |
| 2026-07-17 00:06:16 | HIGH | 2 |
| 2026-07-16 00:05:41 | HIGH | 2 |
| 2026-07-15 00:09:25 | HIGH | 2 |