ibm-bob-bin

maintainer empyrealm · 0 votes · scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged The PKGBUILD downloads a prebuilt RPM from an IBM API endpoint not listed in source=(), using a dynamically resolved URL; while the host is plausibly official, the download is unverifiable and the checksum is only checked after retrieval, creating a supply-chain risk if the API were compromised.

Triggered rules

MEDIUM External download from an untrusted host, not in source=() external_download_not_in_source

curl/wget fetches a URL on a non-allowlisted host that is not part of source=(), so it is not checksum-verified by makepkg.

  • PKGBUILD:55 curl -fsS -D - -o /dev/null -X POST 'https://bob.ibm.com/api/download/bobide' \
MEDIUM AI review llm_review

An AI model (qwen/qwen3-235b-a22b-07-25) reviewed this and agrees it is MEDIUM (confidence 95%): The PKGBUILD downloads a prebuilt RPM from an IBM API endpoint not listed in source=(), using a dynamically resolved URL; while the host is plausibly official, the download is unverifiable and the checksum is only checked after retrieval, creating a supply-chain risk if the API were compromised.

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: empyrealm
2
3pkgname=ibm-bob-bin
4pkgver=1.121.0
5_bobrel=2.0.0
6_upstream_ver="${pkgver}+bob${_bobrel}"
7pkgrel=1
8pkgdesc='IBM Bob IDE repackaged from IBM upstream Linux binaries'
9arch=('x86_64')
10url='https://bob.ibm.com/download'
11license=('custom:IBM')
12depends=(
13 'alsa-lib'
14 'at-spi2-core'
15 'cairo'
16 'dbus'
17 'glib2'
18 'gtk3'
19 'libdrm'
20 'libxcomposite'
21 'libxdamage'
22 'libxfixes'
23 'libxkbcommon'
24 'libxrandr'
25 'mesa'
26 'nspr'
27 'nss'
28 'pango'
29)
30makedepends=('curl')
31optdepends=('org.freedesktop.secrets: credential storage integration')
32provides=('bobide')
33conflicts=('bobide')
34options=('!strip')
35source=()
36sha256sums=()
37
38_rpm="IBM-Bob-linux-x64-${_upstream_ver}.rpm"
39_rpm_sha256='70d84f2f301de377e5d76ce090cd5583a0629aa800fd91d7c089ae5a8639583e'
40
41prepare() {
42 cd "${srcdir}"
43
44 if [[ -f "${_rpm}" ]]; then
45 local current
46 current="$(sha256sum "${_rpm}" | awk '{print $1}')"
47 if [[ "${current}" == "${_rpm_sha256}" ]]; then
48 return
49 fi
50 rm -f "${_rpm}"
51 fi
52
53 local download_url
54 download_url="$(
55 curl -fsS -D - -o /dev/null -X POST 'https://bob.ibm.com/api/download/bobide' \
56 -F 'platform=linux' \
57 -F "version=${_upstream_ver}" \
58 -F 'architecture=x64' \
59 -F 'packageType=rpm' \
60 | awk 'BEGIN { IGNORECASE=1 } /^location: / { sub(/\r$/, "", $2); print $2 }'
61 )"
62
63 [[ -n "${download_url}" ]] || {
64 echo 'Failed to resolve IBM Bob RPM download URL from bob.ibm.com API.' >&2
65 return 1
66 }
67
68 curl -fL "${download_url}" -o "${_rpm}"
69
70 echo "${_rpm_sha256} ${_rpm}" | sha256sum -c -
71}
72
73package() {
74 cd "${srcdir}"
75
76 bsdtar --no-same-owner -xf "${_rpm}" -C "${pkgdir}"
77
78 install -Dm644 \
79 "${pkgdir}/usr/share/bobide/LICENSES.chromium.html" \
80 "${pkgdir}/usr/share/licenses/${pkgname}/LICENSES.chromium.html"
81}
82

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