xctu

maintainer Michael-Wigham · 5 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged The PKGBUILD downloads prebuilt .run installer binaries from ftp1.digi.com (Digi International's official FTP server) and executes them during prepare(). ftp1.digi.com is the legitimate vendor distribution host for Digi International (makers of XBee modules), so this is not an unofficial or personal host — it is the actual upstream vendor. However, the binaries are downloaded over plain HTTP (not HTTPS), meaning there is no transport-layer integrity protection, and the checksums are MD5 (weak but present). The executed .run installer is a prebuilt binary blob whose contents cannot be audited from the PKGBUILD alone. This pattern — executing a vendor-supplied binary installer to extract files — is common for proprietary software in the AUR (similar to many other packages like teamviewer, zoom, etc.) and is not inherently malicious. The risk is real but typical for this class of package: if the vendor host were compromised or the HTTP connection MITMed, arbitrary code would execute. This is a genuine medium-severity supply-chain concern (executed binary from a vendor host over plain HTTP with weak checksums) but not a high-severity attack.

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:15 source_i686=("http://ftp1.digi.com/support/utilities/40002880_AJ.run")
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD downloads prebuilt .run installer binaries from ftp1.digi.com (Digi International's official FTP server) and executes them during prepare(). ftp1.digi.com is the legitimate vendor distribution host for Digi International (makers of XBee modules), so this is not an unofficial or personal host — it is the actual upstream vendor. However, the binaries are downloaded over plain HTTP (not HTTPS), meaning there is no transport-layer integrity protection, and the checksums are MD5 (weak but present). The executed .run installer is a prebuilt binary blob whose contents cannot be audited from the PKGBUILD alone. This pattern — executing a vendor-supplied binary installer to extract files — is common for proprietary software in the AUR (similar to many other packages like teamviewer, zoom, etc.) and is not inherently malicious. The risk is real but typical for this class of package: if the vendor host were compromised or the HTTP connection MITMed, arbitrary code would execute. This is a genuine medium-severity supply-chain concern (executed binary from a vendor host over plain HTTP with weak checksums) but not a high-severity attack.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Michael Wigham <michael@wigham.net>
2# Contributor: Nils Van Zuijlen <nils.van-zuijlen@mailo.com>, Manoel Brunnen <manoel.brunnen@gmail.com>
3
4pkgname=xctu
5pkgver=6.5.13
6pkgrel=1
7pkgdesc="Next Generation Configuration Platform for XBee/RF Solutions."
8arch=('i686' 'x86_64')
9url="http://www.digi.com/products/xbee-rf-solutions/xctu-software/xctu"
10license=('custom')
11depends=('gtk2' 'java-runtime' 'libxtst' 'alsa-lib' 'gconf' 'nss' 'libglvnd' 'libnet' 'libxt')
12options=('!strip')
13noextract=()
14
15source_i686=("http://ftp1.digi.com/support/utilities/40002880_AJ.run")
16md5sums_i686=('e28c71e26accdcb4d36395e26ba19835')
17
18source_x86_64=("http://ftp1.digi.com/support/utilities/40002881_AJ.run")
19md5sums_x86_64=('229ab2d443eded6184ecaef50ff99913')
20
21source=(
22 'launcher.sh'
23 'xctu.desktop'
24 'fix.patch'
25)
26
27md5sums=(
28 '672a983dc8d23e4f6a496158d4852b99'
29 '6612313eaebab9350989f75ca8d5d2ab'
30 '92698e7e64cfcfbc8aae271ff904def6'
31)
32
33prepare() {
34 if [[ $CARCH == 'i686' ]]; then
35 _setup_file=40002880_AJ.run
36 else
37 _setup_file=40002881_AJ.run
38 fi
39
40 chmod u+x $_setup_file
41
42 # Do not allow the installer to create a desktop file directly
43 # this will be handled by the package() with our own desktop entry file
44 mkdir -p $srcdir/Desktop
45 HOME=$srcdir
46
47 ./$_setup_file --installdir $srcdir --mode unattended --unattendedmodeui none
48 mv $srcdir/XCTU-NG $srcdir/$pkgname
49 echo $pkgver > $srcdir/$pkgname/version.txt
50 patch -p1 -N < $srcdir/fix.patch
51}
52
53package() {
54 install -d $pkgdir/opt
55 cp -a $srcdir/$pkgname $pkgdir/opt/$pkgname
56 install -Dm644 $srcdir/$pkgname/doc/License_Agreements.txt $pkgdir/usr/share/licenses/$pkgname/LICENSE
57
58 # Launcher
59 install -Dm755 $srcdir/launcher.sh $pkgdir/usr/bin/$pkgname
60
61 # CLI
62 ln -s /opt/xctu/XCTUcmd $pkgdir/usr/bin/XCTUcmd
63
64 # Desktop file
65 install -Dm644 $srcdir/$pkgname/icon.xpm $pkgdir/usr/share/icons/hicolor/256x256/apps/xctu.xpm
66 install -Dm755 $srcdir/xctu.desktop $pkgdir/usr/share/applications/xctu.desktop
67 install -Dm755 $srcdir/xctu.desktop $pkgdir/opt/$pkgname/XCTU.desktop
68}
69# vim:set ft=sh:
70

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