Broken Object Property Level Authorization

Broken Object Property Level Authorization in Ruby on Rails [CVE-2009-3086]

[Updated Mar 2026] Updated CVE-2009-3086

Overview

CVE-2009-3086 in Ruby on Rails describes a cookie store digest verification weakness that leaks information about the complexity of signing the cookie, potentially allowing remote attackers to forge a signature after many attempts (CWE-200). In practice, this could enable an attacker to tamper with a session cookie and impersonate another user, effectively bypassing object-level access controls by manipulating the session data stored in the cookie. The leakage arises from the way the existing digest verification exposed internal characteristics, giving an attacker a timing or complexity signal that could be exploited to craft a valid digest. This is a serious cookie-based authentication risk that can translate into broken object property level authorization when a forged session grants access to restricted resources. The real-world impact is that an attacker could access or modify objects that the user should not be allowed to touch by presenting a corrupted or forged session cookie to the application.

Affected Versions

Rails 2.1.0-2.2.2, and Rails 2.3.x before 2.3.4

Code Fix Example

Ruby on Rails API Security Remediation
Vulnerable pattern:
# Rails 2.x vulnerable cookie_store usage
# config/initializers/session_store.rb
ActionController::Base.session_store = :cookie_store, { :key => '_myapp_session', :secret => 'a' * 64 }

Fixed:
# After patch or upgrade to Rails 2.3.4+ or newer
# config/initializers/session_store.rb
ActionController::Base.session_store = :cookie_store, { :key => '_myapp_session' }
# Additionally, rotate secrets (config.secret_token) and consider moving to server-side sessions for high-value data.

CVE References

Choose which optional cookies to allow. You can change this any time.