warp-cli
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:39
source=("cloudflare-warp_${_pkgver}_amd64.deb::https://downloads.cloudflareclient.com/v1/download/jammy-intel/version/${_pkgver}")
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 78%): The package downloads a prebuilt proprietary binary (.deb) from downloads.cloudflareclient.com, which is Cloudflare's official download host for their WARP client. This is not a random personal or unofficial host — it is the canonical vendor distribution endpoint. However, sha256sums='SKIP' means there is no integrity verification of the downloaded binary, so a MITM or server-side substitution would go undetected. The binary is then extracted and installed as a system service (warp-svc.service) running with elevated privileges. The combination of: (1) no checksum verification, (2) a prebuilt proprietary binary, and (3) installation as a privileged systemd service constitutes a genuine supply-chain risk even though the source host is legitimate. This is a real medium-severity concern — not a false positive — because the lack of checksums on an executed binary from even a legitimate vendor host is a meaningful integrity gap. The optional enterprise certificate installation is a minor additional concern but is gated on user-provided files. The package is not piracy and appears functional.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Kyle Thompson <kylejeromethompson@gmail.com>
#
# --- DISCLAIMER ---
# This PKGBUILD is an unofficial community contribution. It is not affiliated with,
# endorsed, or supported by Cloudflare
#
# The Cloudflare WARP agent is proprietary software. By building and installing
# this package, you acknowledge that you are downloading software directly from
# Cloudflare and agree to be bound by their End User License Agreement and
# Privacy Notice. You are solely responsible for ensuring you have a valid
# license to use the software.
#
# This installation script is provided "AS IS" without warranty of any kind,
# express or implied. The user assumes all risk and responsibility for its use.
#
# Terms of Use: https://www.cloudflare.com/website-terms/
# Privacy Notice: https://www.cloudflare.com/application/privacypolicy/
# --- Package Information ---
pkgname='warp-cli'
pkgdesc="Cloudflare WARP Client for Arch Linux"
arch=('x86_64')
url="https://www.cloudflare.com/"
license=('custom')
# --- Versioning ---
_pkgver='2025.8.779.0'
pkgver=${_pkgver}
pkgrel=1
# --- Dependencies and Conflicts ---
# FINAL CHANGE: Added 'nss' and 'dbus' to ensure all runtime dependencies are met.
depends=('glibc' 'openssl' 'gtk3' 'nftables' 'nss' 'dbus')
provides=("${pkgname}")
# --- Source File ---
# CRITICAL CHANGE: 'certificate.crt' is NOT listed here.
# This prevents makepkg from aborting if the file is missing from the PWD.
source=("cloudflare-warp_${_pkgver}_amd64.deb::https://downloads.cloudflareclient.com/v1/download/jammy-intel/version/${_pkgver}")
sha256sums=('SKIP')
# --- Packaging Function ---
package() {
# Extract the data archive.
tar -xzf "${srcdir}/data.tar.gz" -C "${pkgdir}"
# Move binaries from /bin to /usr/bin
mv "${pkgdir}/bin" "${pkgdir}/usr/bin"
# The service file is located at ./lib/systemd/system/warp-svc.service inside the archive.
# We need to move it to /usr/lib/systemd/system/ in the package.
install -Dm644 "${pkgdir}/lib/systemd/system/warp-svc.service" "${pkgdir}/usr/lib/systemd/system/warp-svc.service"
# Remove the old directory structure
rm -r "${pkgdir}/lib"
# Fix permissions for other files
if [ -d "${pkgdir}/usr/share/applications" ]; then
find "${pkgdir}/usr/share/applications" -type f -exec chmod 644 {} +
fi
if [ -d "${pkgdir}/usr/share/icons" ]; then
find "${pkgdir}/usr/share/icons" -type f -exec chmod 644 {} +
fi
# ----------------------------------------------------
# NEW RESILIENT STEP: Install Corporate Certificate (OPTIONAL)
# ----------------------------------------------------
# Check if 'certificate.crt' exists in the build directory ($srcdir).
if [ -f "${srcdir}/certificate.crt" ]; then
echo "Found certificate.crt! Installing to trust anchors for Enterprise use."
# SOURCE: Looks for the 'certificate.crt' file provided by the user.
# DESTINATION: Renames it to 'tenant-ca.crt' in the system trust anchors.
install -Dm644 "${srcdir}/certificate.crt" "${pkgdir}/etc/ca-certificates/trust-source/anchors/tenant-ca.crt"
else
echo "Note: certificate.crt not found. Skipping optional enterprise certificate installation."
fi
}
# --- Installation Script (for running update-ca-trust) ---
# This step is performed immediately after the package files are copied to the system.
post_install() {
# We run update-ca-trust regardless, as the binary install requires clean trust stores.
echo "Updating system certificate trust store..."
update-ca-trust
echo "Certificate trust store updated successfully."
}
# --- Removal Script ---
post_remove() {
echo "Updating system certificate trust store after removal..."
update-ca-trust
echo "Certificate trust store updated successfully."
}
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 |