eusoft-eshelper-bin
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:50
"${pkgname%-bin}-${pkgver}.deb::https://www.eudic.net/download/${_pkgname}.deb?v=${pkgver//./-}" -
PKGBUILD:51
"LICENSE.html::https://dict.eudic.net/home/privacy"
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 .deb binary from eudic.net (the official vendor for Eudic dictionary apps, a well-known Chinese software company) and installs it. While eudic.net is the legitimate upstream vendor for this software, the source is still a prebuilt binary blob from a non-open-source proprietary application. The sha256sums are pinned, which mitigates substitution attacks at build time, but the URL uses a version-substituted query parameter (?v=${pkgver//./-}) which could theoretically serve different content for the same checksum if the server is compromised or the file changes. The core concern is that this is a closed-source prebuilt binary being installed system-wide — if the upstream vendor's server is compromised or the binary contains malicious code, there is no way to audit it. This is a genuine medium-severity supply-chain concern: executed proprietary binary from a vendor host with no source code available, though the sha256 pinning does provide some integrity guarantee. Not high because there is no evidence of actual malice, obfuscation, or unofficial/personal hosting — eudic.net is the legitimate vendor.
PKGBUILD
2 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
_pkgname=eshelper
pkgname="eusoft-${_pkgname}-bin"
pkgver=11.6.0
pkgrel=1
pkgdesc="Authoritative Spanish dictionary software, an essential tool for Spanish language learners.(Prebuilt version)西班牙语助手,权威的西班牙语词典软件,西班牙语学习者必备的工具."
arch=('x86_64')
url="https://www.esdict.cn/"
license=('LicenseRef-custom')
conflicts=(
"${pkgname%-bin}"
"${_pkgname}"
)
options=('!strip')
depends=(
'alsa-lib'
'gtk3'
'aalib'
'cdparanoia'
'graphene'
'gst-plugins-bad-libs'
'gst-plugins-base-libs'
'gstreamer'
'lame'
'libavc1394'
'libcaca'
'libdv'
'libgudev'
'libiec61883'
'libogg'
'libpulse'
'libraw1394'
'libshout'
'libsoup'
'libtheora'
'libvorbis'
'libxv'
'mpg123'
'nss'
'openssl-1.0'
'opus'
'orc'
'pipewire-jack'
'speex'
'twolame'
'v4l-utils'
'wavpack'
)
source=(
"${pkgname%-bin}-${pkgver}.deb::https://www.eudic.net/download/${_pkgname}.deb?v=${pkgver//./-}"
"LICENSE.html::https://dict.eudic.net/home/privacy"
"${pkgname%-bin}.sh"
)
sha256sums=('59af3b48c1cda58220e303c479d8244257fb2d7c7be7d229b83f3e8dc23ee358'
'a961d77963997afda7147235ae0540912aa8300d9ccdf2dddf90f1893045adac'
'99459e293a8aa12658616ee9bdb4cbfb186265b8bfd3e0f4d57ccb5fac5b2d41')
prepare() {
sed -e "
s/@appname@/${pkgname%-bin}/g
s/@appasar@/${_pkgname}/g
" -i "${srcdir}/${pkgname%-bin}.sh"
bsdtar -xf "${srcdir}/data."*
sed -e "
s/\/usr\/share\/${pkgname%-bin}\/AppRun/${pkgname%-bin}/g
s/com.eusoft.${_pkgname}/${pkgname%-bin}/g
" -i "${srcdir}/usr/share/applications/${pkgname%-bin}.desktop"
}
package() {
install -Dm755 "${srcdir}/${pkgname%-bin}.sh" "${pkgdir}/usr/bin/${pkgname%-bin}"
install -Dm755 -d "${pkgdir}/usr/lib"
cp -Pr --no-preserve=ownership "${srcdir}/usr/share/${pkgname%-bin}" "${pkgdir}/usr/lib"
install -Dm644 "${srcdir}/usr/share/applications/${pkgname%-bin}.desktop" -t "${pkgdir}/usr/share/applications"
install -Dm644 "${srcdir}/usr/share/pixmaps/com.eusoft.${_pkgname}.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-bin}.png"
install -Dm644 "${srcdir}/LICENSE.html" -t "${pkgdir}/usr/share/licenses/${pkgname}"
}
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 |