Bug 27573 - Auswertung UCR tab completition
Auswertung UCR tab completition
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: UCR
UCS 3.0
Other Linux
: P5 normal (vote)
: UCS 3.1
Assigned To: Stefan Gohmann
Philipp Hahn
: interim-1
: 22261 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2012-06-14 10:00 CEST by Florian Best
Modified: 2016-11-25 12:35 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):
Max CVSS v3 score:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Florian Best univentionstaff 2012-06-14 10:00:28 CEST
Es kann shellcode ausgeführt werden

1. Variable setzten
# ucr set xxx='`cat /etc/shadow`'

2. Variable erneut setzten + tab drücken
# ucr set xxx=[TAB]
siehe da:
# ucr set xxx="root:$1$g6AsGAwu$LqlXzdksWiAkQvje0WIq..:15492:0:99999:7:::
Comment 1 Moritz Muehlenhoff univentionstaff 2012-06-20 10:57:07 CEST
Das ist keine Sicherheitslücke: Ausgenutzt werden kann es nur, wenn UCR-Variablen gesetzt werden können, also entweder der User root oder ein Benutzer, der Zugriffsrechte auf das UCR-Modul der UMC hat. 

Letzteres ist ohnehin root-äquivalent: Ein Benutzer, der UCR-Variablen setzen kann, hat z.B. die Möglichkeit einen Cron-Job in UCR zu definieren, der ihm eine Root-Shell einrichtet.
Comment 2 Philipp Hahn univentionstaff 2012-06-20 11:05:54 CEST
Stimmt, keine Sicherheitslücke im engeren Sinne. aber trotzdem sollte die Tab-Completion ggf. enthaltene Programme nicht ausführen: Denn da werden (z.B.) für den Updater auch Kommandozeilenaufrufe hinterlegt, die erst irgendwann in Zukunft ausgeführt werden. Ein ggf. darin vorhandenes `ucr get ...` sollte dann nicht schon jetzt ausgeführt werden.

Wer auch immer dieses Bug bearbeiten darf: Viel Spaß mit dem Shell- und Readline-Quoting, meiner bisherigen Erfahrung nach ist das fast ein Ding der Unmöglichkeit ;-)
Comment 3 Moritz Muehlenhoff univentionstaff 2012-07-11 08:30:17 CEST
Wie könnten die Bash Completion für set einfach deaktivieren.
Comment 4 Stefan Gohmann univentionstaff 2012-07-11 08:35:48 CEST
Da keine echte Sicherheitslücke nicht zu UCS 3.0-2. 

Bei Einwänden melden.
Comment 5 Stefan Gohmann univentionstaff 2012-07-17 17:09:40 CEST
UCS 3.1 will be the next release.
Comment 6 Stefan Gohmann univentionstaff 2012-09-04 20:57:27 CEST
Wurde angepasst. In der erstem Version hatte ich nur die Werte in ' gesetzt, dadurch wurden sie nicht mehr evaluiert. Das Resultat war dann:
ucr set xxx=[TAB]
ucr set xxx="`cat /etc/shadow`"

Wenn dann aber der Wert erweitert wurde, beispielsweise
ucr set xxx="`cat /etc/shadow` foo"

Dann wurde der cat Befehl ausgewertet.

Anstatt " werden jetzt ' verwendet. Das Resultat:
ucr set xxx=[TAB]
ucr set xxx='`cat /etc/shadow`'

Da das mit den gleichen Berechtigungen ausgeführt wird, ist es keine Sicherheitslücke, deshalb habe ich das Subjekt geändert.
Comment 7 Philipp Hahn univentionstaff 2012-09-10 15:54:01 CEST
OK: base/univention-config-registry/etc/bash_completion.d/univention-config-registry
OK: ucr set foo=\`date\` bar=\$\(date\) bam=foo\"bar

FAIL: ucr set baz=foo\'bar # → ...baz='foobar\ 
  (ich halte das nicht für kritisch und lohne vermutlich den Aufwand nicht, in anbetracht daß da noch mehr im Argen liegt mit der Completion)

OK: Die Completion funktioniert nur für die 1. Variable; bei "foo=1 bar=<TAB>" erfolgt keine Vorschlag mehr für bar
  (das ist ein Problem von _get_cword() aus /etc/bash_completion und ging auch vorher schon nicht, von daher kein Problem dieses Bugs)

FAIL: Im ChangeLog steht noch "double quotes".
[set→put] in [double→single] quotes [and the value will no longer be→to protect it from being] evaluated
Comment 8 Stefan Gohmann univentionstaff 2012-09-10 16:03:16 CEST
(In reply to comment #7)
> OK:
> base/univention-config-registry/etc/bash_completion.d/univention-config-registry
> OK: ucr set foo=\`date\` bar=\$\(date\) bam=foo\"bar
> 
> FAIL: ucr set baz=foo\'bar # → ...baz='foobar\ 
>   (ich halte das nicht für kritisch und lohne vermutlich den Aufwand nicht, in
> anbetracht daß da noch mehr im Argen liegt mit der Completion)

Ja, sehe ich auch so.

> OK: Die Completion funktioniert nur für die 1. Variable; bei "foo=1 bar=<TAB>"
> erfolgt keine Vorschlag mehr für bar
>   (das ist ein Problem von _get_cword() aus /etc/bash_completion und ging auch
> vorher schon nicht, von daher kein Problem dieses Bugs)
> 
> FAIL: Im ChangeLog steht noch "double quotes".
> [set→put] in [double→single] quotes [and the value will no longer be→to protect
> it from being] evaluated

Ist angepasst.
Comment 9 Philipp Hahn univentionstaff 2012-09-10 16:18:47 CEST
(In reply to comment #8)
> > FAIL: Im ChangeLog steht noch "double quotes".
> > [set→put] in [double→single] quotes [and the value will no longer be→to protect
> > it from being] evaluated
> 
> Ist angepasst.

OK: ChangeLog svn14729
Comment 10 Philipp Hahn univentionstaff 2012-10-12 14:49:22 CEST
(In reply to comment #7)
> OK: Die Completion funktioniert nur für die 1. Variable; bei "foo=1 bar=<TAB>"
> erfolgt keine Vorschlag mehr für bar
>   (das ist ein Problem von _get_cword() aus /etc/bash_completion und ging auch
> vorher schon nicht, von daher kein Problem dieses Bugs)

Wenn man die einfachen Quotes aus der 1. Completion löscht, funktioniert danach auch die Completion für weitere Argumente.

# ucr set update/se<TAB>
→ ucr set update/secure_apt='yes' repo<TAB>
→ <BEL>
← ucr set update/secure_apt=yes repo<TAB>
→ ucr set update/secure_apt=no repository/

Damit ist das ein Bash-Problem, den _get_cword() bekommt das nicht richtig hin.
Comment 11 Stefan Gohmann univentionstaff 2012-12-12 21:07:55 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".
Comment 12 Florian Best univentionstaff 2016-11-25 12:35:47 CET
*** Bug 22261 has been marked as a duplicate of this bug. ***