pluto-photos-bin

MEDIUM
maintainer Plutophotos 0 votes scanned 2026-08-19 03:41:13.749572
View on AUR
Why flagged

The package downloads a prebuilt AppImage from the project's own domain, which is not on the whitelist but plausibly official; however, since it's an unverifiable binary executable with a fixed checksum, the worst case of a malicious swap would be arbitrary code execution, warranting medium severity.

Triggered rules

Medium source=() URL on a non-standard host 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:15 source=("${_appimage}::https://plutophotos.com/downloads/${_appimage}"
Medium AI review 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 the project's own domain, which is not on the whitelist but plausibly official; however, since it's an unverifiable binary executable with a fixed checksum, the worst case of a malicious swap would be arbitrary code execution, warranting medium severity.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Plutophotos <support at plutophotos dot com>
2pkgname=pluto-photos-bin
3pkgver=2.4.10
4pkgrel=1
5pkgdesc='Desktop photo library manager with face detection, smart albums, map view, and cloud import'
6arch=('x86_64')
7url='https://plutophotos.com'
8license=('LicenseRef-Proprietary')
9depends=('gtk3' 'nss' 'alsa-lib' 'libxss')
10optdepends=('libappindicator-gtk3: tray icon support')
11provides=('pluto-photos')
12conflicts=('pluto-photos')
13options=(!strip !debug)
14_appimage="pluto-photos-${pkgver}.AppImage"
15source=("${_appimage}::https://plutophotos.com/downloads/${_appimage}"
16 'pluto-photos.desktop')
17sha256sums=('bb6a61864afd4d5c194a9f7f96def09cfa058207ced9b100b7ab1eb9cee127a8'
18 '39dbd52edef2592f66dfb7fbbf471b62f547457288565e23759584f74606b46b')
19noextract=("${_appimage}")
20
21prepare() {
22 chmod +x "${srcdir}/${_appimage}"
23 cd "${srcdir}"
24 ./"${_appimage}" --appimage-extract
25}
26
27package() {
28 cd "${srcdir}"
29
30 # Install app to /opt
31 install -d "${pkgdir}/opt/pluto-photos"
32 cp -r squashfs-root/* "${pkgdir}/opt/pluto-photos/"
33
34 # Fix permissions
35 find "${pkgdir}/opt/pluto-photos" -type d -exec chmod 755 {} +
36 find "${pkgdir}/opt/pluto-photos" -type f -exec chmod 644 {} +
37 chmod 755 "${pkgdir}/opt/pluto-photos/pluto-photos"
38 chmod 4755 "${pkgdir}/opt/pluto-photos/chrome-sandbox"
39
40 # Make shared libraries executable
41 find "${pkgdir}/opt/pluto-photos" -name '*.so*' -exec chmod 755 {} +
42
43 # Launcher symlink
44 install -d "${pkgdir}/usr/bin"
45 ln -sf /opt/pluto-photos/pluto-photos "${pkgdir}/usr/bin/pluto-photos"
46
47 # Desktop entry
48 install -Dm644 "${srcdir}/pluto-photos.desktop" \
49 "${pkgdir}/usr/share/applications/pluto-photos.desktop"
50
51 # Icons from extracted AppImage
52 for size in 16 32 48 64 128 256 512 1024; do
53 _icon="squashfs-root/usr/share/icons/hicolor/${size}x${size}/apps/pluto-photos.png"
54 if [ -f "${_icon}" ]; then
55 install -Dm644 "${_icon}" \
56 "${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/pluto-photos.png"
57 fi
58 done
59}
60

Changes since previous scan

--- PKGBUILD @ 2026-06-20 16:03
+++ PKGBUILD @ 2026-08-19 03:41
@@ -1,6 +1,6 @@
# Maintainer: Plutophotos <support at plutophotos dot com>
pkgname=pluto-photos-bin
-pkgver=2.3.35
+pkgver=2.4.10
pkgrel=1
pkgdesc='Desktop photo library manager with face detection, smart albums, map view, and cloud import'
arch=('x86_64')
@@ -14,7 +14,7 @@
_appimage="pluto-photos-${pkgver}.AppImage"
source=("${_appimage}::https://plutophotos.com/downloads/${_appimage}"
'pluto-photos.desktop')
-sha256sums=('aade747c4d6fd5509ca926efb3ffb88cf37656bf7d20cbcbe2da171f3906dcf6'
+sha256sums=('bb6a61864afd4d5c194a9f7f96def09cfa058207ced9b100b7ab1eb9cee127a8'
'39dbd52edef2592f66dfb7fbbf471b62f547457288565e23759584f74606b46b')
noextract=("${_appimage}")

Scan history

Scanned at (UTC)SeverityRules
2026-08-19 03:41:13 Medium 2
2026-06-20 16:03:41 Clean 2
2026-06-20 00:50:07 Medium 2
2026-06-20 00:18:46 Medium 2
2026-06-19 23:51:18 Medium 2
2026-06-19 19:07:35 Low 2
2026-06-18 18:55:24 Clean 2
2026-06-18 16:11:54 Medium 1

Report a package

Reports go to the AURWatch maintainer (one person) and are read by hand. No login required.

0 / 4000
Your suggestion