apifox
The package downloads a prebuilt tarball from a non-whitelisted but plausibly official Aliyun CDN host; however, it is a standard distribution method for the vendor, checksums are provided and match, and the content is a self-contained Electron app without obfuscated payloads or remote code execution.
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-2507) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The package downloads a prebuilt tarball from a non-whitelisted but plausibly official Aliyun CDN host; however, it is a standard distribution method for the vendor, checksums are provided and match, and the content is a self-contained Electron app without obfuscated payloads or remote code execution.
1 higher static finding superseded - not the current verdict (shown for transparency)
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:50
"${_source_archive}::https://file-assets-cdn.oss-cn-hangzhou.aliyuncs.com/download/Apifox-linux-manual-latest.tar.gz"
PKGBUILD
1 offending line(s) highlighted# Maintainer: duanluan <duanluan@outlook.com>
pkgname=apifox
pkgver=2.8.53
pkgrel=1
pkgdesc='API documentation, debugging, mocking, and automated testing tool'
arch=('x86_64')
url='https://apifox.com/'
license=('LicenseRef-Proprietary')
depends=(
'alsa-lib'
'at-spi2-core'
'cairo'
'dbus'
'expat'
'gcc-libs'
'glib2'
'glibc'
'gtk3'
'hicolor-icon-theme'
'libcups'
'libnotify'
'libsecret'
'libx11'
'libxcb'
'libxcomposite'
'libxdamage'
'libxext'
'libxfixes'
'libxkbcommon'
'libxrandr'
'libxss'
'libxtst'
'mesa'
'nspr'
'nss'
'pango'
'systemd-libs'
'util-linux-libs'
'xdg-utils'
)
optdepends=(
'java-runtime: run the bundled Java database executors'
'libappindicator-gtk3: system tray icon support'
)
conflicts=('api-fox-bin' 'apifox-bin' 'apifox-appimage')
options=('!strip' '!lto')
_source_archive="Apifox-linux-manual-${pkgver}.tar.gz"
source=(
"${_source_archive}::https://file-assets-cdn.oss-cn-hangzhou.aliyuncs.com/download/Apifox-linux-manual-latest.tar.gz"
'apifox.desktop'
'apifox.png'
)
sha256sums=(
'35bf90ad81d8d3c9e918ea5431499829a1ac2fb1b67d02f9a98b2e4da0f7a400'
'4478f9ad5f70828608bde15a50fe700a6b8ff83d632dd065bac4bcbd3eedbe9e'
'b3d3b84f5a5f35ef8a85b0db3ddcb239fb982ee8a6d53a5fb81ed296021fb44a'
)
package() {
local upstream_dir="${srcdir}/apifox-${pkgver}"
local install_root="${pkgdir}/opt/Apifox"
for required_path in \
"${upstream_dir}/apifox" \
"${upstream_dir}/chrome-sandbox" \
"${upstream_dir}/resources/app.asar" \
"${upstream_dir}/resources/app.asar.unpacked/package.json" \
"${upstream_dir}/LICENSE.electron.txt" \
"${upstream_dir}/LICENSES.chromium.html"; do
[[ -e "${required_path}" ]] || {
printf 'missing required upstream path: %s\n' "${required_path}" >&2
return 1
}
done
install -dm755 "${install_root}"
cp -a "${upstream_dir}/." "${install_root}/"
install -dm755 "${pkgdir}/usr/bin"
ln -s "/opt/Apifox/apifox" "${pkgdir}/usr/bin/apifox"
# Electron's sandbox helper must retain its setuid bit for sandboxed renderers.
chmod 4755 "${install_root}/chrome-sandbox"
install -Dm644 "${srcdir}/apifox.desktop" \
"${pkgdir}/usr/share/applications/apifox.desktop"
# Official app logo (upstream app.asar.unpacked/dist/assets/logo.png,
# resized to 512x512). Installed into 512x512 because hicolor's index.theme
# declares no 1024x1024 directory, so icons placed there are never found.
install -Dm644 "${srcdir}/apifox.png" \
"${pkgdir}/usr/share/icons/hicolor/512x512/apps/apifox.png"
install -Dm644 "${upstream_dir}/LICENSE.electron.txt" \
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE.electron.txt"
install -Dm644 "${upstream_dir}/LICENSES.chromium.html" \
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSES.chromium.html"
}
Changes since previous scan
--- PKGBUILD @ 2026-10-29 00:13+++ PKGBUILD @ 2026-11-01 00:21@@ -1,7 +1,7 @@ # Maintainer: duanluan <duanluan@outlook.com> pkgname=apifox-pkgver=2.8.52+pkgver=2.8.53 pkgrel=1 pkgdesc='API documentation, debugging, mocking, and automated testing tool' arch=('x86_64')@@ -52,7 +52,7 @@ 'apifox.png' ) sha256sums=(- '7d6a5911707b5a9341b46560700dbcf397f64e8f4c6c43e8efc650722458f97c'+ '35bf90ad81d8d3c9e918ea5431499829a1ac2fb1b67d02f9a98b2e4da0f7a400' '4478f9ad5f70828608bde15a50fe700a6b8ff83d632dd065bac4bcbd3eedbe9e' 'b3d3b84f5a5f35ef8a85b0db3ddcb239fb982ee8a6d53a5fb81ed296021fb44a' )Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Low | 2 |
| 2026-10-31 00:07:41 | Low | 2 |
| 2026-10-30 00:29:30 | Low | 2 |
| 2026-10-29 07:52:02 | Medium | 1 |
| 2026-10-29 00:13:55 | Low | 2 |
| 2026-10-28 00:06:54 | Low | 2 |
| 2026-10-27 00:23:28 | Low | 2 |
| 2026-10-26 00:12:40 | Low | 2 |
| 2026-10-25 00:20:48 | Low | 2 |
| 2026-10-24 05:39:24 | Medium | 1 |
| 2026-10-24 00:14:55 | Low | 2 |
| 2026-10-23 00:02:19 | Low | 2 |
| 2026-10-22 00:13:10 | Low | 2 |
| 2026-10-21 00:12:50 | Low | 2 |
| 2026-10-20 00:10:31 | Low | 2 |
| 2026-10-19 00:03:55 | Low | 2 |
| 2026-10-18 00:06:55 | Low | 2 |
| 2026-10-17 05:17:05 | Medium | 1 |
| 2026-10-17 00:21:55 | Medium | 2 |
| 2026-10-16 00:12:47 | Medium | 2 |