Bug 17691 - Escapen von Sonderzeichen in Benutzernamen und Passwort
Escapen von Sonderzeichen in Benutzernamen und Passwort
Status: CLOSED FIXED
Product: UCS
Classification: Unclassified
Component: Update - univention-updater
UCS 2.3
Other Linux
: P5 normal (vote)
: UCS 2.3-2
Assigned To: Philipp Hahn
Sönke Schwardt-Krummrich
:
Depends on: 18393
Blocks:
  Show dependency treegraph
 
Reported: 2010-02-18 11:18 CET by Sönke Schwardt-Krummrich
Modified: 2010-05-18 10:00 CEST (History)
2 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 Sönke Schwardt-Krummrich univentionstaff 2010-02-18 11:18:50 CET
Werden Sonderzeichen in Benutzernamen oder Passwort verwendet (z.B. ":" oder "@") kann es im Updater bei der Proxy-Authentifizierung bzw. bei der Basic-Auth zu Problemen bei den daraus generierten URLs kommen.

deb http://user@user:passwd:passwd@host/path/ ucs_2.2-0/all

Der Updater sollte in den UCR-Templates grundsätzlich eine urlescaped Variante von Benutzernamen und Passwort ausgeben.
Comment 1 Philipp Hahn univentionstaff 2010-05-10 14:24:42 CEST
Der updater-Teil ist gefixed, aber wegen dem Debian-Bug  http://bugs.debian.org/500560 sind "@:/" weiterhin nicht möglich.

\item Benutzernamen und Passwörter für die Proxy-Authentifikation können alle
Zeichern außer ,,\texttt{@}'', ,,\texttt{:}'' und ,,\texttt{/}'' enthalten
(\ucsBug{17691}).
Comment 2 Sönke Schwardt-Krummrich univentionstaff 2010-05-10 14:29:24 CEST
Das sollte funktionieren, wenn Username/Passwort url-encodet dort eingetragen werden ('@' == '%40'). Hast du das mal getestet?
Comment 3 Philipp Hahn univentionstaff 2010-05-11 12:41:18 CEST
FYI: Aufgefallen bei ucs-test/updater/47: UCR löscht Leerzeichen am Anfang und Ende des Wertes, weshalb Benutzernamen und Passwörter nicht damit anfangen und enden dürfen:

# ucr set test=" foo "
Create test
# sed -ne '/^test:/s/^\|$/|/gp' /etc/univention/base.conf
|test:  foo |
# ucr get test | sed 's/^/|/;s/$/|/'
|foo|
# ucr shell test | sed 's/^/|/;s/$/|/'
|test="foo"|
# python2.4 -c 'import univention.config_registry as c;u=c.ConfigRegistry();u.load();print "|%s|"%u.get("test")'
|foo|
Comment 4 Philipp Hahn univentionstaff 2010-05-13 17:10:57 CEST
svn+ssh:///var/svn/dev/trunk/internal/ucs-test/scripts-09_updater/47component-auth-special
svn+ssh:///var/svn/dev/trunk/internal/ucs-test/scripts-09_updater/18proxy-special

Beim Auslesen von proxy/http werden URL-escapte Zeichen jetzt dekodiert, bevor sie als HTTP-Header an der Proxy-Server geschickt werden.

Trotzdem gibt es einige Zeichen, die man besser nicht benutzten sollte:
Username: :/[
Passwort: @/[
Das Problem ist dabei nicht der Updater, sondern die APT-Programme: Diese zerlegen die URLs flasch und scheitern dann daran. (die URLs sind korrekt und werden in den Tests per lwp-request überprüft und funktionieren damit auch ohne Probleme).


Noch eine Anmerkung zur Proxy-Konfiguration:
Es gibt mehrere proxy/*-UCR-Variablen, die von verschiedenen Programmen leicht unterschiedlich genutzt werden:

proxy/http: Enthält eine gebrauchsfertige http_proxy-Variable, d.h. Sonderzeichen müssen darin %-escaped sein. Wird in /etc/profiles, /etc/apt/apr.conf.d/80proxy.conf und von univention/updater/tools.py verwendet.

proxy/address, proxy/port, proxy/username, proxy/password: werden nur in /etc/apt/apr.conf.d verwendet. Die Informationen aus proxy/username und proxy/password werden dabei ggf. nochmals zu den ggf. in proxy/http bereits vorhandenen Informationen hinzugefügt! Das würde dann nur für APT gelten, nicht aber für alle anderen Programme, die auf die environment-Variable aus /etc/profiles angewiesen sind.
Sollten proxy/username und proxy/passwort doch verwendet werden, so ist dabei darauf zu achten, daß nicht-ASCII-Zeichen derzeit nicht escaped werden, dies also manuell passieren muß.
Außerdem wird dort eine ggf. vorhandene Groß-/Kleinschreibung bei Benutzername und Passwort zunichte gemacht. -> Neuer Bug
Comment 5 Sönke Schwardt-Krummrich univentionstaff 2010-05-14 16:04:16 CEST
(In reply to comment #4)
> svn+ssh:///var/svn/dev/trunk/internal/ucs-test/scripts-09_updater/47component-auth-special
> svn+ssh:///var/svn/dev/trunk/internal/ucs-test/scripts-09_updater/18proxy-special
> 
> Beim Auslesen von proxy/http werden URL-escapte Zeichen jetzt dekodiert, bevor
> sie als HTTP-Header an der Proxy-Server geschickt werden.

Getestet wurde mit %20 (Leerzeichen) und %40 (@). Der Updater hat keine Probleme, apt-get läuft wie beschrieben in den Debian-Bug.

Es wurde mit und ohne Proxy-Angabe die Angaben für Releases, Sec-Updates und Components geprüft (letztere mit und ohne Passwort).

> proxy/http: Enthält eine gebrauchsfertige http_proxy-Variable, d.h.
> Sonderzeichen müssen darin %-escaped sein. Wird in /etc/profiles,
> /etc/apt/apr.conf.d/80proxy.conf und von univention/updater/tools.py verwendet.

Hat funktioniert. Siehe oben.
 
> proxy/address, proxy/port, proxy/username, proxy/password: werden nur in
> /etc/apt/apr.conf.d verwendet. Die Informationen aus proxy/username und
> proxy/password werden dabei ggf. nochmals zu den ggf. in proxy/http bereits
> vorhandenen Informationen hinzugefügt! Das würde dann nur für APT gelten, nicht
> aber für alle anderen Programme, die auf die environment-Variable aus
> /etc/profiles angewiesen sind.
> Sollten proxy/username und proxy/passwort doch verwendet werden, so ist dabei
> darauf zu achten, daß nicht-ASCII-Zeichen derzeit nicht escaped werden, dies
> also manuell passieren muß.
> Außerdem wird dort eine ggf. vorhandene Groß-/Kleinschreibung bei Benutzername
> und Passwort zunichte gemacht. -> Neuer Bug

Bug18397: diese 4 UCR-Variablen sollten entfernt werden
Comment 6 Stefan Gohmann univentionstaff 2010-05-18 10:00:24 CEST
UCS 2.3-2 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte der Bug dupliziert werden:
"Clone This Bug".