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
3
pkgname=ibm-bob-bin
4
pkgver=1.121.0
5
_bobrel=2.0.0
6
_upstream_ver="${pkgver}+bob${_bobrel}"
7
pkgrel=1
8
pkgdesc='IBM Bob IDE repackaged from IBM upstream Linux binaries'
9
arch=('x86_64')
10
url='https://bob.ibm.com/download'
11
license=('custom:IBM')
12
depends=(
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
)
30
makedepends=('curl')
31
optdepends=('org.freedesktop.secrets: credential storage integration')
32
provides=('bobide')
33
conflicts=('bobide')
34
options=('!strip')
35
source=()
36
sha256sums=()
37
38
_rpm="IBM-Bob-linux-x64-${_upstream_ver}.rpm"
39
_rpm_sha256='70d84f2f301de377e5d76ce090cd5583a0629aa800fd91d7c089ae5a8639583e'
40
41
prepare() {
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
73
package() {
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) | 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 |