boxplayer-bin
The PKGBUILD runs 'npm install' on external packages (aria2-lib, @motrix/nat-api) during prepare(), which are not declared in source or dependencies, posing a supply-chain risk if those packages are compromised.
Triggered rules
npm_install_external
Runs `npm/yarn/pnpm install <package>` for a package not in source=(), pulling unpinned, unreviewed code at build time. Severity downgraded: the package declares/looks like a Node.js consumer, where build-time installs are expected.
-
PKGBUILD:69
npm install aria2-lib @motrix/nat-api --save
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 90%): The PKGBUILD runs 'npm install' on external packages (aria2-lib, @motrix/nat-api) during prepare(), which are not declared in source or dependencies, posing a supply-chain risk if those packages are compromised.
PKGBUILD
1 offending line(s) highlighted# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
pkgname=boxplayer-bin
_pkgname=BoxPlayer
pkgver=5.0.30
_electronversion=40
pkgrel=1
pkgdesc="Unified cloud drive management, smart media library, media servers, and high-speed downloads.多网盘文件管理、媒体库、媒体服务器、AI Agent、音乐播放器和电子书阅读器,放在同一个跨平台桌面App里."
arch=(
'aarch64'
'x86_64'
)
url="https://www.xbyvideohub.com/"
_ghurl="https://github.com/gaozhangmin/boxplayer"
license=('GPL-3.0-only')
conflicts=("${pkgname%-bin}")
provides=("${pkgname%-bin}=${pkgver}")
depends=(
"electron${_electronversion}"
'nodejs'
)
makedepends=(
'asar'
'npm'
)
options=(
'!emptydirs'
)
source=("${pkgname%-bin}.sh")
source_aarch64=("${pkgname%-bin}-${pkgver}-aarch64.AppImage::${_ghurl}/releases/download/v${pkgver}/${pkgname%-bin}-${pkgver}-linux-arm64.AppImage")
source_x86_64=("${pkgname%-bin}-${pkgver}-x86_64.AppImage::${_ghurl}/releases/download/v${pkgver}/${pkgname%-bin}-${pkgver}-linux-x86_64.AppImage")
sha256sums=('a774c2f54fbbeeaac3cefc0f7250796d30c86d27f0fd40b7eaf9c0fdb021623d')
sha256sums_aarch64=('b6fe262e5a9f684c446e429623a31a84269239ff30f5fb8c4f372d59303fc2c2')
sha256sums_x86_64=('2a748af506efdd767961ce6424b6f6296bfd3ef187221e79824410608b3466e1')
_get_app_dir() {
find "${srcdir}" -type f -name "resources.pak" -exec dirname {} + | head -n 1
}
_check_electron_version() {
echo "Verifying Electron version..."
local _main_exe=$(find "$(_get_app_dir)" -maxdepth 1 -type f -executable -printf '%s %p\n' | sort -nr | head -1 | cut -d' ' -f2-)
[[ -z "${_main_exe}" ]] && echo -e "\033[1;33mNote: Could not find Electron binary.\033[0m" && return
local _elec_ver=$(strings "${_main_exe}" | grep -oP 'Electron/\K[0-9]+' | head -1)
[[ -z "${_elec_ver}" ]] && echo -e "\033[1;33mNote: Could not determine Electron version.\033[0m" && return
[[ "${_elec_ver}" != "${_electronversion}" ]] &&
echo -e "\033[1;31mWarning: Electron version mismatch! Detected: ${_elec_ver}, Expected: ${_electronversion}\033[0m" ||
echo -e "Electron version verified: \033[1;31m${_elec_ver}\033[0m"
}
prepare() {
sed -i -e "
s/@electronversion@/${_electronversion}/g
s/@appname@/${pkgname%-bin}/g
s/@runname@/app.asar/g
s/@cfgdirname@/${_pkgname}/g
" "${srcdir}/${pkgname%-bin}.sh"
if [ ! -x "${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage" ];then
chmod +x "${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage"
fi
if [ -d "${srcdir}/squashfs-root" ];then
rm -rf "${srcdir}/squashfs-root"
fi
"${srcdir}/${pkgname%-bin}-${pkgver}-${CARCH}.AppImage" --appimage-extract > /dev/null
_check_electron_version
local _app_dir=$(_get_app_dir)
sed -i "s/AppRun --no-sandbox/${pkgname%-bin}/g" "${_app_dir}/${pkgname%-bin}.desktop"
asar e "${_app_dir}/resources/app.asar" "${srcdir}/app.asar.unpacked"
rm -rf "${_app_dir}/resources/app.asar"
cd "${srcdir}/app.asar.unpacked"
sed -i '/"packageManager"/d' package.json
npm config set allow-remote all
npm install aria2-lib @motrix/nat-api --save
cd - > /dev/null
find "${srcdir}/app.asar.unpacked/dist" -type f \
-exec sed -i -e "
s/process.resourcesPath/\'\/usr\/lib\/${pkgname%-bin}\'/g
s/process.execPath/\'\/usr\/lib\/${pkgname%-bin}\'/g\
" {} +
asar p "${srcdir}/app.asar.unpacked" "${_app_dir}/resources/app.asar"
find "${_app_dir}/resources" -type d -perm 700 -exec chmod 755 {} +
}
package() {
install -Dm755 "${srcdir}/${pkgname%-bin}.sh" "${pkgdir}/usr/bin/${pkgname%-bin}"
install -Dm755 -d "${pkgdir}/usr/lib/${pkgname%-bin}"
local _app_dir=$(_get_app_dir)
cp -a "${_app_dir}/resources/"* "${pkgdir}/usr/lib/${pkgname%-bin}/"
find "${srcdir}" -type f \( -name "*.png" -o -name "*.svg" \) -path "*share/icons/*" | while read -r _i; do
_extension="${_i##*.}"
_icon_path="${_i#*share/icons/}"
_target_dir="/usr/share/icons/$(dirname "${_icon_path}")"
install -Dm644 "${_i}" "${pkgdir}${_target_dir}/${pkgname%-bin}.${_extension}"
done
install -Dm644 "${_app_dir}/${pkgname%-bin}.desktop" -t "${pkgdir}/usr/share/applications"
}
Changes since previous scan
--- PKGBUILD @ 2026-09-17 00:27+++ PKGBUILD @ 2026-09-17 05:24@@ -1,15 +1,15 @@ # Maintainer: zxp19821005 <zxp19821005 at 163 dot com> pkgname=boxplayer-bin _pkgname=BoxPlayer-pkgver=5.0.28+pkgver=5.0.30 _electronversion=40 pkgrel=1-pkgdesc="Unified cloud drive management, smart media library, media servers, and high-speed downloads.(Prebuilt version.Use system-wide electron)小白羊网盘 BoxPlayer - 多网盘统一管理 + 智能媒体库 + 媒体服务器 + 高速下载."+pkgdesc="Unified cloud drive management, smart media library, media servers, and high-speed downloads.多网盘文件管理、媒体库、媒体服务器、AI Agent、音乐播放器和电子书阅读器,放在同一个跨平台桌面App里." arch=( 'aarch64' 'x86_64' )-url="https://xbyvideohub.com/"+url="https://www.xbyvideohub.com/" _ghurl="https://github.com/gaozhangmin/boxplayer" license=('GPL-3.0-only') conflicts=("${pkgname%-bin}")@@ -29,8 +29,8 @@ source_aarch64=("${pkgname%-bin}-${pkgver}-aarch64.AppImage::${_ghurl}/releases/download/v${pkgver}/${pkgname%-bin}-${pkgver}-linux-arm64.AppImage") source_x86_64=("${pkgname%-bin}-${pkgver}-x86_64.AppImage::${_ghurl}/releases/download/v${pkgver}/${pkgname%-bin}-${pkgver}-linux-x86_64.AppImage") sha256sums=('a774c2f54fbbeeaac3cefc0f7250796d30c86d27f0fd40b7eaf9c0fdb021623d')-sha256sums_aarch64=('1de03d31cbedb0e25eed1013708dd258938553dc26d8d53eddb661ec2654cb53')-sha256sums_x86_64=('e8e41ca39f1a944d8bc06c63dbf8202adae3b28878717acf7a3ab8b7b945272f')+sha256sums_aarch64=('b6fe262e5a9f684c446e429623a31a84269239ff30f5fb8c4f372d59303fc2c2')+sha256sums_x86_64=('2a748af506efdd767961ce6424b6f6296bfd3ef187221e79824410608b3466e1') _get_app_dir() { find "${srcdir}" -type f -name "resources.pak" -exec dirname {} + | head -n 1 }Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-17 05:24:46 | Medium | 2 |
| 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 03:15:31 | Medium | 2 |
| 2026-09-08 00:18:08 | Medium | 2 |
| 2026-09-07 07:13:50 | 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 |