Menu dostępności

Podatność w Azure App Service

Zespół badawczy Wiz wykrył niezabezpieczone domyślne ustawienia w usłudze Azure App Service, które ujawniają kod źródłowy aplikacji napisanych w PHP, Python, Ruby lub Node. Warunek jest taki, że aplikacje muszą być wdrożone przez „Local Git”. Luka została nazwana „NotLegit” i istnieje w Azure od września 2017 roku oraz prawdopodobnie została wiele razy wykorzystana w atakach.

Wiz zgłosił tę podatność do Microsoft 7 października 2021 r. i od tej pory Microsoft poczynił pewne kroki łagodzące. Małe grupy klientów nadal są potencjalnie narażone i powinny podjąć działania w celu ochrony swoich aplikacji. Opisano je w kilku alertach e-mail, które Microsoft wysłał w dniach 7-15 grudnia.

Przed wyjaśnieniem podatności zajmijmy się podstawowymi pojęciami.


Co to jest usługa Azure App Service?

Azure App Service (aka Azure Web Apps) to oparta na chmurze platforma do hostowania witryn i aplikacji internetowych. Usługa jest łatwa w obsłudze, a co za tym idzie bardzo popularna. Najpierw wybieramy obsługiwany język programowania i system operacyjny. Następnie wdrażamy kod źródłowy aplikacji lub artefakty na serwer zarządzany przez platformę Azure przy użyciu protokołu FTP, SSH lub pobierając kod źródłowy z usługi Git (takiej jak GitHub lub prywatne repozytoria Git). Po wdrożeniu aplikacja jest dostępna publicznie dla każdego w Internecie w domenie *.azurewebsites.net.


Co to jest „Local Git”?

Platforma Azure obsługuje wiele metod wdrażania kodu źródłowego i artefaktów w usłudze Azure App Service, z których jedna korzysta z lokalnej instancji Git. Za pomocą „Local Git” instalujemy lokalne repozytorium Git w kontenerze usługi Azure App Service, które umożliwia wypchnięcie kodu bezpośrednio na serwer.

źródło: blog.wiz.io

Podatność „NotLegit”

W ramach najlepszych praktyk, gdy wdrażamy repozytoria git na serwerach internetowych, zawsze ważne jest, aby upewnić się, że folder .git również nie zostanie przesłany. Czemu? Ponieważ folder .git zawiera kod źródłowy, e-maile programistów i inne wrażliwe dane. Jednak w przypadku użycia metody wdrażania „Local Git” do implementacji w usłudze Azure App Service repozytorium git zostało utworzone w publicznie dostępnym katalogu (/home/site/wwwroot), do którego każdy może uzyskać dostęp. To znane już wcześniej dziwactwo Microsoftu. Aby chronić te pliki, Microsoft dodał plik „web.config” do folderu .git w katalogu publicznym, który ograniczył dostęp publiczny. Jednak tylko serwer webowy IIS firmy Microsoft obsługuje pliki „web.config”, więc jeśli używamy C# lub ASP.NET, aplikacja jest wdrażana z usługami IIS i „papierowa” łatka Microsoftu działa.

Ale co się dzieje, gdy ktoś użyje PHP, Ruby, Python lub Node w swojej aplikacji? Te języki programowania są wdrażane z różnymi serwerami internetowymi (Apache, Nginx, Flask itp.), które nie obsługują plików „web.config”, pozostawiając aplikacje podatną. W zasadzie wszystko, co musi zrobić tutaj złośliwy aktor, to pobrać katalog „/.git” z docelowej aplikacji i pobrać jej kod źródłowy. Ciężko to więc nazwać podatnością. Bardziej błędem w konfiguracji dostępów.

Ciekawostka: plik web.config Microsoftu zawierał literówkę (tag konfiguracyjny nie został poprawnie zamknięty), przez co plik nie mógł zostać przeanalizowany przez IIS. Na szczęście błąd zgłoszony przez literówkę zablokował dostęp do całego katalogu… Można więc powiedzieć, że „web.config” mimo wszystko spełnił swoją rolę na serwerów IIS 🙂

źródło: blog.wiz.io

Później Microsoft odkrył, że użytkownicy, którzy korzystali z innych narzędzi do wdrażania usługi Git, mogą być również narażeni. Jeśli plik został utworzony lub zmodyfikowany w kontenerze usługi Azure App Service (przy użyciu protokołu FTP, Web Deploy lub SSH) przed wdrożeniem usługi Git, usługa wejdzie w stan „inplace deployment”. Ten stan wymusza inicjowanie przyszłego wdrażania usługi Git w publicznie dostępnym katalogu.


Kto powinien się przejmować?

Podatne są wszystkie aplikacje PHP, Node, Ruby i Python, które zostały wdrożone przy użyciu „Local Git” w czystej aplikacji domyślnej w usłudze Azure App Service od września 2017 r. Również podatne są wszystkie aplikacje PHP, Node, Ruby i Python, które zostały wdrożone w Azure App Service od września 2017 r. przy użyciu dowolnego źródła Git, po utworzeniu lub zmodyfikowaniu pliku w kontenerze aplikacji.

Jedynymi aplikacjami, na które ta luka w zabezpieczeniach nie wpłynęła, są aplikacje oparte na usługach IIS.


Podsumowanie

Po ujawnieniu luki NotLegit, Microsoft zrozumiał wagę problemu i podjął wszelkie niezbędne kroki w celu zbadania go i złagodzenia. MSRC i zespół usługi Azure App Service przeprowadzili dogłębne dochodzenie i znaleźli przyczynę problemu, zastosowali poprawkę, która obejmuje najbardziej dotkniętych klientów oraz przesłali powiadomienia pocztą e-mail, aby ostrzec wszystkich klientów, którzy nadal są narażeni i oczekują na działanie od strony użytkownika.

Microsoft przyznał również odkrywcom luki nagrodę w wysokości 7500 USD, które jak twierdzą planują przekazać na cele charytatywne.

Popularne

Atak bez hasła na Microsoft 365. Przestępcy przejmowali sesje i obchodzili MFA

Atak bez hasła na Microsoft 365. Przestępcy przejmowali sesje i obchodzili MFA

Kampania wykorzystująca kradzież i powtórne użycie tokenów uwierzytelniających doprowadziła do przejęcia 97 kont w 79 organizacjach. Cyberprzestępcy nie musieli łamać haseł ani ponownie przechodzić uwierzytelni...
Badacz uzyskał uprawnienia roota w najnowszym Samsung Smart TV i odkrył zaskakujące fakty

Badacz uzyskał uprawnienia roota w najnowszym Samsung Smart TV i odkrył zaskakujące fakty

Współczesne Smart TV korzystają z systemów operacyjnych, łączą się z Internetem, analizują sposób korzystania z aplikacji i mogą wspierać personalizację reklam. Pojawia się jednak pytanie, gdzie kończy...
Jak hakerzy wykorzystują PHP2Shell do uzyskania uprawnień administratora (root) na Firewallach

Jak hakerzy wykorzystują PHP2Shell do uzyskania uprawnień administratora (root) na Firewallach

Nie tak dawno obszernie analizowaliśmy dwie krytyczne luki dotyczące silnika PHP wykorzystywanego przez miliony stron internetowych. W artykule dostępnym tutaj opisywaliśmy, jak mogą być eksploatowane te po...
Wykradanie haseł do Wifi z urządzeń sieciowych (na przykładzie modemu od UPC)

Wykradanie haseł do Wifi z urządzeń sieciowych (na przykładzie modemu od UPC)

Posiadasz urządzenie od UPC lub inne, które łączy się po Wifi? Chciałbyś poznać jego hasło do sieci? W tym artykule opiszemy sposób, dzięki któremu będziemy mogli poznać aktualne hasło do WiFi przech...
Jedna luka może pozwolić na przejęcie kontroli nad całą domeną. Microsoft łata krytyczną podatność Active Directory

Jedna luka może pozwolić na przejęcie kontroli nad całą domeną. Microsoft łata krytyczną podatność Active Directory

Active Directory od lat stanowi fundament zarządzania tożsamością i dostępem w środowiskach korporacyjnych. To właśnie za jego pośrednictwem organizacje kontrolują konta użytkowników, uprawnienia, dostęp do s...