[Laravel] 5.6.30がリリースされました
laravel/frameworkのバージョン5.6.29がリリースされました。このリリースはセキュリティーに関する内容で、すべてのユーザーへ即時アップグレードするよう推奨されています。
要約すると、.env
内のAPP_KEY
を第三者が知っている場合に、この対策を行う必要があります。
アップデートの内容について
この脆弱性は、アプリケーションの暗号化キー(APP_KEY
環境変数)に悪意のあるユーザーがアクセスした場合にのみ悪用される可能性があります。
通常、アプリケーションのユーザーがこの値にアクセスすることはできません。
ただし、暗号化キーにアクセスした第三者は、キーを使用してアプリケーションを攻撃することができます。
暗号化キーが悪意のあるユーザーの手に入ると思われる理由がある場合は、そのキーを新しい値に変更する必要があります。
Cookie Serialization
Laravel 5.6.30は、クッキー値のシリアル化/シリアル化解除をすべて無効にします。
すべてのLaravel Cookieは暗号化されて署名されているため、通常、クライアントの改ざんから安全とみなされます。
しかし、アプリケーションの暗号鍵が悪意のある人の手に入ると、その当事者は暗号鍵を使用してクッキー値を作成し、脆弱性を悪用してアプリケーション内の任意のクラスメソッドを呼び出すなどのPHPオブジェクトの直列化/直列化解除を継承することができます。
すべてのCookie値でシリアル化を無効にすると、アプリケーションのすべてのセッションが無効になり、ユーザーはアプリケーションに再度ログインする必要があります。
さらに、アプリケーションが設定している他の暗号化されたCookieには無効な値が含まれます。
このため、アプリケーションに追加のロジックを追加して、カスタムCookie値が予期した期待値リストと一致することを検証することができます。さもなければ、あなたはそれらを捨てるべきです。
Configuring Cookie Serialization
この脆弱性はアプリケーションの暗号化キーにアクセスすることなく悪用することはできません。
暗号化されたCookieのシリアル化を再び有効にして、アプリケーションをこれらの変更と互換性を持たせる方法を提供しました。
Cookieのシリアル化を有効または無効にするには、App\Http\Middleware\EncryptCookies
ミドルウェアのserialize
プロパティを変更することができます。
/**
* Indicates if cookies should be serialized.
*
* @var bool
*/
protected static $serialize = true;
尚、すでに第三者がAPP_KEY
を知っている場合は、serialize
プロパティを変更する前にAPP_KEY
の再設定が必要となります。
Upgrade Guide - Laravel - The PHP Framework For Web Artisans