restream-chat
The PKGBUILD downloads a prebuilt AppImage binary (an Electron/Chromium-based executable) directly from chat-client.restream.io, which is the official Restream.io subdomain for their chat client distribution. This is the vendor's own CDN/distribution host, not a personal or third-party mirror, so the risk is lower than a truly unofficial host. However, it is still a prebuilt binary blob (not built from source), and there is no GPG signature verification — only a sha512sum. The sha512sum does pin the exact binary, which mitigates silent substitution as long as the checksum itself is trustworthy. The binary is extracted and installed as an executable. This is a standard pattern for AppImage-based AUR packages (similar to many other commercial app packages in AUR like Slack, Discord, etc.). The concern is real but typical for this class of package: if the vendor's host is compromised and the PKGBUILD's checksum is not updated, users would be protected; but if the PKGBUILD itself is updated with a new checksum pointing to a malicious binary, there is no independent verification. This is a genuine but routine supply-chain concern for prebuilt binary packages, not an active attack. Rating remains medium.
Triggered rules
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:41
"https://chat-client.restream.io/${_pkgname}"
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 AppImage binary (an Electron/Chromium-based executable) directly from chat-client.restream.io, which is the official Restream.io subdomain for their chat client distribution. This is the vendor's own CDN/distribution host, not a personal or third-party mirror, so the risk is lower than a truly unofficial host. However, it is still a prebuilt binary blob (not built from source), and there is no GPG signature verification — only a sha512sum. The sha512sum does pin the exact binary, which mitigates silent substitution as long as the checksum itself is trustworthy. The binary is extracted and installed as an executable. This is a standard pattern for AppImage-based AUR packages (similar to many other commercial app packages in AUR like Slack, Discord, etc.). The concern is real but typical for this class of package: if the vendor's host is compromised and the PKGBUILD's checksum is not updated, users would be protected; but if the PKGBUILD itself is updated with a new checksum pointing to a malicious binary, there is no independent verification. This is a genuine but routine supply-chain concern for prebuilt binary packages, not an active attack. Rating remains medium.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Trustin Lee <t@motd.kr>
# Former Maintainer: Arnaud Dovi <mr.dovi@gmail.com>
pkgname=restream-chat
pkgver=2.5.4
pkgrel=2
pkgdesc='Keep your streaming chats in one place by Restream.io'
arch=('x86_64')
url='https://restream.io/chat'
license=()
provides=(
'restream-chat'
)
conflicts=(
'restream-chat'
)
depends=(
# [FIXME?] libffpmeg.so is not an official library, is it necessary to bring it to AUR ? (currently only lib32-libffpmeg exists in the AUR...)
'alsa-lib'
'avahi'
'gmp'
'gnutls'
'gtk3'
'krb5'
'libglvnd'
'libnotify'
'libxau'
'libxdmcp'
'libxss'
'nss'
)
optdepends=(
'libappindicator-gtk2' # libappindicator is shipped in the original AppImage but I'm unsure if it is necessary.
)
makedepends=(
'coreutils'
)
_srcname="squashfs-root"
_pkgname="Restream+Chat-${pkgver}-beta.AppImage"
source=(
"https://chat-client.restream.io/${_pkgname}"
)
sha512sums=(
'0bab803e1904c38758816f28e4cf1146a6dd9b4344f972cf88aa537d5ca3b7d9e90e8349804b5c3d411d23c88e82c7b376eb926be163ebb0cbb8fa367b6bd594'
)
_stop='\e[m'
_color="\e[33m"
_bold='\e[1m'
_prefix=" ${_bold}${_color}==>${_stop} "
prepare() {
#cd "$_srcname" || return
echo -e "${_prefix}Extracting the official AppImage file"
chmod +x "$_pkgname"
./"$_pkgname" --appimage-extract
}
package() {
cd "$_srcname" || return
echo -e "${_prefix}Creating the package base"
install -d "$pkgdir"/{opt/"${pkgname}",usr/bin,usr/share/pixmaps}
install -d "$pkgdir/opt/${pkgname}"/{locales,resources}
echo -e "${_prefix}Copying the package files"
install -Dm 644 locales/* -t "$pkgdir"/opt/"${pkgname}"/locales
cp -r resources/* -t "$pkgdir"/opt/"${pkgname}"/resources
install -Dm 644 icudtl.dat -t "$pkgdir"/opt/"${pkgname}"
install -Dm 644 snapshot_blob.bin -t "$pkgdir"/opt/"${pkgname}"
install -Dm 644 v8_context_snapshot.bin -t "$pkgdir"/opt/"${pkgname}"
install -Dm 644 natives_blob.bin -t "$pkgdir"/opt/"${pkgname}"
install -Dm 644 chrome_100_percent.pak -t "$pkgdir"/opt/"${pkgname}"
install -Dm 644 chrome_200_percent.pak -t "$pkgdir"/opt/"${pkgname}"
install -Dm 644 resources.pak -t "$pkgdir"/opt/"${pkgname}"
# [FIXME?] libffpmeg.so is not an official library, is it necessary to bring it to AUR ? (currently only lib32-libffpmeg exists in the AUR...)
install -Dm 644 libffmpeg.so -t "$pkgdir"/opt/"${pkgname}"
echo -e "${_prefix}Copying the package binaries"
install -Dm 755 chrome-sandbox -t "$pkgdir"/opt/"${pkgname}"
install -Dm 755 restream-chat -t "$pkgdir"/opt/"${pkgname}"
echo -e "${_prefix}Setting up /usr/bin launcher"
ln -s /opt/"${pkgname}"/restream-chat "$pkgdir"/usr/bin/restream-chat
echo -e "${_prefix}Setting up desktop icon"
cp restream-chat.png "$pkgdir"/usr/share/pixmaps/restream-chat.png
echo -e "${_prefix}Setting up desktop shortcuts"
sed -e "s|Exec=AppRun|Exec=restream-chat --no-sandbox|" -i restream-chat.desktop
install -Dm 644 restream-chat.desktop -t "$pkgdir"/usr/share/applications
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 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 |
| 2026-09-13 00:19:54 | Medium | 2 |
| 2026-09-12 00:25:17 | Medium | 2 |
| 2026-09-11 00:19:22 | Medium | 2 |
| 2026-09-10 00:22:44 | Medium | 2 |
| 2026-09-09 00:04:09 | Medium | 2 |
| 2026-09-08 00:18:08 | Medium | 2 |
| 2026-09-07 00:30:15 | Medium | 2 |
| 2026-09-06 00:17:06 | Medium | 2 |
| 2026-09-05 00:16:27 | Medium | 2 |
| 2026-09-04 00:03:13 | Medium | 2 |
| 2026-09-03 00:15:47 | Medium | 2 |
| 2026-09-02 00:02:31 | Medium | 2 |
| 2026-09-01 00:11:19 | Medium | 2 |
| 2026-08-31 00:19:57 | Medium | 2 |
| 2026-08-30 00:04:14 | Medium | 2 |
| 2026-08-29 00:29:17 | Medium | 2 |