phpBB erscheint in Version 2.18

phpBB ist gestern in der Version 2.18 erschienen. Wie ein Programmierer berichtet hat, wurde der gesamte Quell-Code von Sicherheitsexperten auf Fehler geprüft. Da hier doch etwas mehr Fehler gefunden wurden, ist das Update umfangreicher wie in der Vergangenheit. Die aktuelle Version kann derzeit in der englischen Version unter phpBB.com (zip) geladen werden. Die deutsche Version gibt es unter phpbb.de, auch gibt es hier eine Update-Anleitung.

Folgende Punkte wurden geändert:

# [Fix] incorrect handling of password resets if admin activation is enabled (Bug #88)
# [Fix] retrieving category rows in index.php (Bug #90)
# [Fix] improved index performance by determining the permissions before iterating through all forums (Bug #91)
# [Fix] wrong topic redirection after login redirect (Bug #94)
# [Fix] improved handling of username lists in admin_ug_auth.php (Bug #98)
# [Fix] incorrect removal of bbcode_uid values if bbcode has been turned off (Bug #100)
# [Fix] correctly preview signature if editing other users posts (Bug #101)
# [Fix] incorrect alt tag on generated search images in groupcp.php, viewtopic.php and usercp_viewprofile.php (Bug #102)
# [Fix] consistent forum ordering in all dropdown boxes (Bug #106)
# [Fix] correctly get compression status in page_tail.php and page_footer_admin.php (Bug #117)
# [Fix] set page title on summary page of groupcp.php (bug #125)
# [Fix] correctly test style and avatar in usercp_register.php (bug #129 and #317)
# [Fix] handling of reactivation notifications if admin activation is enabled (Bug #145)
# [Fix] handling of both forms of translation information used in language packs (Bug #159)
# [Fix] key length for activation keys fixed in usercp_sendpassword.php (Bug #171)
# [Fix] use GENERAL_MESSAGE constant in message_die instead of MESSAGE (Bug #176)
# [Fix] incorrect handling of move stubs (Bug #179)
# [Fix] wrong mode_type in memberlist (Bug #187)
# [Fix] SQL errors when setting maximum PMs to 0 (Bug #188)
# [Fix] removed unused variable from topic_notify email template (Bug #210)
# [Fix] removed unset variable from smilies popup window title (Bug #224)
# [Fix] removed duplicate template assignment from admin_board.php (Bug #226)
# [Fix] incorrect search link for guest posts in modcp.php (Bug #254)
# [Fix] all users removed from topics watch table on special occassions (Bug #271)
# [Fix] correctly check returned value from strpos in append_sid function (Bug #275)
# [Fix] correctly display username in private message notification (Bug #278)
# [Fix] fixed “var-by-ref” errors (Bug #322)
# [Fix] changed redirection to installation (Bug #325)
# [Fix] added timout of 10 seconds to version check (Bug #348)
# [Fix] fixed user_level default in postgresql schema file (Bug #444)
# [Fix] multiple minor HTML issues with subSilver
# [Change] deprecated the use of some PHP 3 compatability functions in favour of the native equivalents
# [Change] added 60 days limit for grabbing unread topics in index.php

# [Sec] backport of session keys system from olympus
# [Sec] fixed email bans to use the same pattern as email validation and allow wildcard domain bans
# [Sec] fixed validation of topic type when posting
# [Sec] unset database password once it is no longer needed
# [Sec] fixed potential to select images outside the specified path as avatars or smilies
# [Sec] fix globals de-registration code for PHP5 – (Stefan Esser/Matt Kavanagh)
# [Sec] changed avatar gallery code sections to prevent possible injection points (AnthraX101)
# [Sec] signature field is not properly sanitised for user input when an error occurs while accessing the avatar gallery (AnthraX101)
# [Sec] check to_username and ownership when editing a PM (AnthraX101)
# [Sec] fixed ability to edit PM’s you did not send (depablo84)
# [Sec] compare imagetype on avatar uploading to match the file extension from uploaded file

Ein Update ist dringend zu empfehlen.

Interessant ist unter anderem folgende Code-Änderungen zur Erhöhung der Sicherheit. Interessant deshalb, weil es auch in anderen Projekten sicher seine Anwendung finden könnte:
// Protect against GLOBALS tricks
if (isset($HTTP_POST_VARS['GLOBALS']) || isset($HTTP_POST_FILES['GLOBALS']) || isset($HTTP_GET_VARS['GLOBALS']) || isset($HTTP_COOKIE_VARS['GLOBALS']))
{
die("Hacking attempt");
}

Das gleiche kann man bei SESSION_VARS machen:

// Protect against HTTP_SESSION_VARS tricks
if (isset($HTTP_SESSION_VARS) && !is_array($HTTP_SESSION_VARS))
{
die("Hacking attempt");
}

Alle Änderungen können auf phpBBHacks.com eingesehen werden. Hier ist auch zu sehen, wie das image-Problem gelöst wurde: man prüft explizit auf den mime-Typ. Wenn dieser mit der Datei-Endung übereinstimmt und das Bild zudem größer 0 Byte ist (ein reines Script hat bei getimagesize immer 0 Byte) , dann wird das Bild akzeptiert.

3 Gedanken zu „phpBB erscheint in Version 2.18

  1. hi.
    ich wollte bei google gerade mal nachschauen, wozu und warum es den code-schnipsel “// Protect against GLOBALS tricks” gibt. dadruch bin ich auch auf deinen block gestoßen.

    was ist denn nun der sinn und zweck davon? ich meine, wenn ich zB mein script mit folgendem GET parameter aufrufe:
    http://www.server.de/test.php?GLOBALS=hallo_welt
    dann wird die variable $_GET[‘GLOBALS’] auf der scriptseite doch wie ein ganz normaler string behandelt?! was ist denn daran nun so gefährlich? ich versteh den sinn von diesem code-schnipsel absolut nicht. wäre super, wenn du mir den sinn davon kurz beschreiben könntest, wo nun evt. die gefahr liegt.

    vielen dank und weiter so.
    🙂

  2. Hallo Jenny,

    Wir haben hier ein Problem, das von PHP herkommt. Und zwar ist es bei vielen Installationen immernoch so, dass register_globals aktiv ist. Das heißt, dass jede GET-Variable direkt verfügbar ist. Aus der Adresse http://www.test.de/test.php?bla=blubb folgt dann, dass $bla existiert und den Wert “blubb” hat. Das geht natürlich auch mit GLOBALS, womit das Problem klar sein sollte.

    Gruß

    Mathias

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.