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
9
name=SabyDesktop
10
pkgname=sabydesktop
11
url="https://saby.ru/"
12
pkgver=26.3239.22
13
pkgrel=1
14
pkgdesc="SabyDesktop- приложения от Сбис, включая сбис-плагин, предоставляет доступ к дополнительным инструментам и сервисам saby, например использованию электронной подписи"
15
arch=('x86_64')
16
license=('Custom')
17
18
source=("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")
21
sha256sums=('SKIP'
22
'SKIP'
23
'SKIP')
24
25
makedepends=(
26
'dpkg'
27
)
28
depends=(
29
)
30
31
pkgver() {
32
# Версию берём из метаданных самого свежего скачанного .deb (dpkg-deb)
33
dpkg-deb -f "${srcdir}/saby.deb" Version | tr '-' '_'
34
}
35
36
build() {
37
echo "Skiping build....."
38
39
}
40
41
package() {
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
105
BASEDIR="/opt/Tensor/Saby"
106
107
# Ищем директории вида "26.3239.22" (версионные подпапки) и берём самую свежую
108
VERDIR=$(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
111
if [ -n "${VERDIR}" ] && [ -d "${VERDIR}/service" ]; then
112
export LD_LIBRARY_PATH="${VERDIR}/service:${LD_LIBRARY_PATH}"
113
fi
114
115
exec "${BASEDIR}/saby" "$@"
116
EOF
117
118
# 6. Создаём .desktop-файл (ярлык в меню приложений), указывающий на wrapper
119
install -Dm644 /dev/stdin "${pkgdir}/usr/share/applications/${pkgname}.desktop" <<EOF
120
[Desktop Entry]
121
Name=SabyDesktop
122
Comment=${pkgdesc}
123
Exec=/usr/bin/sabydesktop
124
Icon=/opt/Tensor/Saby/sabydesktop.ico
125
Terminal=false
126
Type=Application
127
Categories=Office;Network;
128
EOF
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) | Severity | Rules |
|---|---|---|
| 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 |