opera-developer
maintainer MojArch
· 91 votes
· scanned 2026-08-03 00:08:14.047287
MEDIUM
View on AUR ↗
Why flagged
The package installs a setuid binary (opera_sandbox with chmod 4755), which grants elevated privileges, flagged as a medium-risk privileged operation outside typical pacman handling.
Triggered rules
MEDIUM
Privileged / out-of-pacman install (sudoers, setuid, or self-update)
privileged_install
The package grants elevated privileges or installs an update path outside pacman: a /etc/sudoers.d rule (often passwordless), a setuid/setgid binary, or a self-update script/service that can fetch and run future code with no checksum verification. The initial install may be verified, but the ongoing privilege + update surface is a real supply-chain / privilege-escalation risk.
-
PKGBUILD:160
chmod 4755 \
MEDIUM
AI review
llm_review
An AI model (qwen/qwen3-235b-a22b-2507) reviewed this and agrees it is MEDIUM (confidence 90%): The package installs a setuid binary (opera_sandbox with chmod 4755), which grants elevated privileges, flagged as a medium-risk privileged operation outside typical pacman handling.
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: MojArch
2
3
pkgname=opera-developer
4
pkgver=135.0.5966.0
5
pkgrel=1
6
pkgdesc='Fast, secure, easy-to-use web browser (Developer Stream)'
7
arch=('x86_64')
8
url='https://www.opera.com/computer'
9
license=('LicenseRef-opera')
10
options=(!strip !debug !zipman)
11
backup=('etc/opera-developer/default')
12
provides=(
13
'opera-developer-browser'
14
)
15
conflicts=(
16
'opera-developer-ffmpeg-codecs-bin'
17
)
18
replaces=(
19
'opera-developer-ffmpeg-codecs-bin'
20
)
21
22
depends=(
23
'alsa-lib'
24
'at-spi2-core'
25
'cairo'
26
'cups'
27
'curl'
28
'dbus'
29
'expat'
30
'gcc-libs'
31
'glib2'
32
'glibc'
33
'gtk3'
34
'hicolor-icon-theme'
35
'libnotify'
36
'libx11'
37
'libxcb'
38
'libxcomposite'
39
'libxdamage'
40
'libxext'
41
'libxfixes'
42
'libxkbcommon'
43
'libxrandr'
44
'libxss'
45
'mesa'
46
'nspr'
47
'nss'
48
'pango'
49
'systemd-libs'
50
'ttf-font'
51
'xdg-utils'
52
)
53
54
optdepends=(
55
'qt5-base: Qt5 integration'
56
'qt6-base: Qt6 integration'
57
'egl-gbm'
58
'upower'
59
)
60
61
_nwjs_ffmpeg_version=0.114.0
62
_upstream_deb_pkg='opera-developer'
63
_debfile="${_upstream_deb_pkg}_${pkgver}_amd64.deb"
64
_deburl="https://get.opera.com/pub/opera-developer/${pkgver}/linux/${_debfile}"
65
_ffmpeg_zip="${_nwjs_ffmpeg_version}-linux-x64.zip"
66
67
source=(
68
"${_deburl}"
69
"opera"
70
"default"
71
"nwjs-ffmpeg-${_ffmpeg_zip}::https://github.com/nwjs-ffmpeg-prebuilt/nwjs-ffmpeg-prebuilt/releases/download/${_nwjs_ffmpeg_version}/${_ffmpeg_zip}"
72
)
73
74
sha256sums=(
75
'b059a4241852cf013297c559881be9af2334f1651406641dd8d93e641872d690'
76
'508512464e24126fddfb2c41a1e2e86624bdb0c0748084b6a922573b6cf6b9c5'
77
'99fc0d2822edd14e234d451995db47148125e4580221a292598959421d131231'
78
'eccac785a61f552d7ce75a1aba990486d977d74cd6ac78091c21b3c807cf1b01'
79
)
80
81
prepare() {
82
sed -e 's|%pkgname%|opera-developer|g' \
83
-e 's|%operabin%|opera-developer/opera-developer|g' \
84
-i "$srcdir/opera"
85
86
sed -e 's|%pkgname%|opera-developer|g' \
87
-i "$srcdir/default"
88
}
89
90
package() {
91
cd "$srcdir"
92
93
# Extract upstream package
94
95
bsdtar -xf "$_debfile"
96
97
bsdtar -xf data.tar.xz \
98
--exclude='usr/share/lintian' \
99
--exclude='usr/share/menu' \
100
-C "$pkgdir"
101
102
# Normalize multiarch library layout
103
104
local libroot="$pkgdir/usr/lib"
105
106
local multiarch_dir
107
multiarch_dir="$(find "$libroot" \
108
-mindepth 1 \
109
-maxdepth 1 \
110
-type d \
111
-name '*-linux-gnu' \
112
| head -n1)"
113
114
if [[ -z "$multiarch_dir" ]]; then
115
echo 'ERROR: multiarch library directory not found'
116
return 1
117
fi
118
119
local upstream_libdir
120
upstream_libdir="$(find "$multiarch_dir" \
121
-mindepth 1 \
122
-maxdepth 1 \
123
-type d \
124
-name 'opera-developer' \
125
| head -n1)"
126
127
if [[ -z "$upstream_libdir" ]]; then
128
echo 'ERROR: upstream Opera payload directory not found'
129
return 1
130
fi
131
132
rm -rf "$libroot/opera-developer"
133
mv "$upstream_libdir" \
134
"$libroot/opera-developer"
135
rm -rf "$multiarch_dir"
136
137
# Replace FFmpeg
138
139
bsdtar -xf "nwjs-ffmpeg-${_ffmpeg_zip}"
140
141
local ffmpeg_so
142
ffmpeg_so="$(find "$srcdir" \
143
-type f \
144
-name 'libffmpeg.so' \
145
| head -n1)"
146
147
if [[ -z "$ffmpeg_so" ]]; then
148
echo "ERROR: libffmpeg.so not found in $_ffmpeg_zip"
149
return 1
150
fi
151
152
rm -f "$pkgdir/usr/lib/opera-developer/libffmpeg.so"
153
154
install -Dm755 "$ffmpeg_so" \
155
"$pkgdir/usr/lib/opera-developer/libffmpeg.so"
156
157
# Sandbox
158
159
if [[ -f "$pkgdir/usr/lib/opera-developer/opera_sandbox" ]]; then
160
chmod 4755 \
161
"$pkgdir/usr/lib/opera-developer/opera_sandbox"
162
fi
163
164
# Defaults
165
166
install -Dm644 "$srcdir/default" \
167
"$pkgdir/etc/opera-developer/default"
168
169
# Launcher
170
171
local upstream_binary
172
173
upstream_binary="$(find "$pkgdir/usr/lib/opera-developer" \
174
-maxdepth 1 \
175
-type f \
176
\( -name 'opera-developer' -o -name 'opera' \) \
177
| head -n1)"
178
179
if [[ -z "$upstream_binary" ]]; then
180
echo 'ERROR: upstream Opera executable not found'
181
return 1
182
fi
183
184
rm -f "$pkgdir/usr/bin/opera-developer"
185
186
install -Dm755 "$srcdir/opera" \
187
"$pkgdir/usr/bin/opera-developer"
188
189
# Desktop entries
190
191
local desktop_dir="$pkgdir/usr/share/applications"
192
193
if [[ -d "$desktop_dir" ]]; then
194
find "$desktop_dir" \
195
-maxdepth 1 \
196
-type f \
197
-name '*.desktop' \
198
-print0 |
199
while IFS= read -r -d '' desktop_file; do
200
if grep -qi 'opera' "$desktop_file"; then
201
sed -i \
202
-e 's|^Exec=.*|Exec=opera-developer %U|' \
203
-e 's|^TryExec=.*|TryExec=opera-developer|' \
204
"$desktop_file"
205
fi
206
done
207
fi
208
209
210
# License
211
212
local copyright_file
213
214
copyright_file="$(find "$pkgdir/usr/share/doc" \
215
-type f \
216
-name copyright \
217
| head -n1)"
218
219
if [[ -n "$copyright_file" ]]; then
220
install -Dm644 "$copyright_file" \
221
"$pkgdir/usr/share/licenses/$pkgname/copyright"
222
fi
223
}
224
Changes since previous scan
--- PKGBUILD @ 2026-07-26 00:07+++ PKGBUILD @ 2026-08-03 00:08@@ -1,7 +1,7 @@ # Maintainer: MojArch pkgname=opera-developer-pkgver=134.0.5952.0+pkgver=135.0.5966.0 pkgrel=1 pkgdesc='Fast, secure, easy-to-use web browser (Developer Stream)' arch=('x86_64')@@ -58,7 +58,7 @@ 'upower' ) -_nwjs_ffmpeg_version=0.113.0+_nwjs_ffmpeg_version=0.114.0 _upstream_deb_pkg='opera-developer' _debfile="${_upstream_deb_pkg}_${pkgver}_amd64.deb" _deburl="https://get.opera.com/pub/opera-developer/${pkgver}/linux/${_debfile}"@@ -72,10 +72,10 @@ ) sha256sums=(- '1c5179ce9aacafcba867db33d7861d1e9a2e7890e7d481ee036b3b6f4e1fe0ea'+ 'b059a4241852cf013297c559881be9af2334f1651406641dd8d93e641872d690' '508512464e24126fddfb2c41a1e2e86624bdb0c0748084b6a922573b6cf6b9c5' '99fc0d2822edd14e234d451995db47148125e4580221a292598959421d131231'- 'e5532d59117f527fc34f9f7af2aedf78719627fdf7b5527d84b2e71126764ec6'+ 'eccac785a61f552d7ce75a1aba990486d977d74cd6ac78091c21b3c807cf1b01' ) prepare() {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 19:33:02 | MEDIUM | 2 |
| 2026-07-26 03:31:41 | 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 |