tetrio-plus-bin
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:14
source=("TETR.IO.deb::https://tetr.io/about/desktop/builds/${pkgver%.*.*}/TETR.IO%20Setup.deb"
llm_review
An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 82%): The PKGBUILD downloads a prebuilt .asar file from a specific GitLab CI job artifact URL (job ID 13795436076). While the source is pinned to a specific job artifact and has a sha256sum, CI job artifacts on GitLab can be deleted and re-uploaded or the artifact URL can point to different content if the job is re-run. More importantly, this .asar file replaces the official TETR.IO app.asar in the installed Electron application — meaning it is executed code from a third-party (UniQMG's tetrio-plus project, not the official TETR.IO vendor). The sha256sum does provide integrity verification at download time, which mitigates silent substitution risk somewhat. However, the core concern remains: an unofficial, prebuilt Electron application bundle (asar) from a personal GitLab project is being substituted for the official application code and will be executed by the Electron runtime. This is a genuine supply-chain concern — if the artifact were ever replaced or the checksum removed/changed in a future pkgrel, users would run arbitrary third-party code. The sha256sum pinning keeps this at medium rather than high, but the pattern of replacing official app code with a prebuilt third-party artifact is a real supply-chain risk.
PKGBUILD
1 offending line(s) highlighted# Maintainer: Yuannan Lin <yuannan.pm.me>
# Report on Gitlab (https://gitlab.com/yuannan/tetrio-plus) or AUR
# Contributor: Denton Liu <liu.denton@gmail.com>
pkgname=tetrio-plus-bin
pkgver=10.0.0
pkgrel=4
pkgdesc='TETR.IO Plus desktop client'
arch=('x86_64')
license=('custom')
url='https://tetr.io/'
depends=('libxss' 'unzip')
conflicts=('tetrio-desktop')
source=("TETR.IO.deb::https://tetr.io/about/desktop/builds/${pkgver%.*.*}/TETR.IO%20Setup.deb"
"tetrio-plus.asar.zip::https://gitlab.com/UniQMG/tetrio-plus/-/jobs/13795436076/artifacts/raw/tetrio-plus_v0.28.0_for_desktop_v10.asar.zip"
LICENSE) # https://tetr.io/about/terms/
sha256sums=('e3635a6f8d479bbf8dc56fdee7a65b2cf652e9633ef6e1acfc6c6f7055b4abdf'
'f367db29ab3fbc48a79fbe325935cb9d4df19b2efb03b55717cc849625e9be6a'
'5e721783706e2018878ca127ec6ed5d6a1298ee9cc6a853329e25fafe45265f9')
package() {
cd "$srcdir"
# extracting Debian package data tar
tar -xf data.tar.xz -C "$pkgdir"
# subsitution of plus app.asar
rm -rf "$pkgdir/opt/TETR.IO/resources/app.asar"
# insertion of app.asar
unzip tetrio-plus.asar.zip -d "$pkgdir/opt/TETR.IO/resources"
# inserting executable into
mkdir -p "$pkgdir/usr/bin"
ln -sf "/opt/TETR.IO/TETR.IO" "$pkgdir/usr/bin/$pkgname"
install -Dm 644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
chmod -R go-w "$pkgdir"
}
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 | 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 |