
brakeman v8.0.6
Ruby on Rails अनुप्रयोगों के लिए एक स्थैतिक विश्लेषण सुरक्षा भेद्यता स्कैनर
Brakeman
Brakeman एक स्टैटिक विश्लेषण उपकरण है जो Ruby on Rails अनुप्रयोगों में सुरक्षा कमजोरियों की जाँच करता है।
स्थापना
RubyGems का उपयोग करके:
gem install brakeman
Bundler का उपयोग करके:
group :development do
gem 'brakeman', require: false
end
Docker का उपयोग करके:
docker pull presidentbeef/brakeman
स्रोत से निर्माण के लिए Docker का उपयोग करके:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
उपयोग
स्थानीय रूप से चलाना
Rails अनुप्रयोग के मूल निर्देशिका से:
brakeman
Rails मूल के बाहर:
brakeman /path/to/rails/application
Docker के साथ चलाना
Rails अनुप्रयोग के मूल निर्देशिका से:
docker run -v "$(pwd)":/code presidentbeef/brakeman
थोड़ा अच्छे रंग के साथ:
docker run -v "$(pwd)":/code presidentbeef/brakeman --color
HTML रिपोर्ट के लिए:
docker run -v "$(pwd)":/code presidentbeef/brakeman -o brakeman_results.html
Rails मूल के बाहर (ध्यान दें कि आउटपुट फ़ाइल path/to/rails/application के सापेक्ष है):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
संगतता
Brakeman को Rails के 2.3.x से 8.x तक किसी भी संस्करण के साथ काम करना चाहिए।
Brakeman Ruby 2.0 सिंटैक्स और नए के साथ लिखे गए कोड का विश्लेषण कर सकता है, लेकिन चलाने के लिए कम से कम Ruby 3.2.0 की आवश्यकता है।
मूल विकल्प
विकल्पों की पूरी सूची के लिए, brakeman --help का उपयोग करें या OPTIONS.md फ़ाइल देखें।
परिणामों के लिए आउटपुट फ़ाइल निर्दिष्ट करने के लिए:
brakeman -o output_file
आउटपुट प्रारूप फ़ाइल एक्सटेंशन या -f विकल्प का उपयोग करके निर्धारित किया जाता है। वर्तमान विकल्प हैं: text, html, tabs, json, junit, markdown, csv, codeclimate, github, sarif, और sonar।
एकाधिक आउटपुट फ़ाइलें निर्दिष्ट की जा सकती हैं:
brakeman -o output.html -o output.json
एक फ़ाइल और कंसोल दोनों में रंग के साथ आउटपुट करने के लिए:
brakeman --color -o /dev/stdout -o output.json
सूचनात्मक चेतावनियों को दबाने और केवल रिपोर्ट आउटपुट करने के लिए:
brakeman -q
ध्यान दें कि रिपोर्ट को छोड़कर सभी Brakeman आउटपुट stderr पर भेजे जाते हैं, जिससे stdout को एक फ़ाइल में रीडायरेक्ट करना और केवल रिपोर्ट प्राप्त करना सरल हो जाता है।
सभी प्रकार की डिबगिंग जानकारी देखने के लिए:
brakeman -d
यदि वांछित हो, तो विशिष्ट जाँचों को छोड़ा जा सकता है। नाम का सही केस होना आवश्यक है। उदाहरण के लिए, डिफ़ॉल्ट रूट्स (DefaultRoutes) की खोज को छोड़ने के लिए:
brakeman -x DefaultRoutes
एकाधिक जाँचों को अल्पविराम से अलग किया जाना चाहिए:
brakeman -x DefaultRoutes,Redirect
इसके विपरीत करने और केवल एक निश्चित सेट परीक्षण चलाने के लिए:
brakeman -t SQL,ValidationRegex
यदि Brakeman थोड़ा धीमा चल रहा है, तो प्रयास करें
brakeman --faster
यह कुछ सुविधाओं को अक्षम कर देगा, लेकिन संभवतः बहुत तेज़ होगा (वर्तमान में यह --skip-libs --no-branching के समान है)। चेतावनी: इससे Brakeman कुछ कमजोरियों को याद कर सकता है।
डिफ़ॉल्ट रूप से, Brakeman एक गैर-शून्य निकास कोड लौटाएगा यदि कोई सुरक्षा चेतावनी मिलती है या स्कैनिंग त्रुटियाँ होती हैं। इसे अक्षम करने के लिए:
brakeman --no-exit-on-warn --no-exit-on-error
उन फ़ाइलों या निर्देशिकाओं को छोड़ने के लिए जिन्हें Brakeman पार्स करने में समस्या हो सकती है, उपयोग करें:
brakeman --skip-files file1,/path1/,path2/
एक स्कैन के परिणामों की पिछले स्कैन से तुलना करने के लिए, JSON आउटपुट विकल्प का उपयोग करें और फिर:
brakeman --compare old_report.json
यह JSON में दो सूचियों के साथ आउटपुट देगा: एक निश्चित चेतावनियों की और एक नई चेतावनियों की।
Brakeman यदि ऐसा करने के लिए कॉन्फ़िगर किया गया है तो चेतावनियों को अनदेखा कर देगा। डिफ़ॉल्ट रूप से, यह config/brakeman.ignore में एक कॉन्फ़िगरेशन फ़ाइल खोजता है।
इस फ़ाइल को बनाने और प्रबंधित करने के लिए, उपयोग करें:
brakeman -I
यदि आप निकास कोड को प्रभावित किए बिना अनदेखी की गई चेतावनियों को अस्थायी रूप से देखना चाहते हैं, तो उपयोग करें:
brakeman --show-ignored
चेतावनी की जानकारी
इस उपकरण द्वारा रिपोर्ट की गई चेतावनियों के बारे में अधिक जानकारी के लिए warning_types देखें।
चेतावनी संदर्भ
HTML आउटपुट प्रारूप मूल अनुप्रयोग स्रोत से एक अंश प्रदान करता है जहाँ एक चेतावनी ट्रिगर हुई थी। कमजोरियों की खोज के दौरान किए गए प्रसंस्करण के कारण, स्रोत रिपोर्ट की गई चेतावनी से मेल नहीं खा सकता है और रिपोर्ट की गई पंक्ति संख्याएँ थोड़ी गलत हो सकती हैं। हालाँकि, संदर्भ अभी भी उस कोड में एक त्वरित झलक प्रदान करता है जिसने चेतावनी उठाई थी।
आत्मविश्वास स्तर
Brakeman प्रत्येक चेतावनी को एक आत्मविश्वास स्तर प्रदान करता है। यह इस बात का मोटा अनुमान प्रदान करता है कि उपकरण कितना निश्चित है कि दी गई चेतावनी वास्तव में एक समस्या है। स्वाभाविक रूप से, इन रेटिंग्स को पूर्ण सत्य के रूप में नहीं लिया जाना चाहिए।
आत्मविश्वास के तीन स्तर हैं:
- उच्च - या तो यह एक साधारण चेतावनी है (बूलियन मान) या उपयोगकर्ता इनपुट का असुरक्षित तरीकों से उपयोग किए जाने की बहुत संभावना है।
- मध्यम - यह आमतौर पर एक चर के असुरक्षित उपयोग को इंगित करता है, लेकिन चर उपयोगकर्ता इनपुट हो भी सकता है और नहीं भी।
- कमजोर - आमतौर पर इसका मतलब है कि उपयोगकर्ता इनपुट का अप्रत्यक्ष रूप से संभावित रूप से असुरक्षित तरीके से उपयोग किया गया।
केवल एक निश्चित आत्मविश्वास स्तर से ऊपर की चेतावनियाँ प्राप्त करने के लिए:
brakeman -w3
-w स्विच 1 से 3 तक एक संख्या लेता है, जिसमें 1 निम्न (सभी चेतावनियाँ) और 3 उच्च (केवल उच्चतम आत्मविश्वास वाली चेतावनियाँ) होता है।
कॉन्फ़िगरेशन फ़ाइलें
Brakeman विकल्पों को YAML फ़ाइलों में संग्रहीत और पढ़ा जा सकता है।
कॉन्फ़िगरेशन फ़ाइल लिखने की प्रक्रिया को सरल बनाने के लिए, -C विकल्प वर्तमान में सेट किए गए विकल्पों को आउटपुट करेगा:
$ brakeman -C --skip-files plugins/
---
:skip_files:
- plugins/
कमांड लाइन पर दिए गए विकल्पों की प्राथमिकता कॉन्फ़िगरेशन फ़ाइलों से अधिक होती है।
डिफ़ॉल्ट कॉन्फ़िग स्थान ./config/brakeman.yml, ~/.brakeman/config.yml, और /etc/brakeman/config.yml हैं
-c विकल्प का उपयोग उपयोग करने के लिए एक कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट करने के लिए किया जा सकता है।
सतत एकीकरण
Jenkins/Hudson के लिए एक प्लगइन उपलब्ध है।
और भी अधिक सतत परीक्षण के लिए, Guard प्लगइन आज़माएँ।
कुछ GitHub Actions उपलब्ध हैं।
निर्माण
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
Brakeman का उपयोग कौन कर रहा है?
होमपेज/समाचार
वेबसाइट: http://brakemanscanner.org/
ट्विटर: https://twitter.com/brakeman
चैट: https://gitter.im/presidentbeef/brakeman
लाइसेंस
Brakeman गैर-वाणिज्यिक उपयोग के लिए मुफ्त है।
विवरण के लिए COPYING देखें।