W bibliotece , dostarczającej mechanizmy ochronne przed poprzez podstawienie plików w formacie „Phar”, (), które umożliwia ominięcie ochrony przed deserializacją kodu poprzez podstawienie znaków „..” w ścieżce. Na przykład, atakujący może użyć do ataku URL w rodzaju „phar://path/bad.phar/../good.phar”, a biblioteka przy weryfikacji wskaże podstawową nazwę „/path/good.phar”, chociaż w dalszym przetwarzaniu podobnej ścieżki będzie użyty plik „/path/bad.phar”.
Biblioteka została opracowana przez twórców systemu CMS TYPO3, ale jest również stosowana w projektach Drupal i Joomla, co sprawia, że są one również narażone na tę lukę. Problem został rozwiązany w wydaniach . Projekt Drupal naprawił problem w aktualizacjach 7.67, 8.6.16 i 8.7.1. W Joomla problem występuje od wersji 3.9.3 i został rozwiązany w wydaniu 3.9.6. Aby naprawić problem w TYPO3, należy zaktualizować bibliotekę PharStreamWapper.
Z praktycznego punktu widzenia luka w PharStreamWapper pozwala użytkownikowi Drupal Core, mającemu uprawnienia administratora motywów (‘Administer theme’), załadować złośliwy plik phar i uzyskać uruchomienie umieszczonego w nim kodu PHP pod postacią legitymnego archiwum phar. Przypomnijmy, że istota ataku „Phar deserialization” polega na tym, że podczas weryfikacji załadowanych plików funkcja PHP file_exists() automatycznie wykonuje deserializację metadanych z plików Phar (PHP Archive) podczas przetwarzania ścieżek rozpoczynających się od „phar://”. Przekazanie pliku phar jest możliwe pod postacią obrazu, ponieważ funkcja file_exists() określa typ MIME na podstawie zawartości, a nie na podstawie rozszerzenia.
Źródło: opennet.ru
