duniter-desktop-bin
The package downloads a prebuilt binary tarball (containing an NW.js application with native .so libraries and a bundled 'nw' executable) directly from a GitLab CI/CD job artifact URL on git.duniter.org. While git.duniter.org is the project's own official GitLab instance (not a random personal host), the artifact is identified by a numeric job ID (_gitlab_job_id=21913) rather than a tagged release artifact. CI job artifacts can be overwritten or expire and be replaced, and there is no guarantee of immutability. However, a sha256sum is provided which pins the exact content at packaging time, mitigating silent substitution risk. The binary itself is an executed NW.js bundle with native shared libraries installed to /opt, which is the standard concern for any -bin package. The use of a CI job artifact URL rather than a stable release URL is non-standard and slightly increases supply-chain risk, but the sha256 checksum and the fact that this is the project's own infrastructure keeps this at medium rather than high. Overall this is a legitimate but non-ideal packaging pattern for a binary package.
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:14
source=("https://git.duniter.org/nodes/typescript/duniter/-/jobs/${_gitlab_job_id}/artifacts/raw/work/bin/duniter-desktop-v$pkgver-linux-x64.tar.gz")
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 binary tarball (containing an NW.js application with native .so libraries and a bundled 'nw' executable) directly from a GitLab CI/CD job artifact URL on git.duniter.org. While git.duniter.org is the project's own official GitLab instance (not a random personal host), the artifact is identified by a numeric job ID (_gitlab_job_id=21913) rather than a tagged release artifact. CI job artifacts can be overwritten or expire and be replaced, and there is no guarantee of immutability. However, a sha256sum is provided which pins the exact content at packaging time, mitigating silent substitution risk. The binary itself is an executed NW.js bundle with native shared libraries installed to /opt, which is the standard concern for any -bin package. The use of a CI job artifact URL rather than a stable release URL is non-standard and slightly increases supply-chain risk, but the sha256 checksum and the fact that this is the project's own infrastructure keeps this at medium rather than high. Overall this is a legitimate but non-ideal packaging pattern for a binary package.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Étienne Deparis <etienne@depar.is>
pkgname=duniter-desktop-bin
_pkgname=duniter-desktop
pkgver=1.7.18
pkgrel=1
_gitlab_job_id=21913
pkgdesc="Crypto-currency software to manage libre currency such as Ğ1"
arch=("x86_64")
url="https://duniter.org/fr/"
license=("AGPL3")
provides=("duniter-desktop")
conflicts=("duniter-desktop")
options=('!strip')
source=("https://git.duniter.org/nodes/typescript/duniter/-/jobs/${_gitlab_job_id}/artifacts/raw/work/bin/duniter-desktop-v$pkgver-linux-x64.tar.gz")
sha256sums=('7759b674fac29a874a9ee2e27ec3807f7195c07f0e8999cfb76f9801d5162dc4')
prepare() {
cd "$srcdir"
cat >> duniter-desktop.desktop <<EOF
[Desktop Entry]
Type=Application
Name=Duniter Desktop
Comment=Crypto-currency software to manage libre currency such as Ğ1
Icon=duniter-desktop
Exec=/opt/duniter-desktop/nw
Categories=Network;
EOF
chmod 644 credits.html icudtl.dat natives_blob.bin nw_100_percent.pak \
nw_200_percent.pak resources.pak snapshot_blob.bin locales/*.pak
chmod 755 nw lib lib/*.so locales
}
package() {
cd "$srcdir/"
install -d -m755 "$pkgdir/usr/share/icons/hicolor/scalable/apps"
install -D -m644 images/duniter-logo.svg \
"$pkgdir/usr/share/icons/hicolor/scalable/apps/duniter-desktop.svg"
# weird utf8 error
rm -r images
install -d -m755 "$pkgdir/usr/share/applications"
install -D -m644 duniter-desktop.desktop \
"$pkgdir/usr/share/applications/duniter-desktop.desktop"
rm duniter-desktop.desktop
install -d -m755 "$pkgdir/usr/share/licenses/duniter-desktop"
install -D -m644 LICENSE \
"$pkgdir/usr/share/licenses/duniter-desktop/LICENSE"
install -d -m755 "$pkgdir/opt"
rm "duniter-desktop-v$pkgver-linux-x64.tar.gz"
cd ../
cp -R src "$pkgdir/opt/duniter-desktop"
}
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 |