Page MenuHomePhabricator

Missing abuse logs of Special:CreateLocalAccount actions
Closed, ResolvedPublicBUG REPORT

Description

List of steps to reproduce (step by step, including full links if applicable):

  • Create an private abusefilter that blocks creations and autocreations of usernames with certain pattern.

Example filter rules:

(
    action == 'createaccount'
    | action == 'autocreateaccount'
)
& (
    rx := "some pattern";
    accountname irlike rx
)
  • Set action on triggering to warning and prevention.
  • Create local account (Special:CreateLocalAccount) for a global account which matches that pattern.
  • Caught by the filter.
  • Check abuse log and see the log (appearing as the account creating its local account, instead of the sysop)
  • Go to Special:CreateLocalAccount and create account for the same or other global accounts that matches the pattern.
  • Caught by the filter again.
  • Check abuse log and no new log occurs.
  • Repeat the creation after 2 hours.
  • Caught again but new log entry appears.

What should have happened instead?:

  • Abuse logs for trials after the first trial should appear.

Other information:
Problem was first found on zhwiki (AF194), then reproduced on wikidata.beta.wmflabs.org by User:Stang (AF3).

Event Timeline

Tigerzeng renamed this task from Special:CreateLocalAccount actions logged as autocreateaccount in abuse logs to Missing abuse logs of Special:CreateLocalAccount actions.May 7 2022, 1:58 AM

Co-author addition:

  1. Create a filter on Wikidata beta cluster (it was private at that time) - just a normal filter blocks creation for account contains string on9 inside username
  2. Go to Special:CreateLocalAccount, target set to "ATYMason95810", click "Submit"
  3. Trapped by filter, and got a log
    image.png (835×1 px, 411 KB)
  4. Tried again, trapped again, but no new abuselog record found!
  5. Found another victim user named "AlenaMcclendon9", tried createLocalAccount again
  6. Trapped again, still no abuselog record found! NB: I only received "warning" message from filter rather than "prevention".
    image.png (746×1 px, 100 KB)

Can you test this with a filter action of just disallow without the initial warning action too?

Can you test this with a filter action of just disallow without the initial warning action too?

Looks like the same (on zhwiki).

Something even more strange happened: I created a new filter and marked the previous filter as "deleted". Note: this new filter detect different sequence in account name. When trying to force create a local account whose name matched the new filter's rule (and did NOT match the old, deleted filter's rule), I was trapped again, and the warning message for the previous, deleted filter was shown to me.

image.png (598×1 px, 71 KB)

Autocreate errors are cached for 5 minutes for performance (since autocreate is attempted on every pageview), so assuming the initial retries are within that time frame, this is working as expected.

Dragoniez assigned this task to XtexChooser.

I tested this on my local MW installation in relation to T366858, and it appears that this was implicitly fixed in rMW50dd99e. Currently, AuthManager::autoCreateUser contains:

		$session = null;
		if ( !$performer || $performer->getUser()->equals( $user ) ) {
			$session = $this->request->getSession();
		}

		// Check the session, if we tried to create this user already there's
		// no point in retrying.
		if ( $session && $session->get( self::AUTOCREATE_BLOCKLIST ) )

$performer is the user who forcibly autocreates a local account (i.e., $user). When someone uses CreateLocalAccount, $performer and $user are different, meaning $session remains null. So the code doesn't get into the if block to use the cache, meaning the forcible autocreation is logged.