Skip to content

新チャレンジ: Insecure Deserialization via Marshal.load (CWE-502) #7

Description

@exe-dev-github-integration

概要

タスクのフィルタ設定を Cookie に Marshal.dump で保存し Marshal.load で復元する脆弱コードを注入。攻撃者が細工した Cookie で RCE が可能。

詳細

項目
slug insecure_deserialization
カテゴリ Deserialization
難易度 Hard
CWE CWE-502

安全版

フィルタ設定は session ハッシュまたは JSON でシリアライズ。

脆弱版(注入する実装)

def index
  if cookies[:task_filter]
    filter = Marshal.load(Base64.decode64(cookies[:task_filter]))
    # filter を適用...
  end
  # ...
end

Marshal.load は任意のオブジェクトを復元できるため、RCE ガジェットチェーンが構築可能。

テスト方針

  • SAFE: 不正な Cookie が無視される(JSON パース失敗で無視)
  • VULN: 細工した Marshal ペイロードが Marshal.load に渡される(RCE の前段階を検証)

注入方式

Module#prependTasksController#index を上書き

参考

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions