eusoft-eshelper-bin
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.
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-09-17 00:27:14 | Medium | 2 |
| 2026-09-16 00:03:17 | Medium | 2 |
| 2026-09-15 00:25:31 | Medium | 2 |
| 2026-09-14 00:27:57 | Medium | 2 |
| 2026-09-13 00:19:54 | Medium | 2 |
| 2026-09-12 00:25:17 | Medium | 2 |
| 2026-09-11 00:19:22 | Medium | 2 |
| 2026-09-10 00:22:44 | Medium | 2 |
| 2026-09-09 00:04:09 | Medium | 2 |
| 2026-09-08 00:18:08 | Medium | 2 |
| 2026-09-07 00:30:15 | Medium | 2 |
| 2026-09-06 00:17:06 | Medium | 2 |
| 2026-09-05 00:16:27 | Medium | 2 |
| 2026-09-04 00:03:13 | Medium | 2 |
| 2026-09-03 00:15:47 | Medium | 2 |
| 2026-09-02 00:02:31 | Medium | 2 |
| 2026-09-01 00:11:19 | Medium | 2 |
| 2026-08-31 00:19:57 | Medium | 2 |
| 2026-08-30 00:04:14 | Medium | 2 |
| 2026-08-29 00:29:17 | Medium | 2 |