CINXE.COM
Ruby on Rails — Security
<!doctype html> <html lang="en"> <head> <title>Ruby on Rails — Security</title> <meta charset="utf-8" /> <meta content="ie=edge" http-equiv="x-ua-compatible" /> <meta name="handheldfriendly" content="true" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="A web-app framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern." /> <meta property="og:site_name" content="Ruby on Rails" /> <meta property="og:title" content="Security" /> <meta property="og:description" content="A web-app framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern." /> <meta property="og:image" content="https://rubyonrails.org/assets/images/opengraph.png" /> <meta property="og:url" content="https://rubyonrails.org/security" /> <meta property="og:type" content="website" /> <meta name="twitter:title" content="Security" /> <meta name="twitter:description" content="A web-app framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern." /> <meta name="twitter:image" content="https://rubyonrails.org/assets/images/opengraph.png" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:creator" content="@rails" /> <meta name="twitter:image:alt" content="Ruby on Rails" /> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebPage", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://rubyonrails.org/security" }, "name": "Ruby on Rails", "headline": "Security", "description": "A web-app framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.", "url": "https://rubyonrails.org/security", "image": "https://rubyonrails.org/assets/images/opengraph.png" } </script> <script defer data-domain="rubyonrails.org" src="https://plausible.io/js/script.js"></script> <link rel="icon" href="/assets/images/favicon.png" /> <link rel="stylesheet" href="/assets/css/style.css" /> <link rel="alternate" type="application/rss+xml" href="/feed.xml" title="The official Ruby on Rails blog"> </head> <body> <nav class="nav"> <a class="nav__logo" href="/" aria-label="Ruby on Rails"></a> </nav> <div class="layout"> <div class="heading common-padding--bottom common-padding--top-small"> <div class="container"> <div class="heading__body"> <div class="heading__headline common-headline"> <h1>Security policy.</h1> <h4>Rails takes web security <strong>very seriously.</strong></h4> </div> <div class="heading__content heading__content--has-headline common-content common-content--size-large"> <p>This means including features to protect app makers from common issues like CSRF, Script Injection, SQL Injection, and the like. But it also means a clear policy on how to report vulnerabilities and receive updates when patches are released.</p> </div> </div> </div> </div> <div class="text common-padding--bottom"> <div class="container"> <div class="text__body"> <div class="text__content common-content"> <h3>Supported Versions</h3> <p>Please see the <a href="https://guides.rubyonrails.org/maintenance_policy.html#security-issues">Maintenance policy</a> for supported versions.</p> <hr class="divider" /> <h3>Reporting a Vulnerability</h3> <p>All security bugs in Rails should be reported through our <a href="https://hackerone.com/rails">bounty program page at HackerOne</a>. This will deliver a message to a subset of the core team who handle security issues. Your report will be acknowledged within 24 hours, and you鈥檒l receive a more detailed response to your email within 48 hours indicating the next steps in handling your report.</p> <p>After the initial reply to your report the security team will endeavor to keep you informed of the progress being made towards a fix and full announcement. These updates will be sent at least every five days, in reality this is more likely to be every 24-48 hours.</p> <p>If you have not received a reply to your email within 48 hours, or have not heard from the security team for the past five days there are a few steps you can take:</p> <ul> <li>Send an email to the security reports list <a href="mailto:security@rubyonrails.org">security@rubyonrails.org</a>.</li> <li>Contact the current security coordinator <a href="mailto:rafaelmfranca@gmail.com">Rafael Fran莽a</a> directly.</li> <li>Contact the backup contact <a href="mailto:jeremy@basecamp.com">Jeremy Daer</a> directly.</li> <li>Email the <a href="https://discuss.rubyonrails.org/c/rubyonrails-core">Rails core list</a> or ask in <a href="https://discord.gg/d8N68BCw49">the Rails Discord server</a>.</li> </ul> <p>Please note, the Rails core list and Rails Discord server are public areas. When escalating to that address please do not discuss your issue, simply say that you鈥檙e trying to get a hold of someone from the security team.</p> <hr class="divider" /> <h3>Disclosure Process</h3> <ol> <li>Security report received and is assigned a primary handler. This person will coordinate the fix and release process. Problem is confirmed and a list of all affected versions is determined. Code is audited to find any potential similar problems.</li> <li>Fixes are prepared for all releases which are still supported. These fixes are not committed to the public repository but rather held locally pending the announcement.</li> <li>On the embargo date, the Rails Security mailing list is sent a copy of the announcement. The changes are pushed to the public repository and new gems released to <a href="https://rubygems.org/">RubyGems</a>. An announcement of the releases and a link to the advisory will be published on <a href="https://rubyonrails.org/blog/">the Rails weblog</a>.</li> </ol> <p>This process can take some time, especially when coordination is required with maintainers of other projects. Every effort will be made to handle the bug in as timely a manner as possible, however it鈥檚 important that we follow the release process above to ensure that the disclosure is handled in a consistent manner.</p> <hr class="divider" /> <h3>Receiving Disclosures</h3> <p>The best way to receive all the security announcements is to subscribe to the <a href="https://discuss.rubyonrails.org/c/security-announcements/9">Rails Security Announcements section of the forum</a>. This section is very low traffic, and it receives the public notifications the moment the embargo is lifted.</p> <p>No one outside the security team or the initial reporter will be notified prior to the lifting of the embargo. We regret that we cannot make exceptions to this policy for high traffic or important sites, as any disclosure beyond the minimum required to coordinate a fix could cause an early leak of the vulnerability.</p> <p>If you have any suggestions to improve this policy, please send an email to <a href="mailto:security@rubyonrails.org">security@rubyonrails.org</a>.</p> </div> </div> </div> </div> </div> <footer class="footer common-background--grey common-padding--bottom common-padding--top common-shape--top-white-up-left"> <div class="footer__logo"><a href="/" aria-label="Ruby on Rails"></a></div> </footer> </body> </html>