WORK.SIGNALALL SIGNALS
/ WORK SIGNAL / SECURITYSIGNAL BRIEF

Rails Action PackのStrong Parameters回避、公式HIGH 7.5で修正

Ruby on RailsのAction Packで、Strong Parametersによる属性保護を特定のコード経路で迂回できる脆弱性が公表された。開発元はHIGH、CVSS 7.5と評価。アプリケーションがeach_keyの戻り値を一括代入へ渡す場合に限って問題が成立し、修正版8.0.5.2と8.1.4.1が案内されている。

Strong Parametersの保護が特定の戻り値で失われる

開発元の11月4日付勧告によると、ActionController::Parameters#each_keyをブロック付きで呼び出すと、保護されたParametersではなく内部のHashWithIndifferentAccessが返る場合がある。この戻り値をActive Modelのnew、assign_attributes、updateなどの一括代入に渡すと、許可していない属性まで設定され得る。認可フラグなどの改変につながる可能性があるため、開発元はHIGH、CVSS v3.0 7.5と評価した。

Railsを使うだけでは成立しない

成立条件は、アプリケーション側がブロック付きeach_keyの戻り値を一括代入へ渡すこと。Rails自身はこの呼び出しを行わないと開発元は説明している。過去のCVE-2020-8164でeachなどを修正した際にeach_keyが残っていたことが背景だが、今回のGHSAに新しいCVEは記載されていない。すべてのRailsアプリで無条件に悪用可能という意味ではない。

更新とアプリケーションコードの点検

開発元はactionpack 8.0.5.2および8.1.4.1を修正版として案内している。運用担当者はGemfile.lockで導入バージョンを確認し、更新するとともに、each_keyの戻り値を一括代入に使用するコードを点検したい。すぐ更新できない場合はeach_keyの戻り値を使用せず、許可済みのParametersを明示的に渡す回避策が示されている。実際の攻撃被害や悪用確認は今回の公式勧告には記載されていない。

TRANSMISSION / AFTER THE SIGNAL

読んだ、その先へ。

次の変化を追う。誰かの判断材料にする。

FOLLOW THE SIGNAL

この先の変化も、追うなら。

AI・仕事・経済の変化を、一次情報から。次の判断材料を、公式SNSでも。

WORK SIGNALの編集方針

SHARE THIS SIGNAL

誰かの判断材料に、なりそうなら。

BACK TO THE INDEX / FIND THE NEXT SIGNALALL SIGNALS