Megoldás a WordPress WP-Forum 1.7.4 SQL injection sebezhetőségre

Múlt héten milw0rm SQL injection jellegű biztonsági rést talált a WordPress Forum plugin 1.7.4 verziójában. Én pedig itt megmutatom, hogyan lehet a hibát kijavítani.

Az eredeti hibajelentés itt található.

Mint ahogyan a bevezetőben is említettem, ez egy standard SQL parancs befecskendezésés hiba, vagy szépen angolul SQL injection. A hiba a _GET paraméter trehány kezelésén és a forum_get_posts_by_user funkció hibás hívásán alapul.
A forum_show_profile funkció a ludas, ami egy alias a forum_get_profile funkcióra, a wp-forum.php 917. sorában:

function forum_show_profile(){
       return forum_get_profile($_GET['user']);
}

Nos, nézzük mit is csinál a forum_get_profile funkció. Erre választ a forum_functions.php 363. sorában találhatunk:

function forum_get_profile($user){
        global $user_ID, $table_threads, $wpdb, $rss_link, $profile_link;
        $profile = new WP_User($user);
        ...
        <td valign='top'  class='table_meta'>Recent posts: </td><td>".forum_get_posts_by_user($user, 10)."</td>
        ...

Azt hiszem, a legegyszerűbb megoldás az, hogy a kapott $user változót erőszakosan számmá konvertáljuk még WP_User osztály hívása előtt. Valahogy így:

	$user = intval($user);
        $profile = new WP_User($user);

Nos, ennyi volt 🙂

A hozzászólások jelenleg nem engedélyezettek ezen a részen.