kimi-bin
The package downloads a prebuilt Windows executable (Kimi-Setup) from a non-standard host (moonshot.cn) which is then extracted and repackaged; while the intent is to repackage for Linux, the source is an unverifiable binary from a non-whitelisted, project-adjacent host, creating a supply-chain risk if the host were compromised or the download intercepted.
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:22
"kimi_${pkgver}.exe::https://kimi-img.moonshot.cn/app/upgrade/Kimi-Setup-${pkgver}.exe"
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 85%): The package downloads a prebuilt Windows executable (Kimi-Setup) from a non-standard host (moonshot.cn) which is then extracted and repackaged; while the intent is to repackage for Linux, the source is an unverifiable binary from a non-whitelisted, project-adjacent host, creating a supply-chain risk if the host were compromised or the download intercepted.
PKGBUILD
1 offending line(s) highlighted# Maintainer: AUR package maintainer
pkgname=kimi-bin
pkgver=3.2.5
pkgrel=3
pkgdesc='Kimi desktop client, repackaged for the system Electron runtime'
arch=('x86_64')
url='https://www.kimi.com/'
license=('LicenseRef-proprietary')
depends=('electron41' 'git' 'python' 'uv')
makedepends=('7zip' 'asar')
provides=('kimi')
conflicts=('kimi')
options=('!strip')
source=(
'LICENSE'
'daimon'
'kimi.desktop'
'kimi.sh'
)
source_x86_64=(
"kimi_${pkgver}.exe::https://kimi-img.moonshot.cn/app/upgrade/Kimi-Setup-${pkgver}.exe"
'better-sqlite3-v12.8.0-electron-v145-linux-x64.tar.gz::https://github.com/WiseLibs/better-sqlite3/releases/download/v12.8.0/better-sqlite3-v12.8.0-electron-v145-linux-x64.tar.gz'
)
noextract=("kimi_${pkgver}.exe")
sha256sums=('3d0ecc0dd3c31a9aaa58f4be041e10c9850e85505975642a40be1aea39ed9587'
'a50cb2d9d215fa61a62daa55ba4f555a3b12330b1f35d70327855d11f1360544'
'01f7417e0c0b5a7ede1d10aa26fa64fa6e0983817bb013486bd5a8bf080ff5f8'
'7d85bbea6f043c28474aaa6a33b5a9acb2c0ca3c5bdc1b74977cce9394579a50')
sha256sums_x86_64=('6dbdd35b9003c743633b8e3e776653e7550641014299dd7722fc374a8d7880bf'
'6a818b219018175261e1c0e9cd8f7de52d89ed9b4d2f97173e1b255b30a1db88')
prepare() {
rm -rf "${srcdir}/nsis" "${srcdir}/payload" "${srcdir}/app" \
"${srcdir}/daimon-bundle"
mkdir -p "${srcdir}/nsis" "${srcdir}/payload" \
"${srcdir}/daimon-bundle"
7z x -y "${srcdir}/kimi_${pkgver}.exe" -o"${srcdir}/nsis"
7z x -y "${srcdir}/nsis/\$PLUGINSDIR/app-64.7z" -o"${srcdir}/payload"
asar extract "${srcdir}/payload/resources/app.asar" "${srcdir}/app"
tar -xzf "${srcdir}/payload/resources/resources/daimon-bundle.tar.gz" \
-C "${srcdir}/daimon-bundle" \
./app/daimon \
./release \
./bundle.json \
./.daimon-bundle-stamp
install -Dm755 "${srcdir}/daimon" \
"${srcdir}/daimon-bundle/bin/daimon"
tar -xzf \
"${srcdir}/better-sqlite3-v12.8.0-electron-v145-linux-x64.tar.gz" \
-C "${srcdir}/daimon-bundle/app/daimon/node_modules/better-sqlite3"
local renderer="${srcdir}/app/out/renderer/assets/common-CEwlbJLP.js"
local main="${srcdir}/app/out/main/index.js"
# Updates for an AUR package must be handled by pacman, not electron-updater.
sed -i 's/^ setupAutoUpdater();$/ \/\* Updates are managed by pacman. \*\//' "${main}"
# Windows executables cannot run under the system Linux Electron runtime.
find "${srcdir}/app" "${srcdir}/daimon-bundle" \
-type f -iname '*.exe' -delete
find "${srcdir}/app" "${srcdir}/daimon-bundle" -type f \( \
-iname '*.ts' -o \
-iname '*.mts' -o \
-iname '*.cts' -o \
-iname '*.tsx' \
\) -delete
# Daimon's bundled package.json lists its build-time devDependencies, none of
# which are shipped in node_modules; strip the manifold of it declarations.
sed -i \
'/^ "devDependencies": {$/,/^ },$/d' \
"${srcdir}/daimon-bundle/app/daimon/package.json"
asar pack "${srcdir}/app" "${srcdir}/kimi.asar"
}
package() {
install -Dm644 "${srcdir}/kimi.asar" \
"${pkgdir}/usr/lib/kimi/app.asar"
# 3.2.5 preflight expects a Node runtime at electron's resourcesRoot/runtime/node;
# point it at the system electron (the daimon launcher ignores the passed path
# and runs through electron41 anyway, matching the better-sqlite3 electron-v145 ABI).
install -d "${pkgdir}/usr/lib/electron41/resources/resources/runtime"
ln -s /usr/bin/electron41 \
"${pkgdir}/usr/lib/electron41/resources/resources/runtime/node"
install -d "${pkgdir}/usr/lib/kimi/daimon-bundle"
cp -a "${srcdir}/daimon-bundle/." \
"${pkgdir}/usr/lib/kimi/daimon-bundle/"
install -Dm755 "${srcdir}/kimi.sh" \
"${pkgdir}/usr/bin/kimi"
install -Dm644 "${srcdir}/kimi.desktop" \
"${pkgdir}/usr/share/applications/kimi.desktop"
# hicolor only scans directories registered in its index.theme; the largest
# registered size is 512x512/scalable. Install into the common registered
# sizes so Plasma finds the icon regardless of display size.
install -Dm644 "${srcdir}/app/assets/icon.png" \
"${pkgdir}/usr/share/icons/hicolor/256x256/apps/kimi.png"
install -Dm644 "${srcdir}/app/assets/icon.png" \
"${pkgdir}/usr/share/icons/hicolor/512x512/apps/kimi.png"
install -Dm644 "${srcdir}/app/assets/icon.png" \
"${pkgdir}/usr/share/icons/hicolor/1024x1024/apps/kimi.png"
install -Dm644 "${srcdir}/LICENSE" \
"${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-01 00:21:48 | Medium | 2 |
| 2026-10-31 00:07:41 | Medium | 2 |
| 2026-10-30 00:29:30 | Medium | 2 |
| 2026-10-29 00:13:55 | Medium | 2 |
| 2026-10-28 00:06:54 | Medium | 2 |
| 2026-10-27 00:23:28 | Medium | 2 |
| 2026-10-26 00:12:40 | Medium | 2 |
| 2026-10-25 00:20:48 | Medium | 2 |
| 2026-10-24 00:14:55 | Medium | 2 |
| 2026-10-23 00:02:19 | Medium | 2 |
| 2026-10-22 00:13:10 | Medium | 2 |
| 2026-10-21 00:12:50 | Medium | 2 |
| 2026-10-20 00:10:31 | Medium | 2 |
| 2026-10-19 00:03:55 | Medium | 2 |
| 2026-10-18 00:06:55 | Medium | 2 |
| 2026-10-17 00:21:55 | Medium | 2 |
| 2026-10-16 00:12:47 | Medium | 2 |
| 2026-10-15 00:28:05 | Medium | 2 |
| 2026-10-14 00:06:47 | Medium | 2 |
| 2026-10-13 00:23:45 | Medium | 2 |