eshelper
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=("${pkgname}-${pkgver}.deb::https://static.frdic.com/pkg/${pkgname}.deb?v=${_date}")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): This PKGBUILD downloads a prebuilt proprietary binary .deb from static.frdic.com, which is the CDN/static host used by Eudic (the developer of the Eudict/Eudic dictionary software family). This is actually the vendor's own distribution host, not a random personal server — frdic.com is the Chinese domain for the same company that operates eudic.net. The sha256sum is pinned, which mitigates substitution risk somewhat. However, the source is still a prebuilt closed-source binary from a proprietary vendor's CDN (not a GitHub release or other auditable artifact), and the binary is executed directly. The DLAGENTS override with a spoofed User-Agent is unusual but explained by the comment (server returns 404 without it). The prepare() step extracts data.tar.xz from the .deb and the package() step installs binaries from it. This is a standard pattern for repackaging proprietary .deb files in the AUR. The risk is real but typical for proprietary binary repacks: if frdic.com is compromised or serves a different binary, the sha256 check would catch it only if the sum is kept current. Overall this is a legitimate proprietary software repack with a pinned checksum from the vendor's own host — the medium rating is marginally justified due to the closed-source executed binary from a CDN, but it is a well-known pattern in AUR for proprietary software.
PKGBUILD
1 offending line(s) highlighted# Maintainer: yjun <jerrysteve1101 at gmail dot com>
# Maintainer: sukanka <su975853527 at gmail dot com>
pkgname=eshelper
pkgver=13.5.2
_date=2024-04-19
_lang=es
_flang=Spanish
pkgrel=1
pkgdesc="Proprietary ${_flang} dictionary software for linux"
arch=('x86_64')
url="https://www.eudic.net/v4/${_lang}/app/${pkgname}"
license=('unknown')
depends=(
'hicolor-icon-theme'
)
provides=("eudic-${_lang}")
source=("${pkgname}-${pkgver}.deb::https://static.frdic.com/pkg/${pkgname}.deb?v=${_date}")
sha256sums=('59af3b48c1cda58220e303c479d8244257fb2d7c7be7d229b83f3e8dc23ee358')
# sometime use curl to download source deb, throws 404 not found.
# user other UA instead of origion one fixed it.
# https://wiki.archlinux.org/index.php/Nonfree_applications_package_guidelines#Custom_DLAGENTS
DLAGENTS=("https::/usr/bin/curl -A 'Mozilla' -fLC - --retry 3 --retry-delay 3 -o %o %u")
prepare() {
mkdir -p build
tar -xf data.tar.xz -C build
}
package() {
_dirname=eusoft-${pkgname}
install -dm755 ${pkgdir}/usr/share
cp -pvr build/usr/share/* ${pkgdir}/usr/share/
# link executable
install -dm755 ${pkgdir}/usr/bin/
ln -s /usr/share/${_dirname}/${pkgname} \
${pkgdir}/usr/bin/${pkgname}
# desktop entry
sed -i "s|/usr/share/${_dirname}/AppRun|${pkgname}|g" \
${pkgdir}/usr/share/applications/eusoft-${pkgname}.desktop
# qt plugin path
sed -i '4c Prefix = /usr/lib/qt/' \
${pkgdir}/usr/share/${_dirname}/qt.conf
# remove unused files.
rm -rf ${pkgdir}/usr/share/${_dirname}/{gstreamer-1.0,lib,libcrypto.so.1.0.0,libssl.so.1.0.0,AppRun,plugins,lib*}
}
# vim: ts=2 sw=2 et:
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 |