Sobelow เป็นเครื่องมือวิเคราะห์แบบคงที่ที่เน้นความปลอดภัยสำหรับ Elixir & The Phoenix Framework สำหรับนักวิจัยด้านความปลอดภัยมันเป็นเครื่องมือที่มีประโยชน์สำหรับการรับมุมมองอย่างรวดเร็วของจุดดอกเบี้ย สำหรับผู้ดูแลโครงการสามารถใช้เพื่อป้องกันการเปิดตัวช่องโหว่ทั่วไปจำนวนมาก
ปัจจุบัน Sobelow ตรวจพบปัญหาด้านความปลอดภัยบางประเภทต่อไปนี้:
ช่องโหว่ที่อาจเกิดขึ้นจะถูกตั้งค่าสถานะในสีที่แตกต่างกันตามความเชื่อมั่นในความไม่มั่นคง ความมั่นใจสูงคือสีแดงความมั่นใจปานกลางเป็นสีเหลืองและความมั่นใจต่ำเป็นสีเขียว
การค้นพบมักจะทำเครื่องหมายว่า "ความมั่นใจต่ำ" หากดูเหมือนว่าฟังก์ชั่นสามารถใช้งานได้อย่างไม่ปลอดภัย แต่ก็ไม่สามารถกำหนดได้อย่างน่าเชื่อถือหากฟังก์ชั่นยอมรับอินพุตที่ผู้ใช้จัดหา เช่น หากการค้นพบถูกทำเครื่องหมายสีเขียวมัน อาจ จะไม่ปลอดภัยอย่างยิ่ง แต่จะต้องมีการตรวจสอบด้วยตนเองมากขึ้น
หมายเหตุ: โครงการนี้อยู่ระหว่างการพัฒนาอย่างต่อเนื่องและช่องโหว่เพิ่มเติมจะถูกตั้งค่าสถานะเมื่อเวลาผ่านไป หากคุณพบข้อผิดพลาดหรือต้องการขอคุณสมบัติเพิ่มเติมหรือตรวจสอบความปลอดภัยโปรดเปิดปัญหา!
ในการใช้ Sobelow คุณสามารถเพิ่มลงในการพึ่งพาของแอปพลิเคชันของคุณ
def deps do
[
{ :sobelow , "~> 0.13" , only: [ :dev , :test ] , runtime: false }
]
endนอกจากนี้คุณยังสามารถติดตั้ง Sobelow ทั่วโลกโดยดำเนินการต่อไปนี้จากบรรทัดคำสั่ง:
$ mix escript.install hex sobelow
ในการติดตั้งจาก Master Branch แทนที่จะเป็นรุ่นล่าสุดสามารถใช้คำสั่งต่อไปนี้ได้:
$ mix escript.install github nccgroup/sobelow
หลังจากการติดตั้งวิธีที่ง่ายที่สุดในการสแกนโครงการฟีนิกซ์คือการเรียกใช้ต่อไปนี้จากรูทโครงการ:
$ mix sobelow
หมายเหตุ: อาร์กิวเมนต์เส้นทางใด ๆ ควรเป็นเส้นทางที่แน่นอนหรือสัมพันธ์กับรูทแอปพลิเคชัน
--root หรือ -r -ระบุไดเรกทอรีรากแอปพลิเคชัน ยอมรับอาร์กิวเมนต์พา ธ เช่น ../my_project my_project
--verbose หรือ -v -ตัวอย่างรหัสพิมพ์และรายละเอียดการค้นหาเพิ่มเติม
--ignore หรือ -i -ละเว้นประเภทการค้นหาที่ได้รับ ยอมรับรายการชื่อโมดูลที่คั่นด้วยเครื่องหมายจุลภาคเช่น XSS.Raw,Traversal
--ignore-files ละเว้นไฟล์ ยอมรับรายการชื่อไฟล์ที่คั่นด้วยเครื่องหมายจุลภาคเช่น config/prod.exs
--details -d การค้นหาประเภท ยอมรับชื่อโมดูลเดียวเช่น Config.CSRF
--all-details -รายละเอียดของการค้นหาทุกประเภท
--private -Skip Update Checks
--router -ระบุตำแหน่งเราเตอร์ สิ่งนี้จะต้องใช้เฉพาะเมื่อตำแหน่งเราเตอร์ไม่ได้มาตรฐาน ยอมรับการโต้แย้งเส้นทางเช่น my/strange/router.ex
--exit ส่งคืนสถานะการออกที่ไม่ใช่ศูนย์ที่หรือสูงกว่าเกณฑ์ความเชื่อมั่นของ low medium หรือ high ค่าเริ่มต้นเป็น false ซึ่งส่งคืนสถานะการออกเป็นศูนย์
--threshold -กลับมาผลการค้นพบที่หรือสูงกว่าระดับความเชื่อมั่น low (ค่าเริ่มต้น), medium หรือ high
--format หรือ -f -ระบุรูปแบบผลลัพธ์ที่ค้นพบ ยอมรับรูปแบบเช่น txt หรือ json
โปรดทราบว่าตัวเลือกเช่น --verbose จะไม่ทำงานกับรูปแบบ json การค้นพบที่จัดรูปแบบ json ทั้งหมดมีคีย์ type file และ line ปุ่มอื่น ๆ อาจแตกต่างกันไป
--quiet -ส่งคืนบรรทัดเดียวที่ระบุจำนวนการค้นพบ มิฉะนั้นให้ส่งคืนไม่มีผลลัพธ์หากไม่มีการค้นพบ
--compact -การค้นพบขั้นต่ำบรรทัดเดียวที่มีสีเอาท์พุทตามความเชื่อมั่น
--flycheck การค้นพบขั้นต่ำบรรทัดเดียวที่เข้ากันได้กับเครื่องมือที่ใช้ FlyCheck
--save-config สร้างไฟล์กำหนดค่าตามตัวเลือกบรรทัดคำสั่ง ดูไฟล์การกำหนดค่าสำหรับข้อมูลเพิ่มเติม
--config -เรียกใช้ Sobelow ด้วยไฟล์การกำหนดค่า ดูไฟล์การกำหนดค่าสำหรับข้อมูลเพิ่มเติม
--mark-skip-all -ทำเครื่องหมายการค้นพบทั้งหมดที่แสดงเป็น skippable
--clear-skip การกำหนดค่าล้างที่สร้างขึ้นโดย --mark-skip-all
--skip -ละเว้นการค้นพบที่ถูกทำเครื่องหมายไว้สำหรับการข้าม ดูข้อดีที่ผิดพลาดสำหรับข้อมูลเพิ่มเติม
--version -ส่งออกเวอร์ชันปัจจุบันของ Sobelow สิ่งนี้มีประโยชน์สำหรับขั้นตอน CI หรือการรวมเข้ากับเครื่องมืออื่น ๆ เช่น Salus
Sobelow อนุญาตให้ผู้ใช้บันทึกตัวเลือกที่ใช้บ่อยในไฟล์การกำหนดค่า ตัวอย่างเช่นหากคุณพบว่าตัวเองทำงานอยู่ตลอดเวลา:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low
คุณสามารถใช้ --save-config Flag เพื่อสร้างไฟล์กำหนดค่า .sobelow-conf ของคุณ:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low --save-config
คำสั่งนี้จะสร้างไฟล์ .sobelow-conf ที่รูทของแอปพลิเคชันของคุณ คุณสามารถแก้ไขไฟล์นี้โดยตรงเพื่อทำการเปลี่ยนแปลง
คุณสามารถเรียกใช้คำสั่งโดยไม่มีตัวเลือกใด ๆ :
$ mix sobelow --save-config
เมื่อคุณเริ่มใช้แพ็คเกจนี้เป็นครั้งแรก - ไฟล์กำหนดค่าที่สร้างขึ้นจะถูกเติมด้วยค่าเริ่มต้นสำหรับแต่ละตัวเลือก (สิ่งนี้ช่วยในการรวมแพ็คเกจนี้เข้ากับ codebase ที่มีอยู่แล้ว) อย่างรวดเร็ว)
ตอนนี้ถ้าคุณต้องการเรียกใช้ Sobelow ด้วยการกำหนดค่าที่บันทึกไว้คุณสามารถเรียกใช้ Sobelow ด้วยธง --config
$ mix sobelow --config
Sobelow สนับสนุนการรายงานมากเกินไปเมื่อเทียบกับการรายงาน เช่นนี้คุณอาจพบข้อดีเท็จจำนวนหนึ่งในการสแกนทั่วไป การค้นพบเหล่านี้อาจถูกเพิกเฉยเป็นรายบุคคลโดยการเพิ่มความคิดเห็น # sobelow_skip พร้อมกับรายการของโมดูลก่อนคำจำกัดความของฟังก์ชั่น
# sobelow_skip ["Traversal"]
def vuln_func ( ... ) do
...
end เมื่อรวม Sobelow เข้ากับโครงการใหม่อาจมีผลบวกปลอมจำนวนมาก หากต้องการทำเครื่องหมายการค้นพบที่พิมพ์ออกมาทั้งหมดเป็นผลบวกที่ผิดพลาดให้เรียกใช้ Sobelow ด้วยธง --mark-skip-all
เมื่อคุณติดแท็กการค้นพบที่เหมาะสมให้เรียกใช้ Sobelow ด้วยธง --skip ป
$ mix sobelow --skip
ในขณะที่ # sobelow_skip ความคิดเห็นสามารถทำเครื่องหมายการค้นพบระดับฟังก์ชั่นเท่านั้น (และไม่สามารถใช้เพื่อข้ามปัญหาการกำหนดค่า) --mark-skip-all สามารถใช้เพื่อข้ามประเภทการค้นหาใด ๆ
หมวดหมู่ผลการวิจัยถูกแบ่งออกเป็นโมดูล โมดูลเหล่านี้สามารถใช้เพื่อละเว้นคลาสของการค้นพบ (ผ่านตัวเลือก ignore และ skip ) หรือเพื่อรับรายละเอียดช่องโหว่ (ผ่านตัวเลือก details )
รายการนี้และข้อมูลที่เป็นประโยชน์อื่น ๆ สามารถพบได้ในบรรทัดคำสั่ง:
$ mix help sobelow
เพื่อที่จะเรียกใช้ Sobelow กับแอพเด็กทั้งหมดภายในแอพร่มด้วยคำสั่งเดียวคุณสามารถเพิ่มนามแฝงสำหรับ Sobelow ในไฟล์ Root mix.exs ของคุณ:
defp aliases do
[
sobelow: [ "cmd mix sobelow" ]
]
end หากคุณต้องการใช้ไฟล์การกำหนดค่าในแอพร่มให้สร้าง .sobelow-conf ในแอปพลิเคชันเด็กแต่ละตัวและใช้ --config flag
เมื่อสแกนโครงการ Sobelow จะตรวจสอบการอัปเดตเป็นครั้งคราวและจะพิมพ์การแจ้งเตือนหากมีเวอร์ชันใหม่ Sobelow ติดตามการตรวจสอบการอัปเดตล่าสุดโดยการสร้างไฟล์ .sobelow ในรูทของโครงการสแกน
หากฟังก์ชั่นนี้ไม่ต้องการธง --private การจัดอันดับสามารถใช้กับการสแกนได้