プロジェクト

全般

プロフィール

Code Review #965

完了

Mass assignment security vulnerability

Haru Iida さんが約12年前に追加. 約12年前に更新.

ステータス:
終了(Closed)
優先度:
高め(High)
担当者:
対象バージョン:
-
開始日:
2012/03/13
期日:
進捗率:

70%

予定工数:

説明

私の元のコードが悪いのですが、Mass assignment脆弱性があります。

@issue_template.attributes = params[:issue_template]

で値を設定すると、HTTPリクエストのパラメータにproject_idやauthor_idを勝手に追加して意図しないフィールドの値を書き換えられてしまいます。

修正方法としては、モデル側でRedmine::SafeAttributesをインクルードして書き換えてもよいフィールドを定義し、コントローラ側でattributes = の代わりにsafe_attributes =で値を設定すればよいと思います。以下の修正を参考にして下さい。

http://www.redmine.org/projects/redmine/repository/revisions/9140

Akiko Takano さんが約12年前に更新

  • ステータス新規(New) から 担当(Assigned) に変更
  • 優先度通常(Normal) から 高め(High) に変更

ありがとうございます。
なるほど、全部書き換えできてしまうんですね。#なによりもお恥ずかしい...。

そして、ポイントも大変助かりました、ありがとうございます!

パラメータinjection(?)に対してもテストコードを書いたりするのがやはり定石なんでしょうか。

Akiko Takano さんが約12年前に更新

  • ステータス担当(Assigned) から 解決(Resolved) に変更
  • 進捗率0 から 70 に変更

対応前の動作確認で、確かに値の変更ができてしまいましたので、commite: 05b4de5ba1b で対応してみました。
safe_attributeに変更しただけですが...。

issue_template_settingsも同様の修正をしています。
一応テストコードで、ProjectIDとAuthorIDをパラメータで渡しても上書きされないことは確認してみました。

Akiko Takano さんが約12年前に更新

  • ステータス解決(Resolved) から 終了(Closed) に変更

Closed.

他の形式にエクスポート: Atom PDF