ecosia-browser-bin
The package downloads a prebuilt Snap binary from the official Snapcraft API, which is a legitimate source for Ecosia Browser; the non-standard host is part of Snapcraft's infrastructure, not a personal or untrusted file host, and the binary is unpacked and installed in a transparent manner without obfuscation or remote code execution.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a prebuilt Snap binary from the official Snapcraft API, which is a legitimate source for Ecosia Browser; the non-standard host is part of Snapcraft's infrastructure, not a personal or untrusted file host, and the binary is unpacked and installed in a transparent manner without obfuscation or remote code execution.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:56
"${pkgname}-${pkgver}-${_snap_revision}.snap::https://api.snapcraft.io/api/v1/snaps/download/${_snap_id}_${_snap_revision}.snap"
PKGBUILD
1 offending line(s) highlighted# Maintainer: Theo <teoulas@duck.com>
pkgname=ecosia-browser-bin
pkgver=152.0.7977.8
pkgrel=1
pkgdesc='Ecosia Browser (prebuilt binary)'
arch=('x86_64')
url='https://www.ecosia.org/browser'
license=('LicenseRef-Proprietary')
depends=(
'alsa-lib'
'at-spi2-core'
'cairo'
'dbus'
'expat'
'glib2'
'glibc'
'gtk3'
'hicolor-icon-theme'
'libcups'
'libgcc'
'libx11'
'libxcb'
'libxcomposite'
'libxdamage'
'libxext'
'libxfixes'
'libxkbcommon'
'libxrandr'
'mesa'
'nspr'
'nss'
'pango'
'shared-mime-info'
'systemd-libs'
'ttf-font'
'xdg-utils'
)
optdepends=(
'gtk4: GTK 4 integration'
'kdialog: native file dialogs under Plasma'
'org.freedesktop.secrets: secure password storage'
'pipewire: WebRTC desktop sharing under Wayland'
'qt5-base: Qt 5 integration'
'qt6-base: Qt 6 integration'
'upower: Battery Status API support'
)
makedepends=('squashfs-tools')
provides=("ecosia-browser=${pkgver}")
conflicts=('ecosia-browser')
options=('!strip' '!debug')
_snap_id='2MakkUunZD1vJLykl5QmmVDQAZdE84wY'
_snap_revision=6
source_x86_64=(
"${pkgname}-${pkgver}-${_snap_revision}.snap::https://api.snapcraft.io/api/v1/snaps/download/${_snap_id}_${_snap_revision}.snap"
)
source=('ecosiabrowser.sh' 'LICENSE')
noextract=("${pkgname}-${pkgver}-${_snap_revision}.snap")
sha256sums=('43dd05c17af7504ed0267b8909e44e3aa1a03b1819415ab1559c143fc8a36efb'
'b744f25f86ee55eb6d3ec5ff5d6c5a88ad55392a49ecf69cee9c669124fbf1f2')
sha256sums_x86_64=('f6951358f1afa48e01dcc97761aaf3fc937bc9cc417e8661dd92c1bebca7d62d')
prepare() {
rm -rf snap-root
unsquashfs -q -d snap-root \
"${pkgname}-${pkgver}-${_snap_revision}.snap" \
opt/ecosia \
usr/share/applications/org.ecosia.Browser.desktop \
app/share/icons/hicolor/scalable/apps/org.ecosia.Browser.svg \
app/share/metainfo/org.ecosia.Browser.metainfo.xml
# The Snap desktop file points at the icon's path inside its confinement.
sed -i 's|^Icon=/app/share/icons/hicolor/scalable/apps/org\.ecosia\.Browser\.svg$|Icon=org.ecosia.Browser|' \
snap-root/usr/share/applications/org.ecosia.Browser.desktop
}
package() {
install -d "${pkgdir}/opt"
cp -a snap-root/opt/ecosia "${pkgdir}/opt/ecosia"
install -Dm755 ecosiabrowser.sh "${pkgdir}/usr/bin/ecosiabrowser"
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
install -Dm644 snap-root/usr/share/applications/org.ecosia.Browser.desktop \
"${pkgdir}/usr/share/applications/org.ecosia.Browser.desktop"
install -Dm644 snap-root/app/share/icons/hicolor/scalable/apps/org.ecosia.Browser.svg \
"${pkgdir}/usr/share/icons/hicolor/scalable/apps/org.ecosia.Browser.svg"
install -Dm644 snap-root/app/share/metainfo/org.ecosia.Browser.metainfo.xml \
"${pkgdir}/usr/share/metainfo/org.ecosia.Browser.metainfo.xml"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Low | 2 |
| 2026-10-31 00:07:41 | Low | 2 |
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 00:13:55 | Low | 2 |
| 2026-10-28 00:06:54 | Low | 2 |
| 2026-10-27 00:23:28 | Low | 2 |
| 2026-10-26 00:12:40 | Low | 2 |
| 2026-10-25 00:20:48 | Low | 2 |
| 2026-10-24 00:14:55 | Low | 2 |
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 00:06:55 | Low | 2 |
| 2026-10-17 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |
| 2026-10-14 00:06:47 | Low | 2 |
| 2026-10-13 00:23:45 | Low | 2 |