https://bugzilla.wikimedia.org/show_bug.cgi?id=23076

           Summary: Login CSRF
           Product: MediaWiki
           Version: 1.15.2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: Normal
         Component: User login
        AssignedTo: [email protected]
        ReportedBy: [email protected]


MediaWiki 1.15.2 and earlier is vulnerable to a cross-site request forgery
(CSRF) vulnerability in both its HTML login interface and its API login
interface. 

Login CSRF is a particularly problematic kind of CSRF when it is combined with
user scripting. An attacker can create an account with a user-specific script,
then force another user (the "victim") to log in to that account. The prepared
user script then takes control of the victim's browser. It can display a login
form, apparently on the same domain, which captures the username and password
of the victim when they submit the form.

See section 3 of this paper for more discussion of login CSRF:

http://www.adambarth.com/papers/2008/barth-jackson-mitchell-b.pdf

To counter this, MediaWiki 1.15.3 will apply the standard defence for CSRF,
that is to ask for a secret "token" before it allows a login. In the HTML
interface (Special:UserLogin), the token is provided via a hidden form field
called wpLoginToken, which the browser will automatically submit.

In the API, the login process becomes:

1. Submit a request with lgname and lgpassword, in the same way as you did for
MediaWiki 1.15.2 and earlier. Save the cookies in the response.

   * An old unpatched server will respond with a response like {"login":
{"result": "Success", ... }, assuming JSON format. If this occurs, you are
logged in and can stop.

   * A patched 1.15.3 server will respond with {"login": {"result":
"NeedToken", "token": ...}. Save the token from this response and proceed to
step 2.

2. Submit a request with the cookies from step 1, and additionally submit the
parameter "lgtoken", with the value from the token in step 1.

   * If the session cookie was not submitted correctly, or if the server-side
session expired, the server may respond with {"login": {"result":
"WrongToken"}}. You can report this as an error to the user, or retry after a
few seconds.

   * If everything was OK, the response will be  {"login": {"result":
"Success", ... } as in MediaWiki 1.15.2.

-- 
Configure bugmail: https://bugzilla.wikimedia.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
You are on the CC list for the bug.

_______________________________________________
Wikibugs-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikibugs-l

Reply via email to