cajviewer

maintainer yjun · 3 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged 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

MEDIUM source=() URL on a non-standard host 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")
MEDIUM AI review 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
1# Maintainer: yjun <jerrysteve1101 at gmail dot com>
2# Contributor: swordfeng <swordfeng123@gmail.com>
3# Contributor: TheGoliath <hidden>
4
5pkgname=cajviewer
6pkgver=9.0
7pkgrel=3
8pkgdesc="CAJViewer for Linux. Document Viewer for TEB, CAJ, NH, KDH and PDF format"
9arch=('x86_64')
10url="http://cajviewer.cnki.net/"
11license=('custom')
12depends=(
13 'glibc'
14 'gcc-libs'
15 'bash'
16 'hicolor-icon-theme'
17 'libxml2-legacy'
18# 'qt5-base'
19# 'libcups'
20# 'openssl-1.1'
21# 'qt5-webchannel'
22# 'qt5-webengine'
23)
24source=("cajviewer.sh")
25source_x86_64=("https://download.cnki.net/${pkgname}_${pkgver}_amd64.deb")
26
27# strip will cause cajviewer core dumped
28options=('!strip')
29sha256sums=('a85c0526d3cdbbc33808c34f8c149050790134f8127b86cbb0bd53786bfeb88b')
30sha256sums_x86_64=('3142c633d74dcf34ebaca9b7653f88ad3619f0b7a6cb689487b6cc583ec926d3')
31
32_install() {
33 find ${@: 2} -type f,l -exec install -Dm$1 {} ${pkgdir}/{} \;
34}
35
36prepare() {
37 cd ${srcdir}
38
39 install -dm755 build
40 tar -xf data.* -C build
41}
42
43package() {
44 cd "$srcdir/build"
45
46 _install 644 opt/${pkgname}/bin
47 _install 644 opt/${pkgname}/doc/
48 # _install 644 opt/${pkgname}/lib -name "libreaderex_x64.so"
49 _install 644 opt/${pkgname}/lib/
50 _install 644 opt/${pkgname}/libexec/
51 _install 644 opt/${pkgname}/plugins/
52 _install 644 opt/${pkgname}/resources/
53 _install 644 opt/${pkgname}/translations/
54 _install 644 opt/${pkgname}/${pkgname}.png
55 _install 644 opt/${pkgname}/VERSION
56
57 for _exe in backgroundprocess CAJViewer start.sh
58 do
59 chmod 0755 ${pkgdir}/opt/${pkgname}/bin/${_exe}
60 done
61 chmod 0755 ${pkgdir}/opt/${pkgname}/libexec/QtWebEngineProcess
62
63 # install -dm755 ${pkgdir}/usr/bin/
64 # ln -s /opt/${pkgname}/bin/start.sh ${pkgdir}/usr/bin/${pkgname}
65 install -Dm755 ${srcdir}/cajviewer.sh -t ${pkgdir}/usr/bin
66
67 # mime
68 _install 644 usr/share/mime/
69 _install 644 usr/share/icons/
70 _install 644 usr/share/applications/
71}
72
73# vim: set sw=2 ts=2 et:
74

Scan history

Scanned at (UTC)SeverityRules
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

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion