opensquilla
The two `npx --yes asar` invocations (lines 69 and 79) use the well-known `asar` npm package (the official Electron archive tool) to unpack and repack the app.asar file. `npx --yes` will download the package from the npm registry if not cached, which is a mild supply-chain concern (no pinned version/hash), but `asar` is a widely-used, legitimate tool maintained by the Electron project. The actual code modification performed is minimal and clearly documented: it replaces two string literals in main.js to fix path resolution when running outside a packaged app. The sources are pulled from a GitHub releases page with sha256sums (one SKIP for a shell script is sloppy but not malicious). The Python snippet uses only stdlib+Pillow to convert an icon. No obfuscation, no exfiltration, no encoded payloads. The main concerns are: (1) unpinned `npx asar` download at build time, and (2) repackaging a macOS DMG for Linux use, which is unusual but not inherently malicious. Overall this is a low-quality/sloppy packaging practice rather than a genuine attack.
Triggered rules
llm_review
The static rules flagged this HIGH, but an AI model (anthropic/claude-sonnet-4.6) reviewed the full PKGBUILD and judged it LOW (confidence 75%): The two `npx --yes asar` invocations (lines 69 and 79) use the well-known `asar` npm package (the official Electron archive tool) to unpack and repack the app.asar file. `npx --yes` will download the package from the npm registry if not cached, which is a mild supply-chain concern (no pinned version/hash), but `asar` is a widely-used, legitimate tool maintained by the Electron project. The actual code modification performed is minimal and clearly documented: it replaces two string literals in main.js to fix path resolution when running outside a packaged app. The sources are pulled from a GitHub releases page with sha256sums (one SKIP for a shell script is sloppy but not malicious). The Python snippet uses only stdlib+Pillow to convert an icon. No obfuscation, no exfiltration, no encoded payloads. The main concerns are: (1) unpinned `npx asar` download at build time, and (2) repackaging a macOS DMG for Linux use, which is unusual but not inherently malicious. Overall this is a low-quality/sloppy packaging practice rather than a genuine attack.
1 higher static finding superseded - not the current verdict (shown for transparency)
remote_code_tool
`npx`/`bunx`/`pnpm dlx`/`deno run <url>` downloads AND runs a remote package at build time — the moral equivalent of piping a download into a shell.
-
PKGBUILD:69
npx --yes asar extract app.asar "${asar_tmpdir}/app" >/dev/null -
PKGBUILD:79
npx --yes asar pack "${asar_tmpdir}/app" app.asar >/dev/null
PKGBUILD
2 offending line(s) highlighted# Maintainer: duanluan <duanluan@outlook.com>
pkgname=opensquilla
pkgver=0.5.6
pkgrel=1
pkgdesc='OpenSquilla desktop app repackaged from the official macOS release'
arch=('x86_64')
url='https://opensquilla.cn/zh/'
license=('Apache-2.0')
depends=(
'electron42'
'hicolor-icon-theme'
'xdg-utils'
)
makedepends=(
'7zip'
'python'
'python-pillow'
)
options=('!strip' '!lto')
source=(
"OpenSquilla-${pkgver}-mac-arm64.dmg::https://github.com/TokenRhythm/opensquilla/releases/download/v${pkgver}/OpenSquilla-${pkgver}-mac-arm64.dmg"
"opensquilla-${pkgver}-py3-none-any.whl::https://github.com/TokenRhythm/opensquilla/releases/download/v${pkgver}/opensquilla-${pkgver}-py3-none-any.whl"
'opensquilla.sh'
'opensquilla-gateway.sh'
'opensquilla.desktop'
)
noextract=("OpenSquilla-${pkgver}-mac-arm64.dmg")
sha256sums=(
'3e6709b90c0a816949d5d790bb5d88afec21c581856f82bbcca529b458bb4f80'
'79a8644b6e62d9dbab602684189cff0350c2d6637d0df050d49c9a7a98b8f3f6'
'c101ed4bf5ff25352e2fc6136b7c5e4f542ec9c8724354f3afade11bbf6de939'
'SKIP'
'a5e72781a32dec1ac68ce5ab9d09539c8919d2785667996b8d7ffc2c1c0ad5f3'
)
prepare() {
cd "${srcdir}"
rm -rf dmg resources app.asar boot.html runtime app-update.yml opensquilla.png
mkdir -p dmg resources
7z x -bd -y "OpenSquilla-${pkgver}-mac-arm64.dmg" -odmg >/dev/null
local appdir resources_dir icon_path asar_tmpdir
appdir="$(find dmg -maxdepth 4 -type d -name 'OpenSquilla.app' ! -path '*/__MACOSX/*' -print -quit)"
[[ -n "${appdir}" ]] || {
echo 'Could not find OpenSquilla.app in upstream dmg' >&2
return 1
}
resources_dir="${appdir}/Contents/Resources"
icon_path="${resources_dir}/icon.icns"
install -Dm644 "${resources_dir}/app.asar" app.asar
install -Dm644 "${resources_dir}/boot.html" boot.html
if [[ -d "${resources_dir}/runtime" ]]; then
cp -a "${resources_dir}/runtime" .
find runtime -type f \( -name '.DS_Store' -o -name '._*' -o -name '*:com.apple.*' \) -delete
fi
if [[ -f "${resources_dir}/app-update.yml" ]]; then
install -Dm644 "${resources_dir}/app-update.yml" app-update.yml
fi
asar_tmpdir="$(mktemp -d)"
trap 'rm -rf "${asar_tmpdir}"' RETURN
npx --yes asar extract app.asar "${asar_tmpdir}/app" >/dev/null
python - "${asar_tmpdir}/app/dist/main.js" <<'PY'
from pathlib import Path
import sys
path = Path(sys.argv[1])
text = path.read_text()
text = text.replace('process.resourcesPath', 'dirname(app.getAppPath())')
text = text.replace('app.isPackaged', 'true')
path.write_text(text)
PY
npx --yes asar pack "${asar_tmpdir}/app" app.asar >/dev/null
python - "${icon_path}" <<'PY'
from pathlib import Path
from PIL import Image
import sys
img = Image.open(Path(sys.argv[1]))
img.save('opensquilla.png')
PY
}
package() {
cd "${srcdir}"
install -dm755 \
"${pkgdir}/usr/bin" \
"${pkgdir}/usr/lib/${pkgname}/resources" \
"${pkgdir}/usr/share/applications" \
"${pkgdir}/usr/share/icons/hicolor/512x512/apps"
install -Dm755 "${srcdir}/opensquilla.sh" \
"${pkgdir}/usr/bin/opensquilla"
install -Dm644 "${srcdir}/opensquilla.desktop" \
"${pkgdir}/usr/share/applications/opensquilla.desktop"
install -Dm644 app.asar \
"${pkgdir}/usr/lib/${pkgname}/resources/app.asar"
install -Dm644 boot.html \
"${pkgdir}/usr/lib/${pkgname}/resources/boot.html"
if [[ -d runtime ]]; then
cp -a runtime \
"${pkgdir}/usr/lib/${pkgname}/resources/"
rm -rf "${pkgdir}/usr/lib/${pkgname}/resources/runtime/gateway/opensquilla-gateway"
fi
install -dm755 "${pkgdir}/usr/lib/${pkgname}/resources/runtime/gateway"
install -Dm755 "${srcdir}/opensquilla-gateway.sh" \
"${pkgdir}/usr/lib/${pkgname}/resources/runtime/gateway/opensquilla-gateway"
install -Dm644 "${srcdir}/opensquilla-${pkgver}-py3-none-any.whl" \
"${pkgdir}/usr/lib/${pkgname}/resources/runtime/gateway/opensquilla-${pkgver}-py3-none-any.whl"
if [[ -f app-update.yml ]]; then
install -Dm644 app-update.yml \
"${pkgdir}/usr/lib/${pkgname}/resources/app-update.yml"
fi
install -Dm644 opensquilla.png \
"${pkgdir}/usr/share/icons/hicolor/512x512/apps/opensquilla.png"
}
Changes since previous scan
--- PKGBUILD @ 2026-10-12 00:18+++ PKGBUILD @ 2026-10-20 00:10@@ -1,7 +1,7 @@ # Maintainer: duanluan <duanluan@outlook.com> pkgname=opensquilla-pkgver=0.5.5+pkgver=0.5.6 pkgrel=1 pkgdesc='OpenSquilla desktop app repackaged from the official macOS release' arch=('x86_64')@@ -27,7 +27,7 @@ ) noextract=("OpenSquilla-${pkgver}-mac-arm64.dmg") sha256sums=(- '95204d777cf9ca527f5f46dc3a73914dc50b269676c146dabf456adf23a9109b'+ '3e6709b90c0a816949d5d790bb5d88afec21c581856f82bbcca529b458bb4f80' '79a8644b6e62d9dbab602684189cff0350c2d6637d0df050d49c9a7a98b8f3f6' 'c101ed4bf5ff25352e2fc6136b7c5e4f542ec9c8724354f3afade11bbf6de939' 'SKIP'Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 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 00:21:55 | Low | 2 |
| 2026-10-16 00:12:47 | Low | 2 |
| 2026-10-15 00:28:05 | Low | 2 |
| 2026-10-14 00:06:47 | Low | 2 |
| 2026-10-13 00:23:45 | Low | 2 |
| 2026-10-12 01:13:13 | Low | 2 |
| 2026-10-12 01:11:47 | High | 1 |
| 2026-10-12 00:18:51 | Low | 2 |
| 2026-10-11 00:26:05 | Low | 2 |
| 2026-10-10 00:11:52 | Low | 2 |
| 2026-10-09 00:05:33 | Low | 2 |
| 2026-10-08 00:28:03 | Low | 2 |
| 2026-10-07 00:21:34 | Low | 2 |
| 2026-10-06 00:13:36 | Low | 2 |
| 2026-10-05 23:40:58 | High | 1 |
| 2026-10-05 00:08:03 | Low | 2 |
| 2026-10-04 00:18:08 | Low | 2 |