syncless-bin

maintainer AsukaMinato · 0 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged The PKGBUILD downloads a prebuilt Windows installer EXE from artifacts.syncless.ai (a project-specific subdomain, not a well-known official release host like GitHub releases), extracts it with 7z, unpacks the embedded Electron asar, patches the JavaScript, and installs the JS app to run under the system electron41. The core concern is that the installed code is a prebuilt binary artifact (JavaScript extracted from a proprietary Windows installer) from an unofficial/project-controlled artifact host with no reproducibility guarantee beyond a single SHA-256 checksum. The JS code itself is executed by electron41 with full desktop privileges. While the checksum provides some integrity protection at the time of packaging, the artifact host could serve different content in the future (the checksum only covers the version pinned at packaging time), and the JS bundle is opaque/minified making auditing difficult. This is a genuine medium-severity supply-chain concern: executed code from a non-standard artifact host. It is not clearly malicious, but the pattern (proprietary minified JS from a vendor-controlled artifact server, repackaged without source build) is a real risk that belongs in the medium category.

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:14 source=('desktop-windows-latest.exe::https://artifacts.syncless.ai/downloads/desktop-windows-latest.exe')
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 72%): The PKGBUILD downloads a prebuilt Windows installer EXE from artifacts.syncless.ai (a project-specific subdomain, not a well-known official release host like GitHub releases), extracts it with 7z, unpacks the embedded Electron asar, patches the JavaScript, and installs the JS app to run under the system electron41. The core concern is that the installed code is a prebuilt binary artifact (JavaScript extracted from a proprietary Windows installer) from an unofficial/project-controlled artifact host with no reproducibility guarantee beyond a single SHA-256 checksum. The JS code itself is executed by electron41 with full desktop privileges. While the checksum provides some integrity protection at the time of packaging, the artifact host could serve different content in the future (the checksum only covers the version pinned at packaging time), and the JS bundle is opaque/minified making auditing difficult. This is a genuine medium-severity supply-chain concern: executed code from a non-standard artifact host. It is not clearly malicious, but the pattern (proprietary minified JS from a vendor-controlled artifact server, repackaged without source build) is a real risk that belongs in the medium category.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: asuka minato
2
3pkgname=syncless-bin
4pkgver=0.0.63
5pkgrel=1
6pkgdesc='Syncless desktop client, repackaged to run with system Electron'
7arch=('x86_64')
8url='https://syncless.ai/'
9license=('custom')
10depends=('electron41' tmux)
11makedepends=('p7zip' 'asar')
12provides=('syncless')
13conflicts=('syncless')
14source=('desktop-windows-latest.exe::https://artifacts.syncless.ai/downloads/desktop-windows-latest.exe')
15sha256sums=('7affc26f6f30be585147a7e17ad2901ed235a571cf618d362db546b2b49a92dd')
16
17prepare() {
18 rm -rf "$srcdir/exe" "$srcdir/app"
19 mkdir -p "$srcdir/exe" "$srcdir/app"
20
21 7z x "$srcdir/desktop-windows-latest.exe" '-o'"$srcdir/exe" '$PLUGINSDIR/app-64.7z'
22 7z x "$srcdir/exe/\$PLUGINSDIR/app-64.7z" '-o'"$srcdir/app"
23
24 asar extract "$srcdir/app/resources/app.asar" "$srcdir/app/resources/app"
25
26 local main_js="$srcdir/app/resources/app/dist-electron/electron/main.js"
27 sed -i \
28 -e 's/const QK=!kt\.isPackaged,/const QK=!kt.isPackaged\&\&!Kv(mn.join(kt.getAppPath(),"dist-renderer\/index.html")),/' \
29 -e 's/if(!kt\.isPackaged)return`\${An\.VITE_DEV_SERVER_URL}#\${YK}`/if(QK)return`${An.VITE_DEV_SERVER_URL}#${YK}`/' \
30 -e 's/if(!kt\.isPackaged)return`\${An\.VITE_DEV_SERVER_URL}#\${n}`/if(QK)return`${An.VITE_DEV_SERVER_URL}#${n}`/' \
31 "$main_js"
32
33 grep -q 'const QK=!kt.isPackaged&&!Kv(mn.join(kt.getAppPath(),"dist-renderer/index.html"))' "$main_js"
34}
35
36package() {
37 install -dm755 "$pkgdir/usr/lib/syncless"
38 cp -r --no-preserve=ownership "$srcdir/app/resources/app" "$pkgdir/usr/lib/syncless/app"
39
40 install -dm755 "$pkgdir/usr/bin"
41 cat > "$pkgdir/usr/bin/syncless" <<'EOF'
42#!/bin/sh
43exec electron41 /usr/lib/syncless/app "$@"
44EOF
45 chmod 755 "$pkgdir/usr/bin/syncless"
46
47 install -Dm644 "$srcdir/app/resources/app/assets/icons/app-icon.png" \
48 "$pkgdir/usr/share/pixmaps/syncless.png"
49
50 install -Dm644 /dev/stdin "$pkgdir/usr/share/applications/syncless.desktop" <<'EOF'
51[Desktop Entry]
52Type=Application
53Name=Syncless
54Comment=Syncless desktop client
55Exec=syncless %U
56Icon=syncless
57Terminal=false
58Categories=Utility;Network;
59StartupWMClass=Syncless
60EOF
61
62 install -Dm644 "$srcdir/app/LICENSE.electron.txt" \
63 "$pkgdir/usr/share/licenses/$pkgname/LICENSE.electron.txt"
64 install -Dm644 "$srcdir/app/LICENSES.chromium.html" \
65 "$pkgdir/usr/share/licenses/$pkgname/LICENSES.chromium.html"
66}
67

Scan history

Scanned at (UTC)SeverityRules
2026-08-03 00:08:14 MEDIUM 2
2026-08-02 00:16:08 MEDIUM 2
2026-08-01 00:11:18 MEDIUM 2
2026-07-31 00:14:10 MEDIUM 2
2026-07-30 00:17:23 MEDIUM 2
2026-07-29 00:25:53 MEDIUM 2
2026-07-28 00:07:28 MEDIUM 2
2026-07-27 00:24:32 MEDIUM 2
2026-07-26 00:07:32 MEDIUM 2
2026-07-25 00:13:44 MEDIUM 2
2026-07-24 00:02:28 MEDIUM 2
2026-07-23 00:14:47 MEDIUM 2
2026-07-22 00:29:32 MEDIUM 2
2026-07-21 00:24:15 MEDIUM 2
2026-07-20 00:19:49 MEDIUM 2
2026-07-19 00:17:08 MEDIUM 2
2026-07-18 00:14:48 MEDIUM 2
2026-07-17 00:06:16 MEDIUM 2
2026-07-16 00:05:41 MEDIUM 2
2026-07-15 00:09:25 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