Brakeman เป็นเครื่องมือวิเคราะห์แบบคงที่ซึ่งตรวจสอบ Ruby on Rails Applications สำหรับช่องโหว่ด้านความปลอดภัย
ใช้ Rubygems:
gem install brakeman
ใช้ Bundler:
group :development do
gem 'brakeman' , require : false
endใช้นักเทียบท่า:
docker pull presidentbeef/brakeman
ใช้นักเทียบท่าเพื่อสร้างจากแหล่งที่มา:
git clone https://github.com/presidentbeef/brakeman.git
cd brakeman
docker build . -t brakeman
จากไดเรกทอรีรากของ Rails Application:
brakeman
ด้านนอกของ Rails Root:
brakeman /path/to/rails/application
จากไดเรกทอรีรากของ Rails Application:
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 Root (โปรดทราบว่าไฟล์เอาต์พุตนั้นสัมพันธ์กับ Path/to/Rails/Application):
docker run -v 'path/to/rails/application':/code presidentbeef/brakeman -o brakeman_results.html
Brakeman ควรทำงานร่วมกับ Rails รุ่นใดก็ได้ตั้งแต่ 2.3.x ถึง 7.x
Brakeman สามารถวิเคราะห์รหัสที่เขียนด้วยไวยากรณ์ Ruby 2.0 และใหม่กว่า แต่ต้องใช้ Ruby 3.0.0 อย่างน้อย
สำหรับรายการตัวเลือกทั้งหมดให้ใช้ brakeman --help หรือดูตัวเลือกไฟล์ MD
ในการระบุไฟล์เอาต์พุตสำหรับผลลัพธ์:
brakeman -o output_file
รูปแบบเอาต์พุตถูกกำหนดโดยส่วนขยายไฟล์หรือโดยใช้ตัวเลือก -f ตัวเลือกปัจจุบันคือ: text , html , tabs , json , junit , markdown , csv , codeclimate และ 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
สำหรับการทดสอบอย่างต่อเนื่องยิ่งขึ้นลองปลั๊กอินยาม
มีการกระทำของ GitHub สองสามครั้ง
git clone git://github.com/presidentbeef/brakeman.git
cd brakeman
gem build brakeman.gemspec
gem install brakeman*.gem
.. และอีกมากมาย!
เว็บไซต์: http://brakemanscanner.org/
Twitter: https://twitter.com/brakeman
แชท: https://gitter.im/presidentbeef/brakeman
Brakeman ฟรีสำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์
ดูการคัดลอกรายละเอียด