boxd-cli-bin
The package downloads a prebuilt binary from a non-standard host (boxd.sh) which is not on the standard whitelist; while the domain appears project-specific, the lack of verifiable source code for the binary creates a supply-chain risk if the host is compromised.
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:23
source_x86_64=(boxd-cli-bin-0.1.23-x86_64::https://boxd.sh/downloads/cli/boxd-linux-amd64 )
llm_review
An AI model (qwen/qwen3-235b-a22b-07-25) reviewed this and agrees it is MEDIUM (confidence 90%): The package downloads a prebuilt binary from a non-standard host (boxd.sh) which is not on the standard whitelist; while the domain appears project-specific, the lack of verifiable source code for the binary creates a supply-chain risk if the host is compromised.
PKGBUILD
1 offending line(s) highlighted# Maintainer: theorangeguo
# Packaging Repo: https://github.com/theorangeguo/aur-packages/tree/main/packages/boxd-cli-bin
pkgname=boxd-cli-bin
pkgver=0.1.23
pkgrel=1
pkgdesc=External\ CLI\ for\ managing\ boxd\ cloud\ VMs
arch=(x86_64 aarch64 )
url=https://boxd.sh/
license=(custom:boxd-terms )
depends=(ca-certificates glibc )
makedepends=()
checkdepends=()
optdepends=(openssh:\ connect\ to\ boxd\ VMs\ via\ ssh )
options=(\!strip )
provides=(boxd boxd-cli )
conflicts=(boxd boxd-cli )
validpgpkeys=()
install=boxd-cli-bin.install
source=(LICENSE )
sha256sums=('7f5da622099b2595235408e5130e231f74b8a4d6972fd0d5234be963f5baa247')
sha256sums_x86_64=('4e551e178d4972c31e91e1b1e32f1d2b28d343fa321f026b4b14452c3da76297')
sha256sums_aarch64=('4d50887bd8ba01d7e5b4e04688659ba68af494f357e34b0add7b77e4825639e1')
source_x86_64=(boxd-cli-bin-0.1.23-x86_64::https://boxd.sh/downloads/cli/boxd-linux-amd64 )
source_aarch64=(boxd-cli-bin-0.1.23-aarch64::https://boxd.sh/downloads/cli/boxd-linux-arm64 )
_binary_source_path=boxd-cli-bin-0.1.23-\*
_install_bin_path=/usr/bin/boxd
_wrapper_source_path=''
_wrapper_install_path=''
_wrapper_mode=755
_service_file=''
_service_install_path=''
_doc_files=()
_license_files=(LICENSE )
package() {
_resolve_required_source_file() {
local pattern=$1
local matches=()
local nullglob_was_set=false
shopt -q nullglob && nullglob_was_set=true
shopt -s nullglob
matches=("${srcdir}"/$pattern)
[ "$nullglob_was_set" = true ] || shopt -u nullglob
if [ "${#matches[@]}" -ne 1 ]; then
printf 'Expected exactly one source match for pattern %s, found %s\n' "$pattern" "${#matches[@]}" >&2
return 1
fi
[ -f "${matches[0]}" ] || {
printf 'Matched source is not a file: %s\n' "${matches[0]}" >&2
return 1
}
printf '%s\n' "${matches[0]}"
}
_install_optional_source_files() {
local pattern=$1
local target_dir=$2
local mode=$3
local matches=()
local matched_file
local nullglob_was_set=false
shopt -q nullglob && nullglob_was_set=true
shopt -s nullglob
matches=("${srcdir}"/$pattern)
[ "$nullglob_was_set" = true ] || shopt -u nullglob
for matched_file in "${matches[@]}"; do
[ -f "$matched_file" ] || continue
install -Dm"$mode" "$matched_file" "${pkgdir}${target_dir}/$(basename "$matched_file")"
done
}
local binary_source_file
binary_source_file=$(_resolve_required_source_file "${_binary_source_path}")
install -Dm755 "$binary_source_file" "${pkgdir}${_install_bin_path}"
if [ -n "${_wrapper_source_path}" ] && [ -n "${_wrapper_install_path}" ]; then
local wrapper_source_file
wrapper_source_file=$(_resolve_required_source_file "${_wrapper_source_path}")
install -Dm${_wrapper_mode} "$wrapper_source_file" "${pkgdir}${_wrapper_install_path}"
fi
local doc_file
for doc_file in "${_doc_files[@]}"; do
_install_optional_source_files "$doc_file" "/usr/share/doc/${pkgname}" 644
done
local license_file
for license_file in "${_license_files[@]}"; do
_install_optional_source_files "$license_file" "/usr/share/licenses/${pkgname}" 644
done
if [ -n "${_service_file}" ] && [ -f "${srcdir}/${_service_file}" ]; then
install -Dm644 "${srcdir}/${_service_file}" "${pkgdir}${_service_install_path}"
fi
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 00:27:14 | Medium | 2 |
| 2026-09-16 00:03:17 | Medium | 2 |
| 2026-09-15 00:25:31 | Medium | 2 |
| 2026-09-14 00:27:57 | Medium | 2 |
| 2026-09-13 00:19:54 | Medium | 2 |
| 2026-09-12 00:25:17 | Medium | 2 |
| 2026-09-11 00:19:22 | Medium | 2 |
| 2026-09-10 00:22:44 | Medium | 2 |
| 2026-09-09 00:04:09 | Medium | 2 |
| 2026-09-08 00:18:08 | Medium | 2 |
| 2026-09-07 00:30:15 | Medium | 2 |
| 2026-09-06 00:17:06 | Medium | 2 |
| 2026-09-05 00:16:27 | Medium | 2 |
| 2026-09-04 00:03:13 | Medium | 2 |
| 2026-09-03 00:15:47 | Medium | 2 |
| 2026-09-02 00:02:31 | Medium | 2 |
| 2026-09-01 00:11:19 | Medium | 2 |
| 2026-08-31 00:19:57 | Medium | 2 |
| 2026-08-30 00:04:14 | Medium | 2 |
| 2026-08-29 00:29:17 | Medium | 2 |