cajviewer
This PKGBUILD downloads a prebuilt binary .deb from download.cnki.net, which is the official CNKI (China National Knowledge Infrastructure) distribution server for their CAJViewer software. The host is the vendor's own download server, not a random personal or unofficial host. However, the package installs a closed-source, prebuilt binary blob (a proprietary document viewer from a Chinese state-affiliated academic platform) directly into /opt, including shared libraries and a QtWebEngine-based browser component. The sha256sums are pinned, which mitigates MITM risk. The concern is that this is an opaque, unauditable binary from a non-Western vendor with no source code available, executing with full user privileges. This is a legitimate medium-severity supply-chain concern: not clearly malicious, but the binary is executed code from a proprietary, closed-source vendor whose infrastructure cannot be independently verified. The cheaper model's characterization of download.cnki.net as 'non-standard' is partially correct in that it is not a widely-known Western distribution endpoint, but it is the official vendor host. The risk is real but not elevated beyond medium.
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:25
source_x86_64=("https://download.cnki.net/${pkgname}_${pkgver}_amd64.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 .deb from download.cnki.net, which is the official CNKI (China National Knowledge Infrastructure) distribution server for their CAJViewer software. The host is the vendor's own download server, not a random personal or unofficial host. However, the package installs a closed-source, prebuilt binary blob (a proprietary document viewer from a Chinese state-affiliated academic platform) directly into /opt, including shared libraries and a QtWebEngine-based browser component. The sha256sums are pinned, which mitigates MITM risk. The concern is that this is an opaque, unauditable binary from a non-Western vendor with no source code available, executing with full user privileges. This is a legitimate medium-severity supply-chain concern: not clearly malicious, but the binary is executed code from a proprietary, closed-source vendor whose infrastructure cannot be independently verified. The cheaper model's characterization of download.cnki.net as 'non-standard' is partially correct in that it is not a widely-known Western distribution endpoint, but it is the official vendor host. The risk is real but not elevated beyond medium.
PKGBUILD
1 offending line(s) highlighted# Maintainer: yjun <jerrysteve1101 at gmail dot com>
# Contributor: swordfeng <swordfeng123@gmail.com>
# Contributor: TheGoliath <hidden>
pkgname=cajviewer
pkgver=9.0
pkgrel=3
pkgdesc="CAJViewer for Linux. Document Viewer for TEB, CAJ, NH, KDH and PDF format"
arch=('x86_64')
url="http://cajviewer.cnki.net/"
license=('custom')
depends=(
'glibc'
'gcc-libs'
'bash'
'hicolor-icon-theme'
'libxml2-legacy'
# 'qt5-base'
# 'libcups'
# 'openssl-1.1'
# 'qt5-webchannel'
# 'qt5-webengine'
)
source=("cajviewer.sh")
source_x86_64=("https://download.cnki.net/${pkgname}_${pkgver}_amd64.deb")
# strip will cause cajviewer core dumped
options=('!strip')
sha256sums=('a85c0526d3cdbbc33808c34f8c149050790134f8127b86cbb0bd53786bfeb88b')
sha256sums_x86_64=('3142c633d74dcf34ebaca9b7653f88ad3619f0b7a6cb689487b6cc583ec926d3')
_install() {
find ${@: 2} -type f,l -exec install -Dm$1 {} ${pkgdir}/{} \;
}
prepare() {
cd ${srcdir}
install -dm755 build
tar -xf data.* -C build
}
package() {
cd "$srcdir/build"
_install 644 opt/${pkgname}/bin
_install 644 opt/${pkgname}/doc/
# _install 644 opt/${pkgname}/lib -name "libreaderex_x64.so"
_install 644 opt/${pkgname}/lib/
_install 644 opt/${pkgname}/libexec/
_install 644 opt/${pkgname}/plugins/
_install 644 opt/${pkgname}/resources/
_install 644 opt/${pkgname}/translations/
_install 644 opt/${pkgname}/${pkgname}.png
_install 644 opt/${pkgname}/VERSION
for _exe in backgroundprocess CAJViewer start.sh
do
chmod 0755 ${pkgdir}/opt/${pkgname}/bin/${_exe}
done
chmod 0755 ${pkgdir}/opt/${pkgname}/libexec/QtWebEngineProcess
# install -dm755 ${pkgdir}/usr/bin/
# ln -s /opt/${pkgname}/bin/start.sh ${pkgdir}/usr/bin/${pkgname}
install -Dm755 ${srcdir}/cajviewer.sh -t ${pkgdir}/usr/bin
# mime
_install 644 usr/share/mime/
_install 644 usr/share/icons/
_install 644 usr/share/applications/
}
# vim: set sw=2 ts=2 et:
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Medium | 2 |
| 2026-10-31 00:07:41 | Medium | 2 |
| 2026-10-30 00:29:30 | Medium | 2 |
| 2026-10-29 00:13:55 | Medium | 2 |
| 2026-10-28 00:06:54 | Medium | 2 |
| 2026-10-27 00:23:28 | Medium | 2 |
| 2026-10-26 00:12:40 | Medium | 2 |
| 2026-10-25 00:20:48 | Medium | 2 |
| 2026-10-24 00:14:55 | Medium | 2 |
| 2026-10-23 00:02:19 | Medium | 2 |
| 2026-10-22 00:13:10 | Medium | 2 |
| 2026-10-21 00:12:50 | Medium | 2 |
| 2026-10-20 00:10:31 | Medium | 2 |
| 2026-10-19 00:03:55 | Medium | 2 |
| 2026-10-18 00:06:55 | Medium | 2 |
| 2026-10-17 00:21:55 | Medium | 2 |
| 2026-10-16 00:12:47 | Medium | 2 |
| 2026-10-15 00:28:05 | Medium | 2 |
| 2026-10-14 00:06:47 | Medium | 2 |
| 2026-10-13 00:23:45 | Medium | 2 |