PHP projesinin git deposunun ve kullanıcı tabanının güvenliğinin ihlal edildiğine ilişkin rapor

Özel olarak tasarlanmış bir Kullanıcı Aracısı başlığı ile bir istek gönderilirken arka kapının etkinleştirildiği bir PHP projesinin Git deposundaki iki kötü niyetli işlemin tanımlanmasıyla ilgili bir olayın analizinin ilk sonuçları yayınlandı. Saldırganların faaliyetlerinin izlerini incelerken, git deposunun bulunduğu git.php.net sunucusunun saldırıya uğramadığı, ancak proje geliştiricilerinin hesaplarının bulunduğu veritabanının tehlikeye atıldığı sonucuna varıldı. .

Saldırganların, DBMS'de saklanan kullanıcı veritabanını master.php.net sunucusuna indirmiş olmaları mümkündür. master.php.net içeriği zaten sıfırdan kurulan yeni main.php.net sunucusuna taşınmıştır. Php.net altyapısına erişimde kullanılan tüm geliştirici şifreleri sıfırlanarak özel şifre kurtarma formu aracılığıyla değiştirilme süreci başlatıldı. Git.php.net ve svn.php.net depoları salt okunur olarak kalır (geliştirme GitHub'a taşınmıştır).

PHP'nin kurucusu Rasmus Lerdorf'un hesabı üzerinden gerçekleştirilen ilk kötü niyetli taahhütün keşfedilmesinin ardından, hesabının hacklendiği varsayıldı ve önde gelen PHP geliştiricilerinden Nikita Popov, değişiklikleri geri aldı ve taahhüt haklarını engelledi. sorunlu hesap. Bir süre sonra, engellemenin bir anlam ifade etmediği anlaşıldı, çünkü dijital imza kullanılarak taahhütlerin doğrulanması olmadan, php-src deposuna erişimi olan herhangi bir katılımcı, sahte bir yazar adı kullanarak değişiklik yapabilirdi.

Daha sonra saldırganlar bizzat Nikita adına kötü niyetli bir taahhüt gönderdiler. Depolara erişimi düzenlemek için kullanılan gitolite hizmetinin günlükleri analiz edilerek, değişiklikleri gerçekten yapan katılımcının belirlenmesine çalışıldı. Tüm taahhütlerin muhasebeleştirilmesine rağmen, iki kötü niyetli değişiklik için günlükte hiçbir giriş yoktu. Gitolite aracılığıyla bağlantıyı atlayarak taahhütler doğrudan eklendiğinden altyapıda bir uzlaşma olduğu ortaya çıktı.

Git.php.net sunucusu derhal devre dışı bırakıldı ve birincil depo GitHub'a aktarıldı. Aceleyle, gitolite kullanarak SSH'ye ek olarak depoya erişmek için HTTPS yoluyla taahhüt göndermenize izin veren başka bir girişin olduğu unutuldu. Bu durumda, Git ile etkileşim kurmak için git-http-backend kullanıldı ve kimlik doğrulama, master.php.net sunucusundaki DBMS'de barındırılan veritabanına erişerek kimlik bilgilerini doğrulayan Apache2 HTTP sunucusu kullanılarak gerçekleştirildi. Oturum açmaya yalnızca anahtarlarla değil aynı zamanda normal bir şifreyle de izin verildi. Http sunucusu günlüklerinin analizi, kötü amaçlı değişikliklerin HTTPS aracılığıyla eklendiğini doğruladı.

Kayıtlar incelendiğinde, saldırganların ilk seferde bağlanmadıkları, başlangıçta hesap adını bulmaya çalıştıkları, ancak tanımladıktan sonra ilk denemede giriş yaptıkları, yani; Rasmus ve Nikita'nın şifrelerini önceden biliyorlardı ancak giriş bilgilerini bilmiyorlardı. Saldırganlar DBMS'ye erişim sağlayabildilerse, orada belirtilen doğru oturum açma bilgilerini neden hemen kullanmadıkları açık değildir. Bu tutarsızlık henüz güvenilir bir açıklama alamadı. Master.php.net'in hacklenmesi en olası senaryo olarak değerlendiriliyor, çünkü bu sunucu çok eski bir kod ve uzun süredir güncellenmeyen ve yamalanmamış güvenlik açıklarına sahip olan eski bir işletim sistemi kullanıyordu.

Gerçekleştirilen eylemler arasında master.php.net sunucu ortamının yeniden kurulması ve komut dosyalarının PHP 8'in yeni sürümüne aktarılması yer alıyor. DBMS ile çalışmaya yönelik kod, SQL kodunun değiştirilmesini zorlaştıran parametreli sorguları kullanacak şekilde değiştirildi. Bcrypt algoritması, parola karmalarını veritabanında depolamak için kullanılır (daha önce, parolalar güvenilmez bir MD5 karma kullanılarak saklanıyordu). Mevcut şifreler sıfırlanır ve şifre kurtarma formu aracılığıyla yeni bir şifre belirlemeniz istenir. Git.php.net ve svn.php.net depolarına HTTPS aracılığıyla erişim MD5 karmalarına bağlı olduğundan, git.php.net ve svn.php.net'in salt okunur modda bırakılmasına ve ayrıca tümünün taşınmasına karar verildi. geri kalanlar ise ana PHP deposuna benzer şekilde GitHub'daki PECL uzantı depolarıdır.

Kaynak: opennet.ru

Yorum ekle