Moved to GitHub from Google Code on May 1, 2008 Was hosted at http://code.google.com/p/audit-mass-assignment/
audit_mass_assignment plugin for Ruby on Rails
The audit_mass_assignment Ruby on Rails plugin contains a rake task that checks the models in your project for the attr_accessible whitelist approach for protecting against "mass assignment" exploits. It does not check for use of attr_protected!
If a Rails model does not use attr_accessible, it fails this audit. The audit does not check which parameters are accessible or protected, only that at least one is marked as accessible.
Run the audit whenever you feel like it! Other audit plugins for Rails could be created to automatically check for bad patterns or insecure code. This one was easy to implement.
Installation
It looks like Rails 2.1 will support "script/plugin install" with Git repositories. Until then you can put this plugin in vendor/plugins with:
git clone git://github.com/ryanlowe/audit_mass_assignment.git
and delete the .git directory inside it before committing it to source control.
When Rails 2.1 supports Git you should be able to do:
script/plugin install git://github.com/ryanlowe/audit_mass_assignment.git
Usage
$ rake audit:mass_assignment
NOTES
If you want to protect ALL attributes in your model use:
attr_accessible nil
Why are "mass assignment" exploits a danger to Rails applications? See these links:
1. rorsecurity.info: Do not create records directly from form parameters
http://www.rorsecurity.info/2007/03/20/do-not-create-records-directly-from-form-parameters/
2. Railscasts: Hackers Love Mass Assignment
http://railscasts.com/episodes/26
3. Rails Manual: Typical mistakes in Rails applications: Creating records directly from form parameters
http://manuals.rubyonrails.com/read/chapter/47