อ่าน 3 นาที
รูปแบบการโจมตี
ใน สาขา วิทยาการ คอมพิวเตอร์ รูปแบบการโจมตี คือกลุ่มวิธีการที่เข้มงวดสำหรับการค้นหา ข้อบกพร่อง หรือข้อผิดพลาดในโค้ดที่เกี่ยวข้องกับ ความปลอดภัย ของ คอมพิวเตอร์
รูปแบบการโจมตี
ใน สาขา วิทยาการคอมพิวเตอร์รูปแบบการโจมตีคือกลุ่มวิธีการที่เข้มงวดสำหรับการค้นหาข้อบกพร่องหรือข้อผิดพลาดในโค้ดที่เกี่ยวข้องกับ ความปลอดภัย ของ คอมพิวเตอร์
รูปแบบการโจมตีมักถูกใช้เพื่อการทดสอบและมีความสำคัญอย่างยิ่งในการป้องกันช่องโหว่ ที่อาจ เกิดขึ้น รูปแบบการโจมตีเหล่านี้สามารถใช้เพื่อเน้นย้ำส่วนที่ต้องพิจารณาเพื่อเพิ่ม ความปลอดภัย ในแอปพลิ เค ชันซอฟต์แวร์ นอกจากนี้ยังให้รูปแบบวิธีแก้ปัญหาทั่วไปในการป้องกันการโจมตี ไม่ว่าจะเป็นในเชิงกายภาพหรือโดยการอ้างอิง การปฏิบัติเช่นนี้อาจเรียกว่ารูปแบบการเขียนโค้ดเพื่อการป้องกัน
รูปแบบการโจมตีกำหนดชุดขั้นตอนที่สามารถทำซ้ำได้ ซึ่งสามารถนำมาใช้จำลองการโจมตีต่อระบบรักษาความปลอดภัยของระบบได้
หมวดหมู่
มีหลายวิธีในการจำแนกประเภทรูปแบบการโจมตี
หมวดหมู่ทั่วไป
รูปแบบการโจมตี ทางสถาปัตยกรรมใช้เพื่อโจมตีจุดอ่อนในการออกแบบสถาปัตยกรรมของระบบ เช่น จุดอ่อนในโปรโตคอลกลยุทธ์ การ ตรวจสอบสิทธิ์และการแบ่งส่วนระบบ การโจมตีเหล่านี้เน้นตรรกะมากกว่าการโจมตีโดยการเปลี่ยนแปลงบิตโดยตรงการตรวจสอบเวลาเทียบกับการใช้งานสามารถจัดเป็นข้อบกพร่องทางสถาปัตยกรรมได้
การแยกวิเคราะห์และการตรวจสอบความถูก ต้อง การโจมตีแบบ SQL injectionและCross-site scriptingจัดอยู่ในหมวดหมู่นี้
ความปลอดภัยของหน่วยความจำใน ภาษาโปรแกรม ที่ไม่ปลอดภัยต่อหน่วยความจำปัญหาในระดับต่ำ เช่นบัฟเฟอร์โอเวอร์โฟลว์และสภาวะการแข่งขันสามารถถูกใช้ประโยชน์เพื่อควบคุมซอฟต์แวร์บางส่วนหรือทั้งหมดได้
การปลอมแปลงและการโจมตีรูปแบบอื่นๆมักมุ่งเป้าไปที่ชื่อโดเมน เว็บไซต์ ด้วยการโจมตีต่างๆ เช่นฟิชชิ่งการปลอมแปลงชื่อโดเมนและการสะกดชื่อโดเมนผิด
การโจมตี GUIการโจมตีเหล่านี้มุ่ง เป้าไปที่ ส่วนประกอบพื้นฐานของส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) ได้แก่clickjacking , mousetrappingและเทคนิคการซ้อนทับ iframe ใน HTML
ตัวคูณ มัลแวร์โฆษณาการโจมตีแบบ "ไวรัล" ที่แพร่กระจายผ่านโซเชียลมีเดีย รูปแบบ "เวิร์ม" การเตรียมรายชื่อโฮสต์ที่อ่อนแอไว้ก่อนปล่อยเวิร์ม
ด้วยเทคโนโลยี
อีกวิธีหนึ่งคือการจัดกลุ่มพวกมันเป็นหมวดหมู่ทั่วไป อีกวิธีหนึ่งในการจัดหมวดหมู่รูปแบบการโจมตีคือการจัดกลุ่มตามเทคโนโลยีเฉพาะหรือประเภทของเทคโนโลยี (เช่น รูปแบบการโจมตีฐานข้อมูล รูปแบบการโจมตีเว็บแอปพลิเคชัน รูปแบบการโจมตีเครือข่าย เป็นต้น หรือ รูปแบบการโจมตี SQL Server รูปแบบการโจมตี Oracle รูปแบบการโจมตี .Net รูปแบบการโจมตี Java เป็นต้น)
โครงสร้าง
รูปแบบการโจมตี (Attack Patterns) มีโครงสร้างคล้ายคลึงกับโครงสร้างของรูปแบบการออกแบบ (Design Patterns ) การใช้รูปแบบนี้มีประโยชน์ในการกำหนดมาตรฐานการพัฒนารูปแบบการโจมตี และทำให้มั่นใจได้ว่าข้อมูลบางอย่างเกี่ยวกับแต่ละรูปแบบจะได้รับการบันทึกในลักษณะเดียวกันเสมอ
โครงสร้างที่แนะนำสำหรับการบันทึกรูปแบบการโจมตีมีดังนี้:
- ชื่อรูปแบบ
ป้ายกำกับที่ใช้เรียกรูปแบบ ซึ่งมักใช้เพื่ออ้างถึงรูปแบบนั้นๆ
- ประเภทและประเภทย่อย
ประเภทของรูปแบบและประเภทย่อยที่เกี่ยวข้องช่วยในการจำแนกประเภทของรูปแบบ ซึ่งช่วยให้ผู้ใช้สามารถค้นหาและระบุกลุ่มรูปแบบที่พวกเขาจะต้องรับมือในความพยายามด้านความปลอดภัยได้อย่างรวดเร็ว
แต่ละรูปแบบการโจมตีจะมีประเภท และประเภทย่อยตั้งแต่ศูนย์ประเภทขึ้นไป ซึ่งระบุหมวดหมู่ของรูปแบบการโจมตีนั้น ประเภททั่วไปได้แก่ การโจมตี แบบฉีดข้อมูล (Injection Attack), การโจมตีแบบ ปฏิเสธการให้บริการ (Denial of Service Attack), การโจมตี แบบถอดรหัส (Cryptanalysis Attack) เป็นต้น ตัวอย่างของประเภทย่อยทั่วไปสำหรับการโจมตีแบบปฏิเสธการให้บริการ เช่น DOS – การขาดแคลนทรัพยากร (Resource Starvation) , DOS – การล่มของระบบ (System Crash), DOS – การใช้ช่องโหว่นโยบาย (Policy Abuse)
อีกหนึ่งการใช้งานที่สำคัญของฟิลด์นี้คือการทำให้แน่ใจว่ารูปแบบที่แท้จริงจะไม่ถูกนำมาใช้ซ้ำโดยไม่จำเป็น บ่อยครั้งที่เราอาจสับสนระหว่างช่องโหว่ใหม่กับการโจมตีใหม่ ช่องโหว่ใหม่ถูกสร้างขึ้นตลอดเวลาสำหรับรูปแบบการโจมตีเดียวกัน รูปแบบการโจมตี Buffer Overflow เป็นตัวอย่างที่ดี มีช่องโหว่และไวรัสมากมายที่ใช้ประโยชน์จากช่องโหว่ Buffer Overflow แต่ทั้งหมดนั้นมีรูปแบบเดียวกัน ดังนั้นกลไกการจำแนกประเภทและประเภทย่อยจึงเป็นวิธีในการจำแนกรูปแบบ หากรูปแบบที่คุณกำลังสร้างไม่มีประเภทและประเภทย่อยที่ไม่ซ้ำกัน โอกาสสูงที่มันจะเป็นช่องโหว่ใหม่สำหรับรูปแบบที่มีอยู่แล้ว
ส่วนนี้ยังใช้เพื่อระบุว่าสามารถทำการโจมตีแบบอัตโนมัติได้หรือไม่ หากสามารถทำการโจมตีแบบอัตโนมัติได้ ขอแนะนำให้ระบุตัวอย่างในส่วน "ตัวอย่างโค้ดการโจมตี" ซึ่งจะกล่าวถึงต่อไป
- เรียกอีกอย่างว่า
การโจมตีบางประเภทอาจมีชื่อเรียกหลายชื่อ ช่องนี้ใช้สำหรับระบุชื่อเรียกอื่นๆ เหล่านั้น
- คำอธิบาย
นี่คือคำอธิบายเกี่ยวกับการโจมตีและแหล่งที่มาของการโจมตีนั้น โดยพื้นฐานแล้วเป็นช่องกรอกข้อมูลแบบอิสระที่สามารถใช้บันทึกข้อมูลที่ไม่สามารถกรอกลงในช่องอื่นๆ ได้อย่างง่ายดาย
- เจตนาของผู้โจมตี
ช่องนี้ระบุผลลัพธ์ที่ผู้โจมตีต้องการ ซึ่งแสดงถึงเป้าหมายหลักและจุดประสงค์ของการโจมตี ตัวอย่างเช่น เจตนาของผู้โจมตีในการโจมตีแบบ DOS – การจำกัดแบนด์วิดท์ คือการทำให้เว็บไซต์เป้าหมายไม่สามารถเข้าถึงได้โดยผู้ใช้งานทั่วไป
- แรงจูงใจ
ช่องนี้บันทึกเหตุผลของผู้โจมตีที่พยายามโจมตี อาจเป็นการทำให้ระบบล่มเพื่อสร้างความเสียหายทางการเงินแก่องค์กร หรืออาจเป็นการขโมยข้อมูลสำคัญเพื่อสร้างผลประโยชน์ทางการเงินให้แก่ผู้โจมตี
ช่องนี้แตกต่างจากช่องเจตนาของผู้โจมตีเล็กน้อยตรงที่มันอธิบายถึงเหตุผลที่ผู้โจมตีอาจต้องการบรรลุเจตนาที่ระบุไว้ในช่องเจตนาของผู้โจมตี มากกว่าผลลัพธ์ทางกายภาพของการโจมตี
- ช่องโหว่ที่สามารถใช้ประโยชน์ได้
ช่องนี้ระบุประเภทของช่องโหว่ที่ก่อให้เกิดโอกาสในการโจมตีตั้งแต่แรก ตัวอย่างเช่น ใน การโจมตี แบบ Integer Overflowช่องป้อนข้อมูลแบบจำนวนเต็มไม่ได้ตรวจสอบขนาดของค่าข้อมูลที่เข้ามาเพื่อให้แน่ใจว่าตัวแปรเป้าหมายสามารถรองรับค่าที่เข้ามาได้ นี่คือช่องโหว่ที่การโจมตีจะใช้ประโยชน์เพื่อทำการโจมตี
- ผู้เข้าร่วม
ผู้เข้าร่วม คือ หน่วยงานตั้งแต่หนึ่งหน่วยขึ้นไปที่จำเป็นต่อความสำเร็จของการโจมตี ซึ่งรวมถึงระบบของเหยื่อ ตลอดจนผู้โจมตีและเครื่องมือหรือส่วนประกอบของระบบของผู้โจมตี ชื่อของหน่วยงานควรมีคำอธิบายสั้น ๆ เกี่ยวกับบทบาทของพวกเขาในการโจมตีและวิธีการที่พวกเขามีปฏิสัมพันธ์กัน
- แผนภาพกระบวนการ
นี่คือแผนภาพการโจมตีอย่างน้อยหนึ่งภาพ เพื่ออธิบายให้เห็นภาพว่าการโจมตีนั้นดำเนินการอย่างไร แผนภาพนี้สามารถอยู่ในรูปแบบใดก็ได้ที่เหมาะสม แต่ขอแนะนำให้เป็นแผนภาพที่คล้ายกับแผนภาพระบบหรือแผนภาพคลาสที่แสดงการไหลของข้อมูลและส่วนประกอบที่เกี่ยวข้อง
- ความสัมพันธ์และเงื่อนไข
การโจมตีทุกครั้งต้องมีบริบทในการดำเนินการและเงื่อนไขที่ทำให้การโจมตีเป็นไปได้ ส่วนนี้จะอธิบายถึงเงื่อนไขที่จำเป็นและระบบหรือสถานการณ์อื่นๆ ที่ต้องมีอยู่เพื่อให้การโจมตีประสบความสำเร็จ ตัวอย่างเช่น เพื่อให้ผู้โจมตีสามารถทำการโจมตีแบบ Integer Overflow ได้ พวกเขาต้องเข้าถึงแอปพลิเคชันที่มีช่องโหว่ ซึ่งเป็นเรื่องปกติในการโจมตีส่วนใหญ่ อย่างไรก็ตาม หากช่องโหว่นั้นปรากฏขึ้นเฉพาะเมื่อเป้าหมายทำงานอยู่บนเซิร์ฟเวอร์ RPC ระยะไกล นั่นก็จะเป็นเงื่อนไขที่ต้องกล่าวถึงในส่วนนี้ด้วย
- ตัวอย่างโค้ดโจมตี
หากสามารถสาธิตโค้ดโจมตีได้ ส่วนนี้จะระบุตำแหน่งสำหรับจัดเก็บโค้ดสาธิต ในบางกรณี เช่น การโจมตีแบบปฏิเสธการให้บริการ (Denial of Service) อาจไม่สามารถแสดงโค้ดเฉพาะได้ อย่างไรก็ตาม ในการโจมตีแบบ Overflow และCross-Site Scriptingโค้ดตัวอย่างจะเป็นประโยชน์อย่างมาก
- ช่องโหว่ที่มีอยู่
การโจมตีอาจเกิดขึ้นโดยอัตโนมัติหรือโดยมนุษย์ การโจมตีโดยอัตโนมัติมักพบในรูปแบบของไวรัส เวิร์ม และเครื่องมือแฮ็ก หากมีช่องโหว่ใดๆ ที่ทราบอยู่แล้วสำหรับการโจมตีนี้ ควรใช้ส่วนนี้เพื่อแสดงรายการอ้างอิงของช่องโหว่เหล่านั้น การอ้างอิงเหล่านี้อาจเป็นภายใน เช่น ฐานความรู้ขององค์กร หรือภายนอก เช่น ฐานข้อมูล CERT และฐานข้อมูลไวรัสต่างๆ
อย่าสับสนระหว่าง "การโจมตีโดยใช้ช่องโหว่" กับ "ช่องโหว่" การโจมตีโดยใช้ช่องโหว่ คือการโจมตีอัตโนมัติหรือการโจมตีด้วยตนเองที่ใช้ประโยชน์จากช่องโหว่ ไม่ใช่การระบุช่องโหว่ที่พบในผลิตภัณฑ์ใดผลิตภัณฑ์หนึ่งโดยเฉพาะ
- การโจมตีต่อเนื่อง
การโจมตีต่อเนื่อง คือการโจมตีอื่นๆ ที่อาจเกิดขึ้นได้จากรูปแบบการโจมตีนี้ ตัวอย่างเช่น รูปแบบการโจมตี Buffer Overflow มักตามมาด้วยการโจมตี Escalation of Privilege, การโจมตี Subversion หรือการเตรียมการสำหรับการโจมตี Trojan Horse/Backdoor ช่องนี้มีประโยชน์อย่างยิ่งในการค้นคว้าเกี่ยวกับการโจมตีและระบุว่ามีการโจมตีอื่นๆ ใดบ้างที่อาจเกิดขึ้นหรือถูกเตรียมการไว้
- ประเภทของการลดผลกระทบ
ประเภทของการลดผลกระทบ คือ กลยุทธ์การลดผลกระทบพื้นฐานที่จะใช้เพื่อป้องกันรูปแบบการโจมตี โดยทั่วไปแล้วจะหมายถึง รูปแบบความปลอดภัยและรูปแบบการเขียนโค้ดเพื่อการป้องกัน ประเภทของการลดผลกระทบยังสามารถใช้เป็นวิธีการจำแนกรูปแบบการโจมตีต่างๆ ได้อีกด้วย การจำแนกรูปแบบการโจมตีในลักษณะนี้ จะช่วยให้สามารถพัฒนาไลบรารีเพื่อใช้งานประเภทของการลดผลกระทบเฉพาะ ซึ่งสามารถนำมาใช้เพื่อลดผลกระทบของรูปแบบการโจมตีทั้งกลุ่มได้ ไลบรารีเหล่านี้สามารถนำไปใช้ซ้ำได้ในแอปพลิเคชันต่างๆ เพื่อให้มั่นใจได้ถึงการครอบคลุมที่สม่ำเสมอและเชื่อถือได้ต่อการโจมตีประเภทต่างๆ
- มาตรการบรรเทาผลกระทบที่แนะนำ
เนื่องจากนี่เป็นรูปแบบการโจมตี ดังนั้นมาตรการบรรเทาผลกระทบที่แนะนำสำหรับการโจมตีนี้จึงสามารถระบุได้โดยย่อในที่นี้ โดยในอุดมคติแล้ว ข้อมูลนี้จะชี้แนะผู้ใช้ไปยังรูปแบบการบรรเทาผลกระทบที่ละเอียดกว่าสำหรับการโจมตีประเภทนี้
- รูปแบบที่เกี่ยวข้อง
ส่วนนี้จะมีส่วนย่อยหลายส่วน เช่น รูปแบบที่เกี่ยวข้อง รูปแบบการบรรเทา รูปแบบความปลอดภัย และรูปแบบสถาปัตยกรรม เหล่านี้เป็นการอ้างอิงถึงรูปแบบที่สามารถสนับสนุน เกี่ยวข้อง หรือบรรเทาการโจมตีได้ และรายการของรูปแบบที่เกี่ยวข้องควรระบุถึงสิ่งนั้นด้วย
ตัวอย่างของรูปแบบที่เกี่ยวข้องกับรูปแบบการโจมตีแบบ Integer Overflow ได้แก่:
รูปแบบการลดผลกระทบ – รูปแบบการป้อนข้อมูลแบบกรอง, รูปแบบคุณสมบัติการป้องกันตนเอง
รูปแบบที่เกี่ยวข้อง – รูปแบบบัฟเฟอร์โอเวอร์โฟลว์
- การแจ้งเตือน รายการ และสิ่งพิมพ์ที่เกี่ยวข้อง
ส่วนนี้แสดงรายการอ้างอิงทั้งหมดเกี่ยวกับประกาศเตือนและเอกสารเผยแพร่ที่เกี่ยวข้อง เช่น รายการในCommon Vulnerabilities and Exposures ( CVL), CERT, SANS และประกาศเตือนจากผู้จำหน่ายที่เกี่ยวข้อง รายการเหล่านี้ควรมีไฮเปอร์ลิงก์ไปยังประกาศเตือนและรายการออนไลน์เพื่อให้มั่นใจได้ว่าข้อมูลที่อ้างอิงนั้นเป็นข้อมูลล่าสุดที่สุด
- CVE: [1]
- CWE: [2]
- ใบรับรอง: [3]
เว็บไซต์แจ้งเตือนผู้จำหน่ายต่างๆ
ดูเพิ่มเติม
อ่านเพิ่มเติม
- อเล็กซานเดอร์, คริสโตเฟอร์; อิชิกาวะ, ซารา; และซิลเวอร์สไตน์, เมอร์เรย์. ภาษาแห่งรูปแบบ . นิวยอร์ก, นิวยอร์ก: สำนักพิมพ์มหาวิทยาลัยออกซ์ฟอร์ด , 1977
- แกมมา, อี.; เฮล์ม, อาร์.; จอห์นสัน, อาร์.; และ วลิสไซด์ส, เจ. รูปแบบการออกแบบ: องค์ประกอบของซอฟต์แวร์เชิงวัตถุที่นำกลับมาใช้ใหม่ได้ISBN 0-201-63361-2แอดดิสัน-เวสลีย์ , 1995
- ทอมป์สัน, เฮอร์เบิร์ต; เชส, สก็อตต์, คู่มือช่องโหว่ซอฟต์แวร์ISBN 1-58450-358-0ชาร์ลส์ ริเวอร์ มีเดีย, 2005
- Gegick, Michael และWilliams, Laurie . “ การจับคู่รูปแบบการโจมตีกับช่องโหว่ด้านความปลอดภัยในการออกแบบระบบที่เน้นซอฟต์แวร์ ” ACM SIGSOFT Software Engineering Notes, Proceedings of the 2005 workshop on Software engineering for secure systems—building trustworthy applications SESS '05, Volume 30, Issue 4, ACM Press , 2005
- Howard, M. และ LeBlanc, D. การเขียนโค้ดที่ปลอดภัยISBN 0-7356-1722-8สำนักพิมพ์ Microsoft Press , 2002.
- มัวร์, เอพี; เอลลิสัน, อาร์เจ; และ ลิงเกอร์, อาร์ซี การสร้างแบบจำลองการโจมตี เพื่อความปลอดภัยและความอยู่รอดของข้อมูลสถาบันวิศวกรรมซอฟต์แวร์มหาวิทยาลัยคาร์เนกีเมลลอนปี 2001
- ฮอกลันด์, เกร็ก และ แมคกรอว์, แกรี่. การเจาะระบบซอฟต์แวร์: วิธีการถอดรหัสISBN 0-201-78695-8แอดดิสัน-เวสลีย์, 2004
- แม็กกรอว์, แกรี่. ความปลอดภัยของซอฟต์แวร์: การสร้างความปลอดภัยในISBN 0-321-35670-5แอดดิสัน-เวสลีย์, 2006
- วีเอกา, จอห์นและ แมคกรอว์, แกรี่. การสร้างซอฟต์แวร์ที่ปลอดภัย: วิธีหลีกเลี่ยงปัญหาด้านความปลอดภัยอย่างถูกต้องISBN 0-201-72152-Xแอดดิสัน-เวสลีย์, 2001
- ชูมัคเกอร์, มาร์คุส; เฟร์นันเดซ-บูลีโอนี่, เอดูอาร์โด้; ไฮเบิร์ตสัน, ดวน; บุชมันน์, แฟรงค์; ซอมเมอร์ลาด, ปีเตอร์รูปแบบความปลอดภัยของ ISBN 0-470-85884-2จอห์น ไวลีย์ แอนด์ ซันส์ , 2006
- Koizol, Jack; Litchfield, D.; Aitel, D.; Anley, C.; Eren, S.; Mehta, N.; & Riley. H. คู่มือ Shellcoder: การค้นพบและการใช้ประโยชน์จากช่องโหว่ด้านความปลอดภัยISBN 0-7645-4468-3ไวเลย์, 2004
- Schneier, Bruce. Attack Trees: Modeling Security Threats Dr. Dobb's Journal, ธันวาคม 1999
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ รูปแบบการโจมตี
ใน สาขา วิทยาการ คอมพิวเตอร์ รูปแบบการโจมตี คือกลุ่มวิธีการที่เข้มงวดสำหรับการค้นหา ข้อบกพร่อง หรือข้อผิดพลาดในโค้ดที่เกี่ยวข้องกับ ความปลอดภัย ของ คอมพิวเตอร์
หมวดหมู่
มีหลายวิธีในการจำแนกประเภทรูปแบบการโจมตี
หมวดหมู่ทั่วไป
รูปแบบการโจมตี ทางสถาปัตยกรรม ใช้เพื่อโจมตีจุดอ่อนในการออกแบบสถาปัตยกรรมของระบบ เช่น จุดอ่อนใน โปรโตคอล กลยุทธ์ การ ตรวจสอบสิทธิ์ และการแบ่งส่วนระบบ การโจมตีเหล่านี้เน้นตรรกะมากกว่าการโจมตีโดยการเปลี่ยนแปลงบิตโดยตรง การตรวจสอบเวลาเทียบกับการใช้งาน...
ด้วยเทคโนโลยี
อีกวิธีหนึ่งคือการจัดกลุ่มพวกมันเป็นหมวดหมู่ทั่วไป อีกวิธีหนึ่งในการจัดหมวดหมู่รูปแบบการโจมตีคือการจัดกลุ่มตามเทคโนโลยีเฉพาะหรือประเภทของเทคโนโลยี (เช่น รูปแบบการโจมตีฐานข้อมูล รูปแบบการโจมตีเว็บแอปพลิเคชัน รูปแบบการโจมตีเครือข่าย เป็นต้น หรือ รูปแบบการโจมตี...