GitHub ‘repojacking’e yol açabilecek yarış durumunu düzeltti


GitHub, depo oluşturma ve kullanıcı yeniden adlandırma işlemlerinde, tehdit aktörlerinin repojacking saldırısı olarak bilinen saldırıyı gerçekleştirmesine olanak verebilecek bir yarış durumu güvenlik açığını düzeltti.

Checkmarx araştırmacıları tarafından keşfedilip açıklanan bu kusurdan yararlanılmış olsaydı, kod depolarının kontrolünü ele geçirmek ve kötü amaçlı kod dağıtmak için bunları ele geçirmek için kullanılabilirdi. Bunun kurbanı olanların itibarı üzerinde de kötü sonuçları olacaktı.

Checkmarx’tan Elad Rapoport, “Repojacking, bir saldırganın, yeniden adlandırılan kullanıcıları savunmasız hale getiren mantıksal bir kusurdan yararlanarak GitHub deposunun kontrolünü ele geçirdiği bir tekniktir” diye yazdı.

“Saldırgan GitHub’daki meşru ve genellikle popüler bir ad alanını ele geçiriyor. Ad alanı, kullanıcı adı ile repo adının birleşimidir; örneğin: example-user/example-repo.”

GitHub’daki ad alanları, orijinal kullanıcı adı “kullanıcı yeniden adlandırma” özelliği kullanılarak değiştirildiğinde yeniden çalınmaya karşı savunmasız hale gelir. Bir GitHub kullanıcısı kendisini yeniden adlandırdığında GitHub, eski profil sayfası veya Pages siteleri için yönlendirmeler ayarlamaz ancak veri havuzları için yönlendirmeler oluşturur. İşlem sırasında bir açılır pencere aracılığıyla kullanıcılar bu durumdan haberdar edilir.

Ne yazık ki, bunu yaparken, eski kullanıcı adı da başkalarının talep edebileceği hale gelir; dolayısıyla kullanıcı başarıyla yeniden adlandırıldığında, kötü niyetli bir aktör eski kullanıcı adını talep edebilir, eşleşen repo adı altında bir repo açabilir ve ad alanını ele geçirebilir.

Bu süreçteki diğer kusurlar daha önce tanımlanıp düzeltildi ve GitHub’un mevcut koruma önlemleri vardı; özellikle kullanıcı adının alınamaması için popüler depoların (yeniden adlandırma sırasında 100’den fazla klonu bulunanlar) kullanımdan kaldırılması.

Ancak Rapoport, bir veri havuzunun oluşturulması ile bir kullanıcı adının yeniden adlandırılması arasındaki yarış durumundan yararlanarak ve hemen hemen aynı anda her ikisini de yaparak (depo oluşturmak için bir API isteği ve kullanıcı adı için yeniden adlandırılmış bir istek müdahalesi kullanarak) bu düzeltmeleri atlayabildiğini buldu. kullanıcı adı değişikliği.

“Başarılı bir şekilde yararlanma, ‘Packagist’, ‘Go’, ‘Swift’ ve daha fazlası dahil olmak üzere çeşitli paket yöneticilerindeki popüler kod paketlerinin ele geçirilmesini sağlıyor” dedi. “Bu paket yöneticilerinde, yeniden adlandırılan kullanıcı adlarını kullanan 4.000’den fazla paket belirledik ve yeni bir bypass bulunması durumunda bu tekniğe karşı savunmasız kalma riskiyle karşı karşıyayız. Risk altındaki bu paketlerden yüzlercesi GitHub’da 1.000’den fazla yıldız topladı.

“Ayrıca, bu geçişten yararlanmak, GitHub ad alanı belirtilerek de tüketilen popüler GitHub eylemlerinin devralınmasına neden olabilir. Popüler bir GitHub eylemini zehirlemek, önemli sonuçlar doğurabilecek büyük tedarik zinciri saldırılarına yol açabilir.”

Bu yeniden kaçırma sorunu düzeltilmiş olsa da, bu son birkaç yılda (yalnızca 2022’de üç) bulunan dördüncü sorundur ve Rapoport, bunun popüler veri havuzu ad alanı kullanımdan kaldırma mekanizmasıyla ilişkili kalıcı risklerden bahsettiğini söyledi.

“Popüler depoları ve paketleri kontrol eden kullanıcılar da dahil olmak üzere birçok GitHub kullanıcısı, GitHub’un sunduğu ‘kullanıcıyı yeniden adlandırma’ özelliğini kullanmayı seçiyor” dedi. “Bu nedenle, ‘popüler veri havuzu ad alanının kullanımdan kaldırılmasını’ atlama girişimi, tedarik zinciri saldırganları için önemli hasarlara neden olma potansiyeline sahip çekici bir saldırı noktası olmaya devam ediyor.”

Düzeltmeye rağmen Checkmarx, kullanıcıların saldırı yüzeyini en aza indirmek için kullanımdan kaldırılan ad alanlarını kullanmaktan kaçınmalarını ve GitHub deposunu savunmasız bırakabilecek kod bağımlılıkları olmadığından emin olmalarını öneriyor. Bu konuda yardımcı olabilecek kendi açık kaynak aracı Chainjacking’i sunuyor.



Source link