unreal-engine-css-bin

LOW
maintainer jgabor 0 votes scanned 2026-10-23 00:02:19.781852
View on AUR
Why flagged

Package installs a prebuilt Unreal Engine fork from the project's own GitHub release assets (satisfactorymodding/UnrealEngine) with pinned SHA-256 checksums; the .install hook creates a system group and sets ACLs on /opt/unreal-engine-css, which is privileged but standard for multi-user engine access and not malicious. The custom DLAGENT runs a bundled helper script to fetch GitHub release assets, which is unusual but scoped to the project's own repo. No obfuscation, exfiltration, or unrelated remote execution is present.

Triggered rules

Low Few votes, recently uploaded zero_votes_recent

Uploaded within the last 14 days with 2 or fewer community votes — little peer review so far.

Low AI review downgraded a static finding llm_review

The static rules flagged this MEDIUM, but an AI model (anthropic/claude-sonnet-4.6) reviewed the full PKGBUILD and judged it LOW (confidence 80%): Package installs a prebuilt Unreal Engine fork from the project's own GitHub release assets (satisfactorymodding/UnrealEngine) with pinned SHA-256 checksums; the .install hook creates a system group and sets ACLs on /opt/unreal-engine-css, which is privileged but standard for multi-user engine access and not malicious. The custom DLAGENT runs a bundled helper script to fetch GitHub release assets, which is unusual but scoped to the project's own repo. No obfuscation, exfiltration, or unrelated remote execution is present.

1 higher static finding superseded - not the current verdict (shown for transparency)
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:73 ! find "$stage" -type d -exec chmod 2775 {} + ||

PKGBUILD

1 offending line(s) highlighted
1# Maintainer: Jonathan Gabor <jgabor@users.noreply.github.com>
2# makepkg reads metadata and supplies srcdir/pkgdir.
3# shellcheck disable=SC2034,SC2154
4pkgname=unreal-engine-css-bin
5pkgver=5.6.1.css83
6pkgrel=5
7pkgdesc='Prebuilt Coffee Stain Unreal Engine for Satisfactory mod development'
8arch=('x86_64')
9url='https://github.com/satisfactorymodding/UnrealEngine'
10license=('LicenseRef-UnrealEngine')
11# Main executable and ordinary CEF host closures, not all optional dlopen paths.
12# Bash runs engine scripts; xdg-utils supplies desktop integration utilities.
13# The install hook sets a default group ACL with setfacl.
14depends=('glibc' 'libgcc' 'libstdc++' 'dbus' 'systemd-libs' 'bash' 'xdg-utils'
15 'alsa-lib' 'at-spi2-core' 'libxcomposite' 'libxdamage' 'libxkbcommon'
16 'libxrandr' 'mesa' 'nss' 'pango' 'acl')
17optdepends=('vulkan-driver: run the editor'
18 'glu: TechSoft CAD import')
19makedepends=('github-cli' 'zstd' 'patch')
20options=('!strip' '!debug' 'staticlibs')
21install='unreal-engine-css-bin.install'
22_release='5.6.1-css-83'
23_parts=(
24 "UnrealEngine-CSS-${_release}-Editor-Linux.tar.zst.00"
25 "UnrealEngine-CSS-${_release}-Editor-Linux.tar.zst.01"
26 "UnrealEngine-CSS-${_release}-Editor-Linux.tar.zst.02"
27 "UnrealEngine-CSS-${_release}-Editor-Linux.tar.zst.03"
28)
29source=(
30 "${_parts[0]}::ghasset://satisfactorymodding/UnrealEngine/${_release}/436454982"
31 "${_parts[1]}::ghasset://satisfactorymodding/UnrealEngine/${_release}/436454971"
32 "${_parts[2]}::ghasset://satisfactorymodding/UnrealEngine/${_release}/436454983"
33 "${_parts[3]}::ghasset://satisfactorymodding/UnrealEngine/${_release}/436454984"
34 'LICENSE.md'
35 'setup-dotnet-permissions.patch'
36)
37noextract=("${_parts[@]}")
38sha256sums=(
39 '5847a80489d04e7ec231de01c154e1046174aa69f5d2c00023a62a67626001e7'
40 '06e8177c34ac2cae5568a71dc92b735162ee29987e964ecf312620f0b11a8d9f'
41 'b624c15b9becf336b6ed4e71b73498f208d3f6edaf857e0bcdcebce7540a9362'
42 '565829545aff54f3771ac80d00e6edea38fd0a235c723c55be063f563aadb049'
43 '73f98e42dbdb609f741e58725a0627dd8a0ce1122dc8aa784cc474cb41d4ddea'
44 '2c3c37a79b3fbcbfde15077368ee90fabff916d60d5fae050317ead4298f466d'
45)
46
47# makepkg splits DLAGENTS on spaces, not shell quoting. Keep the helper path
48# in the environment; the child Bash expands it as one quoted argument.
49UNREAL_ENGINE_CSS_DOWNLOAD_HELPER="$(dirname -- "$(realpath -- "${BASH_SOURCE[0]}")")/download-gh-asset"
50export UNREAL_ENGINE_CSS_DOWNLOAD_HELPER
51DLAGENTS+=("ghasset::/usr/bin/bash -c exec\${IFS}\"\$UNREAL_ENGINE_CSS_DOWNLOAD_HELPER\"\${IFS}\"\$1\"\${IFS}\"\$2\" -- %u %o")
52
53package() {
54 local stage i
55 # Repackage can skip makepkg's source checks. Always recheck the pinned
56 # inputs, including the patch and notice, before consuming any archive.
57 for (( i=0; i<${#source[@]}; i++ )); do
58 printf '%s %s\n' "${sha256sums[i]}" "${source[i]%%::*}"
59 done | (cd "$srcdir" && sha256sum --check --strict -) || return 1
60
61 stage=$(mktemp -d "$srcdir/engine-stage.XXXXXXXX") || return 1
62 # Use pipefail only in this subshell, never in makepkg's metadata process.
63 if ! (set -o pipefail
64 cd "$srcdir" && cat -- "${_parts[@]}" | zstd -dc |
65 tar -xf - --no-same-owner --no-same-permissions \
66 --delay-directory-restore -C "$stage"
67 ); then
68 rm -rf -- "$stage"
69 return 1
70 fi
71 if ! patch --batch --forward -d "$stage" -p1 < "$srcdir/setup-dotnet-permissions.patch" ||
72 ! rm -rf -- "$stage/Engine/Source/Programs/LiveLinkHub" ||
73 ! find "$stage" -type d -exec chmod 2775 {} + ||
74 ! find "$stage" -type f -exec chmod g+w {} +; then
75 rm -rf -- "$stage"
76 return 1
77 fi
78 install -Dm644 "$srcdir/LICENSE.md" "$pkgdir/usr/share/licenses/$pkgname/LICENSE.md" || return 1
79 install -d "$pkgdir/opt" || return 1
80 # makepkg clears pkgdir for package()/--repackage. Do not merge stale trees.
81 [[ ! -e "$pkgdir/opt/unreal-engine-css" ]] || return 1
82 # -T prohibits accidental nesting; --no-copy enforces same-filesystem staging.
83 mv --no-copy -T -- "$stage" "$pkgdir/opt/unreal-engine-css"
84}
85

Scan history

Scanned at (UTC)SeverityRules
2026-10-23 00:02:19 Low 3
2026-10-22 19:39:36 Low 3
2026-10-22 19:36:04 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