The developers of the PHP scripting language have shared an update on the recently disclosed breach in which attackers planted malicious code.
The malicious code, discovered in late March, was found in the php-src repository hosted on the git.php.net server and it was apparently designed to allow an attacker to remotely execute arbitrary PHP code. PHP developers said the backdoor was discovered before it was pushed out to users via an update.
Initially, users were told that evidence pointed to a compromise of the git.php.net server rather than a Git account hijacking.
However, in an update shared this week, Nikita Popov, an important PHP contributor, said they no longer believe the git.php.net server was compromised.
Further investigation revealed that git.php.net had allowed developers to push changes — in addition to SSH via Gitolite infrastructure and public key cryptography — using HTTPS and password-based authentication. The attacker apparently leveraged this HTTPS channel to push the malicious PHP commits.
“I’m not sure why password-based authentication was supported in the first place, as it is much less secure than pubkey authentication,” Popov said.
Logs showed that it took the attacker a relatively small number of attempts to guess a username, and then successfully authenticated.
“While we don’t have any specific evidence for this, a possible explanation is that the user database of master.php.net has been leaked, although it is unclear why the attacker would need to guess usernames in that case,” Popov explained.
He added, “The master.php.net system, which is used for authentication and various management tasks, was running very old code on a very old operating system / PHP version, so some kind of vulnerability would not be terribly surprising.”
In response to the incident, all php.net passwords have been reset, the use of the git.php.net server has been discontinued in favor of GitHub, and steps have been taken to make master.php.net more secure.