eblanbrowser-r
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:26
"eblan-browser.zip::https://update.riba.click/eb/r/lastest.zip"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): The PKGBUILD downloads a ZIP archive from a personal/unofficial host (update.riba.click) with SKIP checksums (no integrity verification), extracts it, and executes the contained Python code (EBLAN.py) as the browser entry point. This is a genuine supply-chain risk: the host operator can silently replace the archive contents at any time with arbitrary Python code that will run with user privileges. The lack of any checksum means there is zero tamper detection. The domain 'riba.click' is not an official software distribution channel. The package installs and executes whatever Python code is in the archive, making this a real medium-severity concern rather than a false positive.
PKGBUILD
1 offending line(s) highlighted# Maintainer: twgood <admin@eblanbrowser.ru>
pkgname=eblanbrowser-r
pkgver=0.1
pkgrel=1
pkgdesc="EBLAN Browser - a lightweight web browser for russian users."
arch=("any")
url="https://eblanbrowser.ru/"
license=("custom:eblan-browser")
categories=("network")
depends=(
"python>=3.10"
"python-pyqt6"
"python-pyqt6-webengine"
"qt6-webengine"
"python-requests"
)
optdepends=(
"ffmpeg: media playback"
"nss: SSL support"
)
source=(
"eblan-browser.zip::https://update.riba.click/eb/r/lastest.zip"
"eblan.desktop"
)
md5sums=('SKIP' 'SKIP')
# Находим папку с EBLAN.py внутри распакованного архива
_find_src() {
find "${srcdir}" -maxdepth 3 -name "EBLAN.py" | head -n1 | xargs dirname
}
prepare() {
_eblan_src="$(_find_src)"
if [[ -z "$_eblan_src" ]]; then
echo "ERROR: EBLAN.py not found inside archive"
return 1
fi
msg2 "Found EBLAN.py in: $_eblan_src"
}
package() {
local _eblan_src
_eblan_src="$(_find_src)"
# --- Копируем файлы браузера в /opt/eblan-browser ---
install -dm755 "${pkgdir}/opt/eblan-browser"
cp -r "${_eblan_src}/." "${pkgdir}/opt/eblan-browser/"
# --- Лаунчер /usr/bin/eblan ---
install -dm755 "${pkgdir}/usr/bin"
cat > "${pkgdir}/usr/bin/eblan" <<'EOF'
#!/usr/bin/env bash
exec python3 /opt/eblan-browser/EBLAN.py "$@"
EOF
chmod 755 "${pkgdir}/usr/bin/eblan"
# --- .desktop файл ---
install -Dm644 "${srcdir}/eblan.desktop" \
"${pkgdir}/usr/share/applications/eblan.desktop"
# --- Иконки (если есть в архиве) ---
for size in 64 128 256; do
local icon="${_eblan_src}/images/logo${size}.png"
if [[ -f "$icon" ]]; then
install -Dm644 "$icon" \
"${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/eblan-browser.png"
fi
done
}
post_install() {
update-desktop-database /usr/share/applications
gtk-update-icon-cache -f /usr/share/icons/hicolor 2>/dev/null || true
}
post_upgrade() {
post_install
}
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 |