pluto-photos-bin

MEDIUM
maintainer Plutophotos 0 votes scanned 2026-10-03 00:23:04.761738
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

Scan history

Scanned at (UTC)SeverityRules
2026-10-03 00:23:04 Medium 2
2026-10-02 00:00:32 Medium 2
2026-10-01 00:02:06 Medium 2
2026-09-30 00:20:07 Medium 2
2026-09-29 00:07:46 Medium 2
2026-09-28 00:28:32 Medium 2
2026-09-27 00:07:07 Medium 2
2026-09-26 00:12:15 Medium 2
2026-09-25 00:03:36 Medium 2
2026-09-24 00:24:14 Medium 2
2026-09-23 00:28:13 Medium 2
2026-09-22 00:15:14 Medium 2
2026-09-21 00:26:32 Medium 2
2026-09-20 00:25:31 Medium 2
2026-09-19 00:25:36 Medium 2
2026-09-18 00:17:11 Medium 2
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

Report a package

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

0 / 4000
Your suggestion