xp-pen-tablet
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:15
source=("XPPenLinux${pkgver}-${_vendor_rel}.deb::https://download01.xp-pen.com/file/2026/04/XPPenLinux${pkgver}-${_vendor_rel}.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 package from download01.xp-pen.com, which is the official XP-Pen vendor download server (consistent with their official download page at xp-pen.com/download). The package extracts and installs proprietary closed-source binaries and shared libraries directly into the system. The sha512sum is present and pins the specific binary, which mitigates silent substitution risk somewhat. However, the core concern remains: this is a closed-source, prebuilt binary blob from a vendor CDN host — if that host were compromised or the binary were backdoored, the checksum would not help (it only verifies the file hasn't changed in transit, not that the binary is safe). The package installs executables, .so libraries, a shell wrapper (PenTablet.sh), udev rules, systemd user services, and tmpfiles.d config — a broad attack surface if the binary were malicious. The sed modification to PenTablet.sh is benign (adds TMPDIR logic). The chown/chmod operations are reasonable hardening. This is a standard pattern for proprietary hardware driver packaging in the AUR (similar to wacom, huion, etc.), and download01.xp-pen.com is a known official XP-Pen distribution endpoint. The medium rating is appropriate: not clearly malicious, but installing unauditable closed-source binaries from a vendor CDN is an inherent supply-chain risk that cannot be fully mitigated.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Mikhail Velichko <efklid at gmail dot com>
# Contributor: Moon Sungjoon <sumoon at seoulsaram dot org>
# Contributor: Hurstel Alexandre <alexandre at hurstel dot eu>
# Contributor: Tobias Manske <aur at rad4day dot de>
# Contributor: Mikata Riko <sanbikappa at qq dot com>
pkgname=xp-pen-tablet
pkgver=4.0.15
_vendor_rel=260422
pkgrel=${_vendor_rel}.2
pkgdesc="XP-Pen (Official) Linux utility (New UI driver)"
arch=('x86_64')
url='https://www.xp-pen.com/download/index.html'
license=('custom')
source=("XPPenLinux${pkgver}-${_vendor_rel}.deb::https://download01.xp-pen.com/file/2026/04/XPPenLinux${pkgver}-${_vendor_rel}.deb")
install=${pkgname}.install
sha512sums=('ebaabc40973fa466b99af4e5b8158053bae07e13cdb009421df31b0b67c8479ad8c4dad0213061fa413f3c57011fd3940ef516d7bc0034796a152dc1c116c348')
prepare() {
tar -xf data.tar.xz
}
package() {
cp -dr --no-preserve=ownership usr ${pkgdir}/
# per-user tempdir for manual launches (.desktop -> PenTablet.sh): keep Qt's
# single-instance socket+lockfile in /run/user/UID so parallel logins don't collide
# on a shared /tmp lockfile. The systemd service sets TMPDIR=%t; ${TMPDIR:-...} respects it.
sed -i '/export LD_LIBRARY_PATH/a if [ -n "$XDG_RUNTIME_DIR" ]; then export TMPDIR="${TMPDIR:-$XDG_RUNTIME_DIR}"; fi' "${pkgdir}/usr/lib/pentablet/PenTablet.sh"
# conf files: set ownership and permissions for pre-existing files at install time.
# new files created by the app at runtime inherit group via setgid on the directory (see tmpfiles.d below).
chown root:users "${pkgdir}"/usr/lib/pentablet/conf/xppen/*
chmod 0664 "${pkgdir}"/usr/lib/pentablet/conf/xppen/*
# libraries: read-only
chmod 0644 "${pkgdir}"/usr/lib/pentablet/lib/*.so.*
chmod 0644 "${pkgdir}/usr/lib/pentablet/platforms/libqxcb.so"
chmod 0644 "${pkgdir}/usr/share/applications/xppentablet.desktop"
chmod 0644 "${pkgdir}/usr/share/icons/hicolor/256x256/apps/xppentablet.png"
install -Dm0644 ${pkgdir}/usr/lib/pentablet/doc/EULA ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
# conf directory: tmpfiles.d sets setgid so files created by the app inherit group users
mkdir -p "${pkgdir}/usr/lib/tmpfiles.d"
cat <<EOF >"${pkgdir}/usr/lib/tmpfiles.d/xp-pen-tablet.conf"
d /usr/lib/pentablet/conf/xppen 2775 root users - -
EOF
#https://wiki.archlinux.org/title/Users_and_groups#Pre-systemd_groups
#use udev uaccess for device permission
mkdir -p ${pkgdir}/usr/lib/udev/rules.d/
cat <<EOF >${pkgdir}/usr/lib/udev/rules.d/10-xp-pen.rules
KERNEL=="uinput",SUBSYSTEMS=="misc",MODE="0660",TAG+="uaccess",OPTIONS+="static_node=uinput"
SUBSYSTEMS=="usb",ATTRS{idVendor}=="28bd",MODE="0660",TAG+="uaccess"
EOF
#Using systemd user service instead of mandatory autostart
mkdir -p ${pkgdir}/usr/lib/systemd/user
cat <<EOF >$pkgdir/usr/lib/systemd/user/xppentablet.service
[Unit]
Description=XPPen Driver
Requires=xdg-desktop-autostart.target
After=xdg-desktop-autostart.target
[Service]
Environment=QT_QPA_PLATFORM=xcb
# per-user tempdir (/run/user/UID): QtSingleApplication keeps its socket+lockfile here,
# so parallel logins don't collide on a shared /tmp lockfile (see qtsingleapp-* handling)
Environment=TMPDIR=%t
ExecStart=/usr/lib/pentablet/PenTablet.sh /mini
[Install]
WantedBy=xdg-desktop-autostart.target
EOF
}
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 |