otrs
Triggered rules
llm_review
The static rules flagged this MEDIUM, but an AI model (qwen/qwen3-235b-a22b-07-25) reviewed the full PKGBUILD and judged it LOW (confidence 95%): The source is a tarball from the project's official community website, used to build the package normally; the host is not whitelisted but is plausibly official, and the content is source code, not an unverifiable binary.
2 higher static findings superseded - not the current verdict (shown for transparency)
source_untrusted_domain
One or more source=() URLs point to a host outside the trusted allowlist (github.com, gitlab.com, codeberg.org, pypi.org, …).
-
PKGBUILD:42
"https://otrscommunityedition.com/download/${pkgname}-community-edition-${pkgver}.tar.gz")
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:81
find "${pkgdir}/usr/share/webapps/${pkgname}" -type d -exec chmod 2775 {} \;
PKGBUILD
2 offending line(s) highlightedpkgname=otrs
pkgver=6.0.41
pkgrel=1
pkgdesc="OTRS is the leading open-source Help Desk and IT Service Management (ITSM)"
arch=("any")
options=("emptydirs")
url="https://otrscommunityedition.com/"
license=("GPLv3")
depends=("perl"
"perl-gd"
"perl-dbi"
"perl-moo"
"perl-ldap"
"perl-ntlm"
"perl-dbd-pg"
"perl-gdgraph"
"perl-json-xs"
"perl-net-dns"
"perl-datetime"
"perl-timedate"
"perl-pdf-api2"
"perl-dbd-odbc"
"perl-dbd-mysql"
"perl-gdtextutil"
"perl-xml-parser"
"perl-archive-zip"
"perl-text-csv-xs"
"perl-xml-libxslt"
"perl-authen-sasl"
"perl-crypt-ssleay"
"perl-yaml-libyaml"
"perl-mail-imapclient"
"perl-template-toolkit"
"perl-crypt-eksblowfish"
"perl-lwp-protocol-https"
"perl-bytes-random-secure")
optdepends=("mariadb: Fast SQL database server, drop-in replacement for MySQL"
"apache: A high performance Unix-based HTTP server")
backup=("etc/webapps/${pkgname}/Config.pm")
install="${pkgname}.install"
source=("${pkgname}.install"
"https://otrscommunityedition.com/download/${pkgname}-community-edition-${pkgver}.tar.gz")
sha256sums=("cb10dda941c7477880ae06362ef69fe0cfb1d06ad9ad1315cb7322d4dd65963e"
"0303856d6c6b74637aa1a6a1c37bc5315840b54cf3e31a39f7690000bda9b956")
prepare() {
cat << EOL > "${srcdir}/${pkgname}.service"
[Unit]
Description=OTRS Daemon
After=network.target
[Service]
User=otrs
Group=http
Type=simple
ExecStart=/usr/share/webapps/otrs/bin/otrs.Daemon.pl start
ExecStop=/usr/share/webapps/otrs/bin/otrs.Daemon.pl stop
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOL
}
package() {
install -dm 0755 "${pkgdir}/etc/webapps/${pkgname}"
install -dm 0755 "${pkgdir}/usr/share/webapps/${pkgname}"
install -Dm 0644 "${srcdir}/${pkgname}-community-edition-${pkgver}/Kernel/Config.pm.dist" "${pkgdir}/etc/webapps/${pkgname}/Config.pm"
install -Dm 0644 "${srcdir}/${pkgname}.service" "${pkgdir}/usr/lib/systemd/system/${pkgname}.service"
cp -ra ${srcdir}/${pkgname}-community-edition-${pkgver}/* ${pkgdir}/usr/share/webapps/${pkgname}/
for FILENAME in ${pkgdir}/usr/share/webapps/${pkgname}/var/cron/*.dist
do
mv $FILENAME ${pkgdir}/usr/share/webapps/${pkgname}/var/cron/`basename $FILENAME .dist`
done
ln -s "/etc/webapps/${pkgname}/Config.pm" "${pkgdir}/usr/share/webapps/${pkgname}/Kernel/Config.pm"
find "${pkgdir}/usr/share/webapps/${pkgname}" -type d -exec chmod 2775 {} \;
sed -i "s/\/opt/\/usr\/share\/webapps/g" $(grep -rl "/opt" "${pkgdir}/etc/webapps/${pkgname}")
sed -i "s/\/opt/\/usr\/share\/webapps/g" $(grep -rl "/opt" "${pkgdir}/usr/share/webapps/${pkgname}")
}
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-08-03 00:08:14 | LOW | 3 |
| 2026-08-02 00:16:08 | LOW | 3 |
| 2026-08-01 00:11:18 | LOW | 3 |
| 2026-07-31 00:14:10 | LOW | 3 |
| 2026-07-30 00:17:23 | LOW | 3 |
| 2026-07-29 00:25:53 | LOW | 3 |
| 2026-07-28 00:07:28 | LOW | 3 |
| 2026-07-27 00:24:32 | LOW | 3 |
| 2026-07-26 00:07:32 | LOW | 3 |
| 2026-07-25 00:13:44 | LOW | 3 |
| 2026-07-24 00:02:28 | LOW | 3 |
| 2026-07-23 00:14:47 | LOW | 3 |
| 2026-07-22 00:29:32 | LOW | 3 |
| 2026-07-21 00:24:15 | LOW | 3 |
| 2026-07-20 00:19:49 | LOW | 3 |
| 2026-07-19 00:17:08 | LOW | 3 |
| 2026-07-18 00:14:48 | LOW | 3 |
| 2026-07-17 00:06:16 | LOW | 3 |
| 2026-07-16 00:05:41 | LOW | 3 |
| 2026-07-15 00:09:25 | LOW | 3 |