Bug 18594 - Fehlendes Escaping für eval "$(ucr shell)" — ucslint
Fehlendes Escaping für eval "$(ucr shell)" — ucslint
Status: CLOSED WORKSFORME
Product: UCS
Classification: Unclassified
Component: ucslint
UCS 2.4
All Linux
: P4 normal (vote)
: UCS 3.1
Assigned To: Philipp Hahn
Lukas Walter
: interim-2
Depends on: 18444
Blocks:
  Show dependency treegraph
 
Reported: 2010-06-07 17:54 CEST by Sönke Schwardt-Krummrich
Modified: 2012-12-12 21:09 CET (History)
4 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional): Cleanup
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sönke Schwardt-Krummrich univentionstaff 2010-06-07 17:54:34 CEST
ucslint sollte das auch prüfen

+++ This bug was initially created as a clone of Bug #18444 +++

Es sollte ein ucs-test-Modul dafür geben.

+++ This bug was initially created as a clone of Bug #18443 +++

In vielen Skripten wird nur
 eval $(ucr shell)
statt
 eval "$(ucr shell)"
verwendet. Dies führt dazu, daß nach der Expansion von "ucr shell" die
Variablenzuweisungen nochmals durch die Shell expandiert werden. Das folgende
Beispiel zeigt das Problem:
# echo *
sources.list
# ucr set test="* * *"
Create test
# ucr shell test
test="* * *"
# eval $(ucr shell test)
# echo "$test"
* sources.list *
# eval "$(ucr shell test)"
# echo "$test"
* * *

Das ist insbesondere UCR-Variablen mit Shell-Metazeichen kritisch:
# ucr search --brief --value '[*?$`]'
ldap/connection/check: */3 * * * *
ldap/policy/cron: 5 * * * *
mrtg/cron: */15 * * * *

Siehe Bug #8417 Comment 7 für weitere Informationen.
Ggf. ist Bug #17269 auch auf diese Problematik zurückzuführen.

Alle Skripte sollten korrigiert werden und ggf. ein ucs-test-Test oder
ucs-lint-Check eingebaut werden, der fehlerhaften Verwendung anprangert.
Comment 1 Sönke Schwardt-Krummrich univentionstaff 2010-06-07 17:56:52 CEST
ucslint prüft jetzt die {pre,post}{inst,rm}-Skripte und die Joinskripte auf das "eval $(ucr shell)" Konstrukt.

ucslint muss noch für univention-policy-result erweitert werden.

Ggf. sollten alle im zu testenden Paket verfügbaren Shell-Skripte überprüft werden.
Comment 2 Janek Walkenhorst univentionstaff 2011-05-17 10:47:07 CEST
(In reply to comment #1)
> Ggf. sollten alle im zu testenden Paket verfügbaren Shell-Skripte überprüft
> werden.

Das ist bei univention-check-printers aufgefallen: Die Zeile
eval `/usr/sbin/univention-config-registry shell cups/checkprinters/mail/subject cups/checkprinters/mail/address`
wird in univention-check-printers.sh nicht erkannt.
Comment 3 Philipp Hahn univentionstaff 2012-08-02 20:26:46 CEST
An Bug #18443 wurde jetzt auch umgesetzt, das alle Shell-Skript auf das fehlerhafte Konstrukt überprüft werden, von daher WORKS-FOR-ME

Der Fehler in univention-check-printers ist bereits korrigiert.
Comment 4 Lukas Walter univentionstaff 2012-10-15 12:12:49 CEST
Das Konstrukt ...
=======================
eval `/usr/sbin/univention-config-registry shell cups/checkprinters/mail/subject cups/checkprinters/mail/address`
=======================

wird von ucslint erkannt und wurde in univention-check-printers.sh durch ...

=======================
eval "$(/usr/sbin/univention-config-registry shell cups/checkprinters/mail/subject cups/checkprinters/mail/address)"
=======================

ersetzt.
Daher: Verified.
Comment 5 Stefan Gohmann univentionstaff 2012-12-12 21:09:56 CET
UCS 3.1-0 has been released: 
 http://forum.univention.de/viewtopic.php?f=54&t=2125

If this error occurs again, please use "Clone This Bug".