cursor-appimage
The package downloads a prebuilt AppImage from a non-whitelisted host (downloads.cursor.com), which is an unverifiable executable artifact; if compromised, it could lead to code execution during extraction or runtime.
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
"Cursor-${pkgver}.AppImage::https://downloads.cursor.com/production/${_commit}/linux/x64/Cursor-${pkgver}-x86_64.AppImage"
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 95%): The package downloads a prebuilt AppImage from a non-whitelisted host (downloads.cursor.com), which is an unverifiable executable artifact; if compromised, it could lead to code execution during extraction or runtime.
PKGBUILD
1 offending line(s) highlighted# Maintainer: kewl fft <kewl@alto.eu.org>
pkgname=cursor-appimage
pkgver=3.19.13
pkgrel=1
_ver=3.19
_commit="dd066f332fcea7382764400fde902f61920648d5"
pkgdesc="Cursor AI code editor (AppImage, extracted)"
arch=('x86_64')
url="https://www.cursor.com"
license=('custom')
depends=('glibc' 'gtk3' 'nss' 'libxss' 'alsa-lib')
conflicts=('cursor-bin')
provides=('cursor')
options=(!strip)
_watch=(
'https://api2.cursor.sh/updates/download/golden/linux-x64/cursor/${_ver}' 'header' 'regex' 'Cursor-([0-9.]+)-x86_64.AppImage' 'pkgver'
'https://api2.cursor.sh/updates/download/golden/linux-x64/cursor/${_ver}' 'header' 'regex' 'location:.*production/([a-f0-9]+)/' '_commit'
)
source=(
"Cursor-${pkgver}.AppImage::https://downloads.cursor.com/production/${_commit}/linux/x64/Cursor-${pkgver}-x86_64.AppImage"
)
sha512sums=('3fb9c5f8c3bc4dadae81f39a0c58ac742a7b7260358b46c832c5e0974685350095de5aec7ce882473b341fcbbe755839a619b46f98cb70715ee15d7ce057416e')
prepare() {
cd "${srcdir}"
chmod +x Cursor-${pkgver}.AppImage
./Cursor-${pkgver}.AppImage --appimage-extract
}
package() {
install -d "${pkgdir}/opt/cursor"
cp -a squashfs-root/* "${pkgdir}/opt/cursor/"
# --- FIX APPIMAGE ---
# Replace broken AppRun with working launcher
cat > "${pkgdir}/opt/cursor/AppRun" <<'EOF'
#!/bin/bash
HERE="$(cd "$(dirname "$0")" && pwd)"
export PATH="$HERE/usr/bin:$PATH"
export LD_LIBRARY_PATH="$HERE/usr/lib:$HERE/usr/lib64:$HERE/lib:$LD_LIBRARY_PATH"
export XDG_DATA_DIRS="$HERE/usr/share:$XDG_DATA_DIRS"
exec "$HERE/usr/share/cursor/cursor" "$@"
EOF
chmod +x "${pkgdir}/opt/cursor/AppRun"
# chrome sandbox (required by Electron)
if [[ -f "${pkgdir}/opt/cursor/chrome-sandbox" ]]; then
chmod 4755 "${pkgdir}/opt/cursor/chrome-sandbox"
fi
# CLI launcher
install -Dm755 /dev/stdin "${pkgdir}/usr/bin/cursor" <<'EOF'
#!/bin/bash
exec /opt/cursor/AppRun "$@"
EOF
# Desktop entry
install -Dm644 squashfs-root/cursor.desktop \
"${pkgdir}/usr/share/applications/cursor.desktop"
sed -i 's|^Exec=.*|Exec=cursor %F|' \
"${pkgdir}/usr/share/applications/cursor.desktop"
sed -i 's|^Icon=.*|Icon=cursor|' \
"${pkgdir}/usr/share/applications/cursor.desktop"
# Icons
for size in 16 32 48 64 128 256 512; do
icon="squashfs-root/usr/share/icons/hicolor/${size}x${size}/apps/cursor.png"
[[ -f "$icon" ]] && install -Dm644 "$icon" \
"${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/cursor.png"
done
}
Changes since previous scan
--- PKGBUILD @ 2026-09-07 00:30+++ PKGBUILD @ 2026-09-17 00:27@@ -1,10 +1,10 @@ # Maintainer: kewl fft <kewl@alto.eu.org> pkgname=cursor-appimage-pkgver=3.19.7+pkgver=3.19.13 pkgrel=1 _ver=3.19-_commit="90de2327392570a5f5f625c656c6749d228e6437"+_commit="dd066f332fcea7382764400fde902f61920648d5" pkgdesc="Cursor AI code editor (AppImage, extracted)" arch=('x86_64') url="https://www.cursor.com"@@ -22,7 +22,7 @@ "Cursor-${pkgver}.AppImage::https://downloads.cursor.com/production/${_commit}/linux/x64/Cursor-${pkgver}-x86_64.AppImage" ) -sha512sums=('0e8ea7ed6da3ea1817f98c98d6e5c04de12bfc55cc6e28b6c3fc8485e1d588be68f9ecd69faa32401cea02546d9061893916c84df5280534816fe1cb20a9c800')+sha512sums=('3fb9c5f8c3bc4dadae81f39a0c58ac742a7b7260358b46c832c5e0974685350095de5aec7ce882473b341fcbbe755839a619b46f98cb70715ee15d7ce057416e') prepare() { cd "${srcdir}"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 07:13:50 | Medium | 2 |
| 2026-09-07 00:30:15 | Medium | 2 |
| 2026-09-06 00:17:06 | Medium | 2 |
| 2026-09-05 07:59:42 | 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 |