tsm-app

maintainer exceptionptr · 2 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged The PKGBUILD fetches the main source from a tagged GitHub release (verifiable with sha256sum), but then calls `pip install apscheduler>=4.0.0a5,<5` during the package() function without any checksum verification. This pulls an alpha/pre-release version of apscheduler from PyPI at build time with no integrity check, meaning the exact version installed is not pinned and could change between builds. The `apscheduler` package is a real, well-known PyPI package, but using pip inside package() to fetch an unverified, unpinned pre-release dependency is a genuine supply-chain concern: the installed code is not covered by the PKGBUILD's sha256sums, and a compromised or yanked PyPI release could silently substitute different code. The correct approach would be to list python-apscheduler as a dependency (if available in the AUR/repos) or include it as a separately checksummed source. This is a real medium-severity issue, not a false positive.

Triggered rules

MEDIUM pip install of an external package pip_install_external

`pip install <package>` fetches an unpinned package from PyPI at build time, outside source=() and makepkg's checksums.

  • PKGBUILD:43 pip install --ignore-installed --no-deps --prefix=/usr --root="$pkgdir" "apscheduler>=4.0.0a5,<5"
MEDIUM AI review llm_review

An AI model (anthropic/claude-4.6-sonnet-20260217) reviewed this and agrees it is MEDIUM (confidence 80%): The PKGBUILD fetches the main source from a tagged GitHub release (verifiable with sha256sum), but then calls `pip install apscheduler>=4.0.0a5,<5` during the package() function without any checksum verification. This pulls an alpha/pre-release version of apscheduler from PyPI at build time with no integrity check, meaning the exact version installed is not pinned and could change between builds. The `apscheduler` package is a real, well-known PyPI package, but using pip inside package() to fetch an unverified, unpinned pre-release dependency is a genuine supply-chain concern: the installed code is not covered by the PKGBUILD's sha256sums, and a compromised or yanked PyPI release could silently substitute different code. The correct approach would be to list python-apscheduler as a dependency (if available in the AUR/repos) or include it as a separately checksummed source. This is a real medium-severity issue, not a false positive.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: exceptionptr <https://github.com/exceptionptr>
2pkgname=tsm-app
3pkgver=1.1.11
4pkgrel=1
5pkgdesc="TradeSkillMaster Desktop App for Linux - auction data downloader for WoW under Wine/Lutris/Steam"
6arch=('x86_64')
7url="https://github.com/exceptionptr/tsm-app-linux"
8license=('MIT')
9depends=(
10 'python>=3.11'
11 'pyside6'
12 'python-aiohttp'
13 'python-pydantic'
14 'python-aiosqlite'
15 'python-keyring'
16 'python-structlog'
17 'python-tomli-w'
18 'python-yaml'
19 'python-anyio'
20 'python-attrs'
21 'python-tenacity'
22 'python-tzlocal'
23)
24makedepends=(
25 'python-build'
26 'python-installer'
27 'python-hatchling'
28 'python-hatch-vcs'
29 'python-pip'
30 'git'
31)
32source=("$pkgname-$pkgver.tar.gz::$url/archive/refs/tags/v$pkgver.tar.gz")
33sha256sums=('cd39b8c2f70c0616617eebde30eb04acaf5ae20195ad7c05b36c076c69d2c6a8')
34
35build() {
36 cd "$srcdir/tsm-app-linux-$pkgver"
37 SETUPTOOLS_SCM_PRETEND_VERSION="$pkgver" python -m build --wheel --no-isolation
38}
39
40package() {
41 cd "$srcdir/tsm-app-linux-$pkgver"
42 python -m installer --destdir="$pkgdir" dist/*.whl
43 pip install --ignore-installed --no-deps --prefix=/usr --root="$pkgdir" "apscheduler>=4.0.0a5,<5"
44 install -Dm644 packaging/tsm-app.desktop \
45 "$pkgdir/usr/share/applications/tsm-app.desktop"
46 install -Dm644 tsm/ui/assets/tsm_16.png "$pkgdir/usr/share/icons/hicolor/16x16/apps/tsm-app.png"
47 install -Dm644 tsm/ui/assets/tsm_32.png "$pkgdir/usr/share/icons/hicolor/32x32/apps/tsm-app.png"
48 install -Dm644 tsm/ui/assets/tsm_48.png "$pkgdir/usr/share/icons/hicolor/48x48/apps/tsm-app.png"
49 install -Dm644 tsm/ui/assets/tsm_128.png "$pkgdir/usr/share/icons/hicolor/128x128/apps/tsm-app.png"
50 install -Dm644 tsm/ui/assets/tsm_256.png "$pkgdir/usr/share/icons/hicolor/256x256/apps/tsm-app.png"
51 install -Dm644 LICENSE \
52 "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
53}
54

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