dcvviewer-bin
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:17
"https://d1uj6qtbmh3dt5.cloudfront.net/${_majver}/Clients/nice-dcv-viewer_${pkgver}-1_amd64.ubuntu2404.deb"
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 binary Debian package (.deb) from a CloudFront CDN URL (d1uj6qtbmh3dt5.cloudfront.net) and installs its contents directly. The CloudFront distribution belongs to AWS/NICE (Amazon acquired NICE Software, and NICE DCV is an official Amazon product distributed via their CDN), making this a legitimate vendor distribution channel rather than a personal or unofficial host. The sha256sum is pinned, which mitigates tampering risk. However, the package still installs prebuilt proprietary binaries from a CDN that is not a well-known, easily verifiable official package repository (like dl.google.com or packages.microsoft.com), and the binary is executed on the user's system. This is a standard pattern for proprietary software AUR packages (similar to zoom, slack-desktop, etc.) and the risk is comparable to those. The cheaper model's concern about CloudFront being 'swappable' is partially valid in theory but mitigated by the pinned checksum. Overall this is a legitimate medium-risk pattern for proprietary binary packaging, not a false positive, but also not an active attack.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Bence Hornák <bence.hornak@gmail.com>
# Maintainer: xaque <xaque at 🦆 dot com>
pkgname=dcvviewer-bin
_pkgname=dcvviewer
_majver=2024.0
_minver=8004
pkgver=${_majver}.${_minver}
pkgrel=1
pkgdesc="NICE DCV client for Linux. DCV is a desktop remotization server, with support for native as well as web-based clients."
arch=('x86_64')
url="https://www.nice-software.com/products/dcv"
license=('custom: commercial')
depends=('cairo' 'ffmpeg' 'gdk-pixbuf2' 'glib2' 'gst-plugins-base' 'gst-plugins-base-libs' 'gst-plugins-good' 'gstreamer' 'gtk4' 'harfbuzz-icu' 'json-glib' 'krb5' 'libfido2' 'libjpeg6-turbo' 'libjpeg-turbo' 'libsasl' 'libsoup3' 'libx11' 'lmdb' 'lz4' 'nss' 'pcsclite' 'protobuf-c' 'sqlite' 'wayland'
)
source=(
"https://d1uj6qtbmh3dt5.cloudfront.net/${_majver}/Clients/nice-dcv-viewer_${pkgver}-1_amd64.ubuntu2404.deb"
)
sha256sums=('c8255bc21d42decab9b12bfd2443021bd27734e8a975916eb66ac0dc99fb7e9b')
install="${_pkgname}.install"
package(){
# Extract package data, move files to comply with Arch package guidelines
# (https://wiki.archlinux.org/index.php/Arch_package_guidelines#Directories)
tar -xf data.tar.zst -C "${pkgdir}" \
--transform 's,^./usr/lib/x86_64-linux-gnu,./usr/lib,' \
--transform 's,^./usr/share/dcvviewer/license/EULA.txt,./usr/share/licenses/dcvviewer/EULA,' \
--transform 's,^./usr/share/dcvviewer\(/license\)\?$,.,' \
--transform 's,^./usr/share/dcvviewer/third-party-licenses.txt,./usr/share/licenses/dcvviewer/LICENSE,' \
--transform 's,^./usr/share/doc/nice-dcv-viewer/copyright,./usr/share/licenses/dcvviewer/COPYRIGHT,' \
--transform 's,^./usr/share/doc\(/nice-dcv-viewer\)\?$,.,' \
--exclude './usr/share/doc/nice-dcv-viewer/changelog.Debian.gz'
# Update paths in launcher script
sed -i 's|libexecdir=${basedir}/lib/x86_64-linux-gnu|libexecdir=${basedir}/lib|' "${pkgdir}/usr/bin/dcvviewer"
sed -i 's|libdir=${basedir}/lib/x86_64-linux-gnu|libdir=${basedir}/lib|' "${pkgdir}/usr/bin/dcvviewer"
# Fix for Wayland, force use of XWayland
# sed -i '2 i export GDK_BACKEND=x11' "${pkgdir}/usr/bin/dcvviewer"
# Remove libraries replaced by system ones
pushd "${pkgdir}/usr/lib/${_pkgname}"
## Most runtime ##
#rm libglib-2.0.so.0 libgmodule-2.0.so.0 libgobject-2.0.so.0 libgthread-2.0.so.0 libgio-2.0.so.0
#rm libffi.so.* libjson-glib-1.0.so.0
## ##
## Most native ##
mkdir keep
mv libavcodec.so.* libavutil.so.* libdcv.so libsoup* keep
rm *.so*
rm gtk4-update-icon-cache glib-compile-schemas glib-compile-resources gdk-pixbuf-query-loaders
rm -rf gtk-4.0 gstreamer-1.0
mv keep/* .
rmdir keep
sed -i '/export GST_PLUGIN_SCANNER/d' "${pkgdir}/usr/bin/dcvviewer"
sed -i '/export GST_PLUGIN_SYSTEM_PATH/d' "${pkgdir}/usr/bin/dcvviewer"
sed -i '/export GTK_PATH/d' "${pkgdir}/usr/bin/dcvviewer"
sed -i '/export PANGO_LIBDIR/d' "${pkgdir}/usr/bin/dcvviewer"
#pushd sasl2
#rm libanonymous.so libdigestmd5.so libplain.so libscram.so libcrammd5.so libsasldb.so # libsasl
#rm libgssapiv2.so libgs2.so # cyrus-sasl-gssapi
#rm libotp.so # ?
#popd
## ##
popd
}
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 |