imago-bin
Triggered rules
orphaned_readopted
This package was orphaned and re-adopted within the last 30 days — a window where ownership transfers can introduce malicious changes.
zero_votes_recent
Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.
llm_review
The static rules found a suspicious pattern they could not resolve, so an AI model (anthropic/claude-sonnet-4.6) reviewed it and judged it HIGH (confidence 95%): This PKGBUILD is genuinely high risk for multiple reasons: (1) The only source is a local file named 'generator' with a SKIP'd checksum — there is no upstream URL, no integrity verification, and no way to audit what this script does. (2) The package() function explicitly calls 'sudo "$srcdir/generator"' — running an unverified, unaudited local script as root during the build phase. This is a severe violation of packaging norms; makepkg itself runs as a non-root user and calling sudo inside package() to escalate privileges is a classic malware pattern. (3) The 'generator' script presumably downloads the AppImage at build time (since no AppImage URL appears in sources), meaning the actual binary payload is fetched dynamically from an unspecified location with no checksum. This combination — opaque local script, sudo escalation, dynamic payload fetch, SKIP'd checksum — constitutes a genuine high-severity supply-chain risk regardless of whether the maintainer's intent is benign.
PKGBUILD
# Maintainer: AVN Bramg <anvilnu@gmail.com>
pkgname=imago-bin
pkgver=1.0.2
pkgrel=1
pkgdesc="Desktop image editor with layers, selection, 55+ effects and local AI (Paint.NET-style)"
arch=('x86_64')
url="https://anvilnu.github.io/Imago/"
license=('GPL3')
# El AppImage empaqueta Qt, Python y sus dependencias; del sistema solo hacen
# falta la caché de iconos y fontconfig para la integración de escritorio.
depends=('hicolor-icon-theme' 'fontconfig')
provides=('imago')
conflicts=('imago')
# Binario ya compilado (PyInstaller): no debe reprocesarse.
options=('!strip')
source=(
'generator'
)
sha256sums=(
'SKIP'
)
package() {
sudo "$srcdir/generator"
cd "$srcdir"
chmod +x "Imago-${pkgver}-x86_64.AppImage"
"./Imago-${pkgver}-x86_64.AppImage" --appimage-extract >/dev/null
# Aplicación (bundle PyInstaller) en /opt.
install -d "$pkgdir/opt/imago"
cp -a squashfs-root/usr/lib/imago/. "$pkgdir/opt/imago/"
# Lanzador en el PATH (el .desktop usa Exec=imago).
install -d "$pkgdir/usr/bin"
ln -s /opt/imago/Imago "$pkgdir/usr/bin/imago"
# Integración de escritorio: lanzador, icono y metadatos AppStream.
install -Dm644 squashfs-root/usr/share/applications/io.github.anvilnu.imago.desktop \
"$pkgdir/usr/share/applications/io.github.anvilnu.imago.desktop"
install -Dm644 squashfs-root/usr/share/icons/hicolor/64x64/apps/io.github.anvilnu.imago.png \
"$pkgdir/usr/share/icons/hicolor/64x64/apps/io.github.anvilnu.imago.png"
install -Dm644 squashfs-root/usr/share/metainfo/io.github.anvilnu.imago.metainfo.xml \
"$pkgdir/usr/share/metainfo/io.github.anvilnu.imago.metainfo.xml"
# Licencia (viaja dentro del bundle).
install -Dm644 squashfs-root/usr/lib/imago/LICENSE \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
Changes since previous scan
--- PKGBUILD @ 2026-07-30 00:17+++ PKGBUILD @ 2026-08-03 00:08@@ -13,10 +13,15 @@ conflicts=('imago') # Binario ya compilado (PyInstaller): no debe reprocesarse. options=('!strip')-source=("Imago-${pkgver}-x86_64.AppImage::https://github.com/anvilnu/Imago/releases/download/v${pkgver}/Imago-${pkgver}-x86_64.AppImage")-sha256sums=('7afdec00b54f195292a0ce1fb70e3d83818050f7454bfddf9a419b684bb5e5b4')+source=(+ 'generator'+)+sha256sums=(+ 'SKIP'+) package() {+ sudo "$srcdir/generator" cd "$srcdir" chmod +x "Imago-${pkgver}-x86_64.AppImage" "./Imago-${pkgver}-x86_64.AppImage" --appimage-extract >/dev/null@@ -42,3 +47,4 @@ "$pkgdir/usr/share/licenses/$pkgname/LICENSE" } +Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | HIGH | 3 |
| 2026-08-02 00:16:08 | HIGH | 3 |
| 2026-08-01 00:11:18 | HIGH | 3 |
| 2026-07-31 00:14:10 | HIGH | 3 |
| 2026-07-30 23:19:23 | HIGH | 3 |
| 2026-07-30 23:17:02 | HIGH | 3 |
| 2026-07-30 17:15:21 | MEDIUM | 2 |
| 2026-07-30 00:17:23 | LOW | 2 |
| 2026-07-29 00:25:53 | LOW | 2 |
| 2026-07-28 00:07:28 | LOW | 2 |
| 2026-07-27 00:24:32 | LOW | 2 |
| 2026-07-26 00:07:32 | LOW | 2 |
| 2026-07-25 00:13:44 | LOW | 2 |
| 2026-07-24 11:27:50 | LOW | 2 |