Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 27 жовтня 2026

Livewire 4.4.8 закриває обхід #[Authorize], а NativePHP Mobile - сім вразливостей

Livewire 4.4.8, що вийшов 21 жовтня, закриває вразливість GHSA-mhf7-xp6r-6qrc: атрибут #[Authorize] можна було обійти, і користувач міг виконати захищену дію над записом, на який не має прав. Оцінка CVSS - 6.5, серйозність середня. Того ж тижня NativePHP опублікувала свої перші попередження безпеки - одразу сім для NativePHP for Mobile. Обидва випадки не критичні, але в обох є що зробити вже сьогодні.

Що не так з #[Authorize] у Livewire

Атрибут #[Authorize] з'явився в Livewire 4.3 і швидко став зручною заміною ручному $this->authorize(): політику вказуєш над методом, а не першим рядком у ньому. Саме ця частина й виявилася вразливою. Попередження описує три проблеми:

  • Переставлені ключі параметрів дії. #[Authorize] знаходив модель-параметр за ключем масиву, а сама дія отримувала параметри позиційно. Запит, що передає параметри об'єктом із переставленими цілими ключами (на кшталт {"1": 2, "0": 1}), проходив перевірку зі «своїм» записом, а дія отримувала інший.
  • Те саме для слухачів подій. Методи з #[On] і #[Authorize], що приймають модель, були вразливі так само - через виклик __dispatch.
  • Методи з #[Json] виконувалися до авторизації. Відповідь приходила з кодом 403, але побічні ефекти, як-от записи в базу даних, уже відбулися.

Типовий вразливий метод виглядає цілком безневинно:

use Livewire\Attributes\Authorize;

#[Authorize('delete', 'comment')]
public function deleteComment(Comment $comment)
{
    $comment->delete();
}

До 4.4.8 у такому методі користувач міг видалити чужий коментар.

Хто вразливий

  • Livewire від 4.3.0 до 4.4.7 включно.
  • Лише застосунки, що використовують #[Authorize]: на методах із параметрами-моделями (перші дві проблеми) або на методах з #[Json] (третя).
  • Livewire 3.x не зачеплено.
  • Авторизацію всередині методу через $this->authorize(...) не зачеплено.

Вразливість знайшов і повідомив Yousef Aman.

Що робити

Оновіться до 4.4.8:

composer update livewire/livewire

Після оновлення параметри виклику дії чи події мають бути списком або мати рядкові ключі - інакше запит відхиляється. Методи з #[Json] тепер авторизуються до виконання.

Якщо оновитися прямо зараз не можна, перенесіть перевірку всередину методу:

public function deleteComment(Comment $comment)
{
    $this->authorize('delete', $comment);

    $comment->delete();
}

Так перевіряється саме той запис, з яким працюватиме дія. Коли оновитеся, можна повернути атрибут.

NativePHP for Mobile: сім попереджень

NativePHP опублікувала свої перші попередження безпеки - сім для NativePHP for Mobile (огляд на Laravel News). Виправлення - в nativephp/mobile 4.6.1 і 3.3.11 та в плагіні nativephp/mobile-file 1.0.3.

Більшість проблем походять із внутрішніх маршрутів /_native/api/*, через які web view спілкується з нативною частиною: на них не було жодного middleware, а частина функцій мосту приймала вхідні дані без перевірок. Для більшості атак зловмисникові вже потрібен JavaScript, що виконується у web view застосунку: XSS або скомпрометований сторонній скрипт.

Попередження Серйозність Суть Виправлено в
GHSA-9884-fw9c-mq85 High, 8.1 ін'єкція коду через ідентифікатор асинхронного завдання (4.5.0+) 4.6.1
GHSA-83jv-8h7x-287p High, 7.7 /_native/api/events створював об'єкт будь-якого класу з запиту 4.6.1, 3.3.11
GHSA-3w4w-cchh-qvrw High, 7.7 File.Move і File.Copy приймали будь-який шлях у пісочниці 4.6.1
GHSA-7927-vv5p-fv4f High, 7.7 те саме в плагіні mobile-file 1.0.3
GHSA-9g37-88p8-75j2 High, 7.4 unserialize() даних асинхронних завдань без автентифікації (4.5.0+) 4.6.1
GHSA-76px-r497-93p9 Medium, 5.9 обхід шляху в /_assets: читання файлів поза public/, зокрема бази SQLite 4.6.1, 3.3.11
GHSA-27jx-7m9x-fx5c Medium, 4.1 Android-збірки писали сесійну cookie і XSRF-токен у logcat 4.6.1, 3.3.11

Дві зміни можуть вплинути на поведінку застосунку. Події, які відправляють через /_native/api/events, тепер мають реалізовувати інтерфейс Native\Mobile\Events\Contracts\DispatchableFromNative - це стосується авторів плагінів із власними подіями. А дані асинхронних завдань тепер шифруються ключем застосунку, тож без APP_KEY асинхронні завдання не запускаються.

Мобільний застосунок треба перезібрати

Тут головна відмінність від звичайного вебзастосунку: composer update нікого не захищає. Частина виправлень - у нативному коді Swift, Kotlin і C, який генерується в проєкт застосунку, і до користувачів він дійде лише з новою збіркою. Порядок дій:

  1. Оновіть nativephp/mobile до 4.6.1 (на гілці 3.x - до 3.3.11).
  2. На 4.x видаліть плагін nativephp/mobile-file: ядро має власні, вже обмежені File.Move і File.Copy, а плагін може їх перекрити й повернути вразливість. На 3.x оновіть плагін до 1.0.3.
  3. Перегенеруйте нативний проєкт командою php artisan native:install --force і перезберіть застосунок.
  4. Відправте нову збірку в App Store і Google Play. Доки користувачі її не встановлять, вони вразливі.

Версії 1.x і 2.x більше не підтримуються і виправлень не отримають - команда радить переходити на 4.x.

Є й друга причина перезібрати застосунок: NativePHP везе всередині власну копію PHP. Після критичних релізів PHP 21 жовтня команда перезібрала всі бінарники PHP, які розповсюджує, на 8.5.12, 8.4.27 і 8.3.36, але у ваш застосунок вони потраплять тим самим шляхом: оновлення, native:install --force, нова збірка, реліз.

Наостанок

Не варто перебільшувати масштаб: Livewire - це середня серйозність і лише застосунки з #[Authorize] на конкретних методах, NativePHP - здебільшого атаки, яким уже потрібен чужий JavaScript у web view. Але обидва виправлення дешеві.

Для Livewire пошукайте в проєкті #[Authorize] - якщо знайшлося, оновлення до 4.4.8 стоїть першим у черзі. Для NativePHP закладіть у план не лише оновлення пакета, а й цикл перевірки в магазинах застосунків: від composer update до захищених користувачів тут минають дні, а не хвилини. І заразом перевірте, які сторонні скрипти завантажує ваш web view - більшість цих атак починається саме звідти.

1

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Новини 27 жовтня 2026

Filament v5.11.0: поля й віджети на React, Vue і Svelte та жорсткіший захист Livewire

Filament v5.11.0 дозволяє писати власні поля форм, компоненти схем і віджети на React, Vue, Svelte або чистому JavaScript. Паралельно v5.11.0 і v4.16.0 закривають для клієнта внутрішні Livewire-методи та стан і додають опційні ліміти для репітерів і пагінації таблиць.

2
Новини 27 жовтня 2026

URL AI Transformer від Spatie: сторінки за списком URL через Laravel AI SDK

Пакет spatie/laravel-url-ai-transformer завантажує сторінки за списком URL, віддає їхній текст AI-моделі з вашими інструкціями і зберігає відповідь у базі. З версії 2 кожен трансформер - агент Laravel AI SDK, а 2.1.0 додала підтримку laravel/ai 1.x. Розбираємо, як він працює і скільки це коштує.

Вакансії за темою

Intetics
6 днів тому

1188 Senior Full-Stack PHP Developer (Laravel + React/Vue)

Senior full-stack розробник PHP для створення та підтримки масштабованих веб-застосунків на Laravel (бекенд) і React або Vue (фронтенд). Завдання включають проєктування REST API, роботу з чергами, Redis, оптимізацію запитів, написання автоматизованих тестів та участь у архітектурних рішеннях. Вимоги: 5+ років досвіду з PHP 8.x, 3+ роки з Laravel і React/Vue, сильний TypeScript, SQL, досвід з CI/CD та англійська на добрий рівень.

Intetics
7 днів тому

Senior Full-Stack PHP Developer (Laravel + React/Vue)

Senior Full-Stack PHP розробник створює й підтримує масштабовані веб-застосунки: бекенд на Laravel та фронтенд на React або Vue. Відповідає за архітектурні рішення (дизайн сервісів, моделювання даних, кешування, черги), проєктує REST API та інтеграції, рефакторить legacy-код і оптимізує запити. Вимоги: 5+ років досвіду з сучасним PHP 8.x, 3+ роки з Laravel, 3+ роки з React або Vue, сильний TypeScript, досвід з Redis і чергами, автотести та CI/CD.

Kredyt Kapital
30 днів тому

Middle Full-Stack Developer (PHP / Laravel / Vue / React)

Middle Full-Stack Developer для розробки внутрішніх IT-продуктів. Основний стек: PHP 8.3+, Laravel, PostgreSQL, REST API, Vue.js/React. Розробник займатиметься backend (бізнес-логіка, Eloquent, Jobs/Queues) і frontend (компоненти, інтерфейси), інтеграціями та оптимізацією. Вимоги: 2-3+ років комерційного досвіду з PHP, 2+ років практики з Laravel, впевнене знання PostgreSQL, Git, JavaScript ES6+.

Пакети за темою

Kalimera

welldigit/kalimera

Interactive installer that scaffolds Laravel applications the Well Digit way.

v1.0.0 15

Filament

filament/filament

Найпопулярніша адмін-панель для Laravel: ресурси, таблиці, форми та дашборди описуються PHP-класами поверх Livewire, Alpine і Tailwind. Замінює рутину CRUD-інтерфейсів декларативною конфігурацією.

31,852 v5.7.6 10