วิธีใช้ยูทิลิตี้อย่างง่ายเพื่อค้นหาช่องโหว่ในโค้ดโปรแกรม

Graudit รองรับภาษาการเขียนโปรแกรมหลายภาษาและช่วยให้คุณสามารถรวมการทดสอบความปลอดภัยของ codebase เข้ากับกระบวนการพัฒนาได้โดยตรง

วิธีใช้ยูทิลิตี้อย่างง่ายเพื่อค้นหาช่องโหว่ในโค้ดโปรแกรม
ที่มา: Unsplash (มาร์คัส สปิสกี้)

การทดสอบเป็นส่วนสำคัญของวงจรการพัฒนาซอฟต์แวร์ การทดสอบมีหลายประเภท แต่ละประเภทสามารถแก้ปัญหาของตัวเองได้ วันนี้ผมอยากจะพูดถึงการค้นหาปัญหาด้านความปลอดภัยในโค้ด

แน่นอนว่าในความเป็นจริงสมัยใหม่ของการพัฒนาซอฟต์แวร์ สิ่งสำคัญคือต้องมั่นใจในความปลอดภัยของกระบวนการ ครั้งหนึ่งมีการนำคำศัพท์พิเศษ DevSecOps มาใช้ด้วยซ้ำ คำนี้หมายถึงชุดของขั้นตอนที่มุ่งระบุและกำจัดช่องโหว่ในแอปพลิเคชัน มีโซลูชั่นโอเพ่นซอร์สเฉพาะทางสำหรับการตรวจสอบช่องโหว่ตามมาตรฐาน OWASPซึ่งอธิบายประเภทและพฤติกรรมต่างๆ ของช่องโหว่ในซอร์สโค้ด

มีแนวทางที่แตกต่างกันในการแก้ปัญหาด้านความปลอดภัย เช่น การทดสอบความปลอดภัยของแอปพลิเคชันแบบคงที่ (SAST), การทดสอบความปลอดภัยของแอปพลิเคชันแบบไดนามิก (DAST), การทดสอบความปลอดภัยของแอปพลิเคชันแบบโต้ตอบ (IAST), การวิเคราะห์องค์ประกอบของซอฟต์แวร์ และอื่นๆ

การทดสอบความปลอดภัยของแอปพลิเคชันแบบคงที่จะระบุข้อผิดพลาดในโค้ดที่เขียนไว้แล้ว วิธีการนี้ไม่ต้องการให้แอปพลิเคชันทำงาน ซึ่งเป็นสาเหตุที่เรียกว่าการวิเคราะห์แบบคงที่

ฉันจะมุ่งเน้นไปที่การวิเคราะห์โค้ดแบบคงที่และใช้เครื่องมือโอเพ่นซอร์สที่เรียบง่ายเพื่อสาธิตทุกสิ่งในทางปฏิบัติ

เหตุใดฉันจึงเลือกเครื่องมือโอเพ่นซอร์สสำหรับการวิเคราะห์ความปลอดภัยของโค้ดแบบคงที่

มีเหตุผลหลายประการสำหรับสิ่งนี้ ประการแรก ใช้งานได้ฟรีเนื่องจากคุณกำลังใช้เครื่องมือที่พัฒนาโดยชุมชนที่มีความคิดเหมือนกันที่ต้องการช่วยเหลือนักพัฒนารายอื่น หากคุณมีทีมเล็กๆ หรือบริษัทสตาร์ทอัพ คุณมีโอกาสที่ดีในการประหยัดเงินโดยใช้ซอฟต์แวร์โอเพ่นซอร์สเพื่อทดสอบความปลอดภัยของโค้ดเบสของคุณ ประการที่สอง คุณไม่จำเป็นต้องจ้างทีม DevSecOps แยกต่างหาก ซึ่งจะช่วยลดต้นทุนของคุณได้อีก

เครื่องมือโอเพ่นซอร์สที่ดีมักถูกสร้างขึ้นโดยคำนึงถึงข้อกำหนดที่เพิ่มขึ้นเพื่อความยืดหยุ่น ดังนั้นจึงสามารถใช้งานได้ในเกือบทุกสภาพแวดล้อมและครอบคลุมงานที่หลากหลาย นักพัฒนาสามารถเชื่อมต่อเครื่องมือดังกล่าวกับระบบที่พวกเขาสร้างขึ้นไว้แล้วขณะทำงานในโครงการของตนได้ง่ายกว่ามาก

แต่อาจมีบางครั้งที่คุณต้องการคุณสมบัติที่ไม่มีในเครื่องมือที่คุณเลือก ในกรณีนี้ คุณมีโอกาสที่จะแยกโค้ดและพัฒนาเครื่องมือของคุณเองโดยอิงจากโค้ดดังกล่าวพร้อมฟังก์ชันการทำงานที่คุณต้องการ

เนื่องจากในกรณีส่วนใหญ่การพัฒนาซอฟต์แวร์โอเพ่นซอร์สได้รับอิทธิพลอย่างแข็งขันจากชุมชน การตัดสินใจทำการเปลี่ยนแปลงจึงเกิดขึ้นอย่างรวดเร็วและตรงประเด็น: ผู้พัฒนาโครงการโอเพ่นซอร์สต้องอาศัยคำติชมและข้อเสนอแนะจากผู้ใช้ในรายงานของพวกเขา พบข้อผิดพลาดและปัญหาอื่นๆ

การใช้ Graudit เพื่อการวิเคราะห์ความปลอดภัยของโค้ด

คุณสามารถใช้เครื่องมือโอเพ่นซอร์สต่างๆ สำหรับการวิเคราะห์โค้ดแบบคงที่ ไม่มีเครื่องมือสากลสำหรับทุกภาษาการเขียนโปรแกรม นักพัฒนาบางส่วนทำตามคำแนะนำของ OWASP และพยายามครอบคลุมภาษาต่างๆ ให้ได้มากที่สุด

ที่นี่เราจะใช้ กราดิตซึ่งเป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งง่ายๆ ที่จะช่วยให้เราค้นหาช่องโหว่ในโค้ดเบสของเรา รองรับภาษาต่าง ๆ แต่ชุดยังคงมีจำกัด Graudit ได้รับการพัฒนาโดยใช้ยูทิลิตี้ grep ซึ่งครั้งหนึ่งเคยเผยแพร่ภายใต้ลิขสิทธิ์ GNU

มีเครื่องมือที่คล้ายกันสำหรับการวิเคราะห์โค้ดแบบคงที่ ได้แก่ Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder และอื่นๆ แต่ Graudit มีความยืดหยุ่นมากและมีข้อกำหนดทางเทคนิคเพียงเล็กน้อย อย่างไรก็ตาม คุณอาจประสบปัญหาที่ Graudit ไม่สามารถแก้ไขได้ จากนั้นคุณสามารถค้นหาตัวเลือกอื่นๆ ได้ที่นี่ ในรายการนี้.

เราสามารถรวมเครื่องมือนี้เข้ากับโปรเจ็กต์เฉพาะ หรือทำให้พร้อมใช้งานสำหรับผู้ใช้ที่เลือก หรือใช้พร้อมกันในทุกโปรเจ็กต์ของเรา นี่คือจุดที่ความยืดหยุ่นของ Graudit เข้ามามีบทบาท ดังนั้นเรามาโคลน repo ก่อน:

$ git clone https://github.com/wireghoul/graudit

ตอนนี้เรามาสร้างลิงก์สัญลักษณ์สำหรับ Graudit เพื่อใช้ในรูปแบบคำสั่ง

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

มาเพิ่มนามแฝงให้กับ .bashrc (หรือไฟล์การกำหนดค่าใด ๆ ที่คุณใช้):

#------ .bashrc ------
alias graudit="~/bin/graudit"

รีบูต:

$ source ~/.bashrc # OR
$ exex $SHELL

ตรวจสอบว่าการติดตั้งสำเร็จหรือไม่:

$ graudit -h

หากคุณเห็นสิ่งที่คล้ายกันแสดงว่าทุกอย่างเรียบร้อยดี

วิธีใช้ยูทิลิตี้อย่างง่ายเพื่อค้นหาช่องโหว่ในโค้ดโปรแกรม

ฉันจะทดสอบหนึ่งในโครงการที่มีอยู่ของฉัน ก่อนที่จะเรียกใช้เครื่องมือ จะต้องผ่านฐานข้อมูลที่สอดคล้องกับภาษาที่ใช้เขียนโปรเจ็กต์ของฉัน ฐานข้อมูลอยู่ในโฟลเดอร์ ~/gradit/signatures:

$ graudit -d ~/gradit/signatures/js.db

ดังนั้นฉันจึงทดสอบไฟล์ js สองไฟล์จากโปรเจ็กต์ของฉัน และ Graudit ได้แสดงข้อมูลเกี่ยวกับช่องโหว่ในโค้ดของฉันไปยังคอนโซล:

วิธีใช้ยูทิลิตี้อย่างง่ายเพื่อค้นหาช่องโหว่ในโค้ดโปรแกรม

วิธีใช้ยูทิลิตี้อย่างง่ายเพื่อค้นหาช่องโหว่ในโค้ดโปรแกรม

คุณสามารถลองทดสอบโครงการของคุณในลักษณะเดียวกันได้ คุณสามารถดูรายการฐานข้อมูลสำหรับภาษาการเขียนโปรแกรมต่างๆ ได้ ที่นี่.

ข้อดีและข้อเสียของ Graudit

Graudit รองรับภาษาการเขียนโปรแกรมมากมาย ดังนั้นจึงเหมาะสำหรับผู้ใช้ที่หลากหลาย มันสามารถแข่งขันกับแอนะล็อกฟรีหรือจ่ายเงินได้อย่างเพียงพอ และเป็นสิ่งสำคัญมากที่ยังคงมีการปรับปรุงโครงการอยู่ และชุมชนไม่เพียงแต่ช่วยเหลือนักพัฒนาเท่านั้น แต่ยังรวมถึงผู้ใช้รายอื่นที่กำลังพยายามค้นหาเครื่องมือนี้ด้วย

นี่เป็นเครื่องมือที่มีประโยชน์ แต่จนถึงขณะนี้ยังไม่สามารถระบุได้อย่างแน่ชัดว่าปัญหาคืออะไรด้วยโค้ดที่น่าสงสัย นักพัฒนายังคงปรับปรุง Graudit ต่อไป

แต่ไม่ว่าในกรณีใด การใส่ใจกับปัญหาด้านความปลอดภัยที่อาจเกิดขึ้นในโค้ดเมื่อใช้เครื่องมือเช่นนี้จะเป็นประโยชน์

เริ่ม…

ในบทความนี้ ฉันดูวิธีหนึ่งในหลายวิธีในการค้นหาช่องโหว่ - การทดสอบความปลอดภัยของแอปพลิเคชันแบบคงที่ การวิเคราะห์โค้ดแบบสแตติกเป็นเรื่องง่าย แต่เป็นเพียงจุดเริ่มต้นเท่านั้น หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับความปลอดภัยของโค้ดเบสของคุณ คุณจะต้องรวมการทดสอบประเภทอื่นๆ เข้ากับวงจรการพัฒนาซอฟต์แวร์ของคุณ

เป็นโฆษณา

VPS ที่เชื่อถือได้ และการเลือกแผนภาษีที่ถูกต้องจะช่วยให้คุณถูกรบกวนจากการพัฒนาด้วยปัญหาอันไม่พึงประสงค์น้อยลง - ทุกอย่างจะทำงานได้โดยไม่มีความล้มเหลวและมีสถานะการออนไลน์ที่สูงมาก!

วิธีใช้ยูทิลิตี้อย่างง่ายเพื่อค้นหาช่องโหว่ในโค้ดโปรแกรม

ที่มา: will.com

เพิ่มความคิดเห็น