idrive-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:19
source=("idriveforlinux.bin::https://www.idrivedownloads.com/downloads/linux/download-for-linux/linux-bin/idriveforlinux.bin")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): The PKGBUILD downloads a prebuilt shell self-extracting binary installer from idrivedownloads.com (the official IDrive download host, consistent with their Linux backup product) with sha256sums=('SKIP') and no version pinning. The installer is then executed/unpacked and its embedded binaries (idrive, idevsutil engines, bundled Python) are installed and run as root on the target system. While idrivedownloads.com appears to be IDrive's legitimate download infrastructure, the combination of: (1) no checksum verification, (2) an unversioned 'latest' URL that could silently change, and (3) execution of prebuilt proprietary binaries with root privileges constitutes a genuine supply-chain risk. If the upstream host were compromised or the URL silently redirected, arbitrary code would execute as root with no integrity check. This is a real medium-severity concern, not a false positive, though there is no evidence of actual malice.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Andy <this.is.apb@gmail.com>
pkgname=idrive-bin
pkgver=3.12.0
pkgrel=2
pkgdesc="IDrive cloud backup for Linux - official interactive menu (idrive) and idevsutil engines"
arch=('x86_64')
url="https://www.idrive.com/online-backup-linux-scripts"
license=('LicenseRef-IDrive')
# popt: required by the idevsutil/idevsutil_dedup transfer engines (not part of
# base). curl/cronie/which: used by idrive at runtime for transfers and scheduling.
depends=('popt' 'curl' 'cronie' 'which')
provides=('idrive')
conflicts=('idrive')
# Vendored prebuilt binaries: don't strip/relink, and skip the static-lib check.
options=('!strip' '!emptydirs' 'staticlibs')
install="$pkgname.install"
# Upstream serves a single, unversioned "latest" installer, so the checksum
# cannot be pinned; pkgver() below reads the real version out of it after download.
source=("idriveforlinux.bin::https://www.idrivedownloads.com/downloads/linux/download-for-linux/linux-bin/idriveforlinux.bin")
sha256sums=('SKIP')
pkgver() {
grep -m1 -aoP '^APPVERSION="\K[^"]+' "$srcdir/idriveforlinux.bin"
}
package() {
cd "$srcdir"
# The .bin is a shell self-extractor with a gzipped tar appended after a
# line matching __idrive__; unpack that payload into /opt (DESTPARENT).
local marker
marker=$(awk '/^__idrive__/ {print NR + 1; exit}' idriveforlinux.bin)
# --no-same-owner: ignore the uids baked into the vendor tar so everything
# ends up root-owned under fakeroot.
install -d "$pkgdir/opt"
tail -n +"$marker" idriveforlinux.bin | tar xz --no-same-owner -C "$pkgdir/opt"
local dest="$pkgdir/opt/IDriveForLinux"
local deps="$dest/bin/Idrivelib/dependencies"
# Place the main menu binary for this architecture (k3 = modern kernels),
# mirroring what the upstream installer does, then drop the other arches.
tar xzf "$deps/linuxbin/k3/$CARCH/idrive.tar.gz" --no-same-owner -C "$dest/bin/"
chmod 0755 "$dest/bin/idrive"
rm -rf "$deps/linuxbin"
# Keep only the generic Linux transfer engines; the NAS-appliance variants
# (QNAP/Synology/Netgear/Vault) are useless on a desktop/server install.
find "$deps/evsbin" -type f -name '*.tar.gz' ! -name 'IDrive_linux_*' -delete
# Bundled python is per-arch; keep only this architecture's copy.
find "$deps/pythonbin" -mindepth 1 -maxdepth 1 ! -name k3 -exec rm -rf {} +
find "$deps/pythonbin/k3" -mindepth 1 -maxdepth 1 ! -name "$CARCH" -exec rm -rf {} +
# CLI entry point. idrive keeps its state under /opt and schedules root cron
# jobs, so it must run as root; the wrapper escalates via sudo when needed.
# It also enters the app's bin dir first, since idrive resolves some paths
# relative to the working directory.
install -d "$pkgdir/usr/bin"
cat > "$pkgdir/usr/bin/idrive" <<-'EOF'
#!/bin/sh
if [ "$(id -u)" -ne 0 ]; then
if command -v sudo >/dev/null 2>&1; then
exec sudo -- "$0" "$@"
fi
echo "idrive must be run as root; re-run with: sudo idrive" >&2
exit 1
fi
cd /opt/IDriveForLinux/bin && exec ./idrive "$@"
EOF
chmod 0755 "$pkgdir/usr/bin/idrive"
# Proprietary license: ship a pointer to the canonical Terms of Service plus
# the bundled readme. The full terms are not redistributed as text.
install -d "$pkgdir/usr/share/licenses/$pkgname"
cat > "$pkgdir/usr/share/licenses/$pkgname/LICENSE" <<-'EOF'
IDrive for Linux is proprietary software, Copyright IDrive Inc.
Use is governed by the IDrive Terms of Service:
https://www.idrive.com/terms-and-conditions
This package redistributes the unmodified official installer payload
from https://www.idrive.com/online-backup-linux-scripts for convenience.
EOF
install -m644 "$dest/bin/readme.txt" \
"$pkgdir/usr/share/licenses/$pkgname/readme.txt"
}
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 |