sabydesktop

maintainer leoneii · 1 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged The package downloads prebuilt .deb binaries from a non-whitelisted but official vendor domain (update.saby.ru), which is plausibly the project's own infrastructure; however, the SKIP'd checksums make the sources unverifiable, creating a supply-chain risk if the host were compromised.

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:18 source=("saby.deb::https://update.saby.ru/SabyDesktop/master/linux/deb_repo/saby.deb"
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 prebuilt .deb binaries from a non-whitelisted but official vendor domain (update.saby.ru), which is plausibly the project's own infrastructure; however, the SKIP'd checksums make the sources unverifiable, creating a supply-chain risk if the host were compromised.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: leoneii comdir@infonix.info
2
3# Пакет собирается напрямую из официального APT-репозитория Saby
4# (тот же репозиторий, который добавляет их установочный скрипт saby-setup под капотом):
5# https://update.saby.ru/<Продукт>/master/linux/deb_repo/
6# "master" - алиас, всегда указывающий на последнюю сборку, поэтому
7# версия пакета вычисляется автоматически через pkgver() из содержимого .deb.
8
9name=SabyDesktop
10pkgname=sabydesktop
11url="https://saby.ru/"
12pkgver=26.3239.22
13pkgrel=1
14pkgdesc="SabyDesktop- приложения от Сбис, включая сбис-плагин, предоставляет доступ к дополнительным инструментам и сервисам saby, например использованию электронной подписи"
15arch=('x86_64')
16license=('Custom')
17
18source=("saby.deb::https://update.saby.ru/SabyDesktop/master/linux/deb_repo/saby.deb"
19 "nmh-transport.deb::https://update.saby.ru/NmhTransport/master/linux/deb_repo/nmh-transport.deb"
20 "sabycenter.deb::https://update.saby.ru/SabyCenter/master/linux/deb_repo/sabycenter.deb")
21sha256sums=('SKIP'
22 'SKIP'
23 'SKIP')
24
25makedepends=(
26 'dpkg'
27)
28depends=(
29)
30
31pkgver() {
32 # Версию берём из метаданных самого свежего скачанного .deb (dpkg-deb)
33 dpkg-deb -f "${srcdir}/saby.deb" Version | tr '-' '_'
34}
35
36build() {
37 echo "Skiping build....."
38
39}
40
41package() {
42 # Копируем необходимые файлы в каталог пакета
43 echo "Extracting the data.tar.xz..."
44 # Перебираем все .deb файлы из массива source
45 for file in "${source[@]}"; do
46 # Очищаем путь, оставляя только имя файла (например, app1.deb)
47 deb_name=$(basename "${file}")
48
49 msg2 "Распаковка пакета: ${deb_name}"
50
51 # Извлекаем внутренний архив и СРАЗУ распаковываем его содержимое в $pkgdir
52 # bsdtar умеет читать поток из stdout через '-'
53 bsdtar -O -xf "${srcdir}/${deb_name}" data.tar.xz | bsdtar -xf - -C "${pkgdir}" 2>/dev/null || \
54 bsdtar -O -xf "${srcdir}/${deb_name}" data.tar.gz | bsdtar -xf - -C "${pkgdir}" 2>/dev/null || \
55 bsdtar -O -xf "${srcdir}/${deb_name}" data.tar.zst | bsdtar -xf - -C "${pkgdir}"
56 done
57
58 # 2. Описание папок для переноса (в формате "откуда:куда")
59 local paths_to_move=(
60 "opt/Tensor/Saby/temp_saby:opt/Tensor/Saby"
61 "opt/Tensor/Saby Center/temp_sabycenter:opt/Tensor/Saby Center"
62 "opt/nmh-transport/temp_nmh:opt/nmh-transport"
63 )
64
65 # 3. Перенос содержимого в цикле
66 for pair in "${paths_to_move[@]}"; do
67 # Разделяем строку по двоеточию на исходный и целевой каталоги
68 local src_rel="${pair%%:*}"
69 local dst_rel="${pair#*:}"
70
71 local src_dir="${pkgdir}/${src_rel}"
72 local dst_dir="${pkgdir}/${dst_rel}"
73
74 msg2 "Перенос файлов из ${src_rel##*/} в основную директорию..."
75
76 if [ -d "${src_dir}" ]; then
77 # Создаем целевую папку, если она вдруг не создалась при распаковке
78 mkdir -p "${dst_dir}"
79 # Копируем всё содержимое (включая скрытые файлы) с сохранением прав
80 cp -ra "${src_dir}/." "${dst_dir}/"
81 # Удаляем временную папку
82 rm -rf "${src_dir}"
83 else
84 # Используем warning вместо error, чтобы сборка не падала,
85 # если какой-то из deb-пакетов не содержит одну из этих папок
86 warning "Директория ${src_rel} не найдена в этой сессии сборки. Пропускаем."
87 fi
88 done
89
90 # 4. Копируем иконку в фиксированное место — путь к ней "плавает" вместе с версией
91 _icon_verdir=$(find "${pkgdir}/opt/Tensor/Saby" -maxdepth 1 -type d -regextype posix-extended \
92 -regex '.*/[0-9]+\.[0-9]+\.[0-9]+' 2>/dev/null | sort -V | tail -n1)
93
94 if [ -n "${_icon_verdir}" ] && [ -f "${_icon_verdir}/service/icons/default_light.ico" ]; then
95 install -Dm644 "${_icon_verdir}/service/icons/default_light.ico" \
96 "${pkgdir}/opt/Tensor/Saby/sabydesktop.ico"
97 else
98 warning "Иконка default_light.ico не найдена — .desktop будет без своей иконки."
99 fi
100
101 # 5. Создаём wrapper-скрипт: находит последнюю версию в /opt/Tensor/Saby
102 # и запускает saby с LD_LIBRARY_PATH, указывающим на .../service/
103 install -Dm755 /dev/stdin "${pkgdir}/usr/bin/sabydesktop" <<'EOF'
104#!/usr/bin/env bash
105BASEDIR="/opt/Tensor/Saby"
106
107# Ищем директории вида "26.3239.22" (версионные подпапки) и берём самую свежую
108VERDIR=$(find "${BASEDIR}" -maxdepth 1 -type d -regextype posix-extended \
109 -regex '.*/[0-9]+\.[0-9]+\.[0-9]+' 2>/dev/null | sort -V | tail -n1)
110
111if [ -n "${VERDIR}" ] && [ -d "${VERDIR}/service" ]; then
112 export LD_LIBRARY_PATH="${VERDIR}/service:${LD_LIBRARY_PATH}"
113fi
114
115exec "${BASEDIR}/saby" "$@"
116EOF
117
118 # 6. Создаём .desktop-файл (ярлык в меню приложений), указывающий на wrapper
119 install -Dm644 /dev/stdin "${pkgdir}/usr/share/applications/${pkgname}.desktop" <<EOF
120[Desktop Entry]
121Name=SabyDesktop
122Comment=${pkgdesc}
123Exec=/usr/bin/sabydesktop
124Icon=/opt/Tensor/Saby/sabydesktop.ico
125Terminal=false
126Type=Application
127Categories=Office;Network;
128EOF
129 #bsdtar -xf data.tar.xz -C "$pkgdir/"
130}
131
132

Changes since previous scan

--- PKGBUILD @ 2026-07-20 11:14
+++ PKGBUILD @ 2026-08-03 00:08
@@ -1,8 +1,10 @@
# Maintainer: leoneii comdir@infonix.info
-#для установки необходимо скачать официальный Appimage с сайта, запустить, проигрнорировать неизвестный дистрибутив и попытаться установить, получив в итоге ошибку
-#после этого в папке /home/имя пользователя/.tmp/Tensor/Saby/ останутся необходимые файлы установка
-#если кто-то знает прямые пути - буду рад исправить
+# Пакет собирается напрямую из официального APT-репозитория Saby
+# (тот же репозиторий, который добавляет их установочный скрипт saby-setup под капотом):
+# https://update.saby.ru/<Продукт>/master/linux/deb_repo/
+# "master" - алиас, всегда указывающий на последнюю сборку, поэтому
+# версия пакета вычисляется автоматически через pkgver() из содержимого .deb.
name=SabyDesktop
pkgname=sabydesktop
@@ -12,18 +14,24 @@
pkgdesc="SabyDesktop- приложения от Сбис, включая сбис-плагин, предоставляет доступ к дополнительным инструментам и сервисам saby, например использованию электронной подписи"
arch=('x86_64')
license=('Custom')
-_debsdir="${HOME}/.tmp/Tensor/Saby"
-source=("saby.deb::file://${_debsdir}/saby.deb"
- "nmh-transport.deb::file://${_debsdir}/nmh-transport.deb"
- "sabycenter.deb::file://${_debsdir}/sabycenter.deb")
+
+source=("saby.deb::https://update.saby.ru/SabyDesktop/master/linux/deb_repo/saby.deb"
+ "nmh-transport.deb::https://update.saby.ru/NmhTransport/master/linux/deb_repo/nmh-transport.deb"
+ "sabycenter.deb::https://update.saby.ru/SabyCenter/master/linux/deb_repo/sabycenter.deb")
sha256sums=('SKIP'
'SKIP'
'SKIP')
makedepends=(
+ 'dpkg'
)
depends=(
)
+
+pkgver() {
+ # Версию берём из метаданных самого свежего скачанного .deb (dpkg-deb)
+ dpkg-deb -f "${srcdir}/saby.deb" Version | tr '-' '_'
+}
build() {
echo "Skiping build....."

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 3
2026-07-31 00:14:10 MEDIUM 3
2026-07-30 00:17:23 MEDIUM 3
2026-07-29 00:25:53 MEDIUM 3
2026-07-28 00:07:28 MEDIUM 3
2026-07-27 00:24:32 MEDIUM 3
2026-07-26 00:07:32 MEDIUM 3
2026-07-25 00:13:44 MEDIUM 3
2026-07-24 00:02:28 MEDIUM 3
2026-07-23 00:14:47 MEDIUM 3
2026-07-22 00:29:32 MEDIUM 3
2026-07-21 00:24:15 MEDIUM 3
2026-07-20 15:14:11 MEDIUM 3
2026-07-20 11:14:00 MEDIUM 2
2026-07-20 09:14:00 MEDIUM 2
2026-07-20 00:19:49 MEDIUM 2
2026-07-19 00:17:08 MEDIUM 2
2026-07-18 11:57:30 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