TGViewer
WebDev+ | Веб-разработка WebDev+ | Веб-разработка @webdev_plus · 7.92K subscribers
Post #1599 591
Атака через десериализацию phar:// фактически умерла ещё в PHP 8.0 — и это почти никто не заметил.

До этого её могла спровоцировать практически любая функция, принимающая путь к файлу: file_exists(), filesize(), getimagesize() и другие.

Stream wrapper разбирал манифест архива и десериализовывал его metadata — даже если в вашем коде вообще не было вызова unserialize().

При этом Phar определяется не по расширению файла, а по содержимому: движок ищет токен __HALT_COMPILER();. Поэтому файл можно было загрузить даже как avatar.jpg, и он всё равно мог быть распознан и обработан как Phar.
В PHP 8.0 metadata сделали ленивой: теперь она десериализуется только при явном вызове Phar::getMetadata().

Изменение было предложено в RFC Тайсоном Андре.

@WebDev_Plus
More from @webdev_plus
  1. Oct 4, 2026Годный генератор CSS-паттернов для ваших проектов Тут можно быстро собирать крутые CSS-пат…
  2. Oct 4, 2026Таблица Менделеева для HTML Бесплатная интерактивная шпаргалка: теги по категориям, поиск,…
  3. Oct 3, 2026Как посмотреть SQL-запрос в Laravel Eloquent? Используйте метод toSql(), чтобы увидеть SQL…
  4. Oct 3, 2026Совет по Laravel: доступ к вложенным массивам через точечную нотацию Используйте dot notat…
  5. Oct 2, 2026Laravel: несколько счётчиков одним запросом Методы incrementEach() и decrementEach() позво…
  6. Oct 2, 2026Совет по Laravel: обновляете записи в цикле с lazy()? lazy() использует пагинацию со смеще…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →