กลับไปหน้าบทความ

อ่าน 3 นาที

อ่านนอกขอบเขต

ในด้าน ความปลอดภัย และการเขียนโปรแกรมคอมพิวเตอร์การอ่านนอกขอบเขตถือเป็นความผิดปกติของซอฟต์แวร์ที่โปรแกรม อ่าน ข้อมูลจากบัฟเฟอร์แต่กลับอ่าน ข้อมูล...

อ่านนอกขอบเขต

ในด้าน ความปลอดภัย และการเขียนโปรแกรมคอมพิวเตอร์การอ่านนอกขอบเขต[ 1 ]ถือเป็นความผิดปกติของซอฟต์แวร์ที่โปรแกรม อ่าน ข้อมูลจากบัฟเฟอร์แต่กลับอ่าน ข้อมูล จากหน่วยความจำที่อยู่ติดกันนอกขอบเขตของบัฟเฟอร์ นี่เป็นกรณีพิเศษของการละเมิดความปลอดภัยของหน่วยความจำและเป็นรูปแบบหนึ่งของ การละเมิด ความลับของข้อมูล (ดูCIA triad ) การอ่านเกินบัฟเฟอร์[ 2 ] [ 3 ]และการอ่านต่ำกว่าบัฟเฟอร์เป็นกรณีพิเศษของการอ่านนอกขอบเขต[ 1 ]

การอ่านข้อมูลนอกขอบเขตเป็นพื้นฐานของช่องโหว่ซอฟต์แวร์ หลายอย่าง ในบางกรณี อาจถูกใช้ประโยชน์ ในทางที่ผิด เพื่อเข้าถึงข้อมูลที่มีสิทธิ์[ 4 ]ตัวอย่างเช่น บางครั้งอาจถูกกระตุ้น เช่นใน บั๊ก Heartbleedโดยอินพุตที่สร้างขึ้นในทางที่ผิดซึ่งออกแบบมาเพื่อใช้ประโยชน์จากการขาดการตรวจสอบขอบเขตเพื่ออ่านส่วนของหน่วยความจำที่ไม่สามารถเข้าถึงได้

ในบางครั้ง การอ่านที่อยู่นอกขอบเขตอาจส่งผลให้เกิดพฤติกรรมโปรแกรมที่ผิดปกติอื่นๆ รวมถึง ข้อผิดพลาดในการเข้าถึง หน่วยความจำ (รวมถึงข้อผิดพลาดเพจที่ไม่ถูกต้อง ) ผลลัพธ์ที่ไม่ถูกต้อง หรือการหยุดทำงานตัวอย่างเช่นการหยุดชะงักของระบบไอทีที่เกิดขึ้นเป็นวงกว้างในปี 2024เกิดจากข้อผิดพลาดหน่วยความจำที่อยู่นอกขอบเขตในซอฟต์แวร์ความปลอดภัยทางไซเบอร์ที่พัฒนาโดย CrowdStrike [ 5 ]

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

การตรวจสอบขอบเขต , การแซนด์บ็อกซ์ , การวิเคราะห์แบบคงที่ , การใช้ ภาษาการเขียนโปรแกรม ที่ปลอดภัยต่อหน่วยความจำและการตรวจสอบโปรแกรมสามารถป้องกันการอ่านบัฟเฟอร์เกิน[ 6 ]ในขณะที่เทคนิคต่างๆ เช่นการทดสอบแบบฟัซซ์สามารถช่วยตรวจจับสิ่งเหล่านี้ได้

ตัวอย่างของการอ่านข้อมูลนอกขอบเขต

ตัวอย่างสำคัญทางประวัติศาสตร์ของการอ่านที่อยู่นอกขอบเขต ได้แก่:

  • Heartbleed (2012) เป็นบั๊กสำคัญในOpenSSLที่อนุญาตให้ไคลเอนต์อ่านจากหน่วยความจำตามอำเภอใจ[ 7 ]

การจัดหมวดหมู่

บริษัท Mitre Corporation (MITRE) จัดประเภทการอ่านนอกขอบเขตภายใต้Common Weakness Enumeration CWE-125 [ 1 ]โดยมีหมวดหมู่ย่อย CWE-126 (การอ่านเกินบัฟเฟอร์) [ 2 ]และ CWE-127 (การอ่านต่ำกว่าบัฟเฟอร์) [ 11 ]

MITRE ระบุรูปแบบการโจมตี ที่สอดคล้องกัน ภายใต้การแจงนับและการจำแนกประเภทรูปแบบการโจมตีทั่วไป "CAPEC-540: บัฟเฟอร์ที่อ่านเกิน" [ 12 ]การโจมตีนี้ถูกระบุว่ามีโอกาสเกิดการโจมตีต่ำ แต่มีความรุนแรงโดยทั่วไปสูงหากเกิดการโจมตีขึ้น

การบรรเทา

MITRE แนะนำว่าการอ่านบัฟเฟอร์เกินสามารถตรวจจับได้อย่างมีประสิทธิภาพด้วยการวิเคราะห์แบบคงที่ (โดยเฉพาะการทดสอบความปลอดภัยของแอปพลิเคชันแบบคงที่ ) และแนะนำว่าการวิเคราะห์แบบไดนามิก (เช่นAddressSanitizer ) มีประสิทธิภาพในการตรวจจับในระดับปานกลาง[ 2 ]

สำหรับจุดอ่อนหลักคือการอ่านข้อมูลนอกขอบเขต (CWE-125) MITRE แนะนำให้ตรวจสอบความถูกต้องของข้อมูล (เช่น ตรวจสอบว่าข้อมูลอยู่ในขอบเขต) รวมถึงการเลือกภาษาด้วย: "ใช้ภาษาที่ให้การจัดการหน่วยความจำที่เหมาะสม" [ 1 ]ดูเพิ่มเติมที่รายชื่อภาษาโปรแกรมตามประเภท#ภาษาตามประเภทการจัดการหน่วยความจำ การทดสอบแบบฟัซซิ่งยังถูกระบุว่าเป็นวิธีการตรวจจับที่มีประสิทธิภาพสูงอีกด้วย[ 1 ]

ดูเพิ่มเติม

  • เลือดออกในหัวใจ
  • บั๊ก PHP #66060: การอ่านบัฟเฟอร์ฮีปเกินใน DateInterval

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Out-of-bounds_read&oldid=1359383647 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อ่านนอกขอบเขต

ในด้าน ความปลอดภัย และการเขียนโปรแกรมคอมพิวเตอร์การอ่านนอกขอบเขตถือเป็นความผิดปกติของซอฟต์แวร์ที่โปรแกรม อ่าน ข้อมูลจากบัฟเฟอร์แต่กลับอ่าน ข้อมูล...

ตัวอย่างของการอ่านข้อมูลนอกขอบเขต

ตัวอย่างสำคัญทางประวัติศาสตร์ของการอ่านที่อยู่นอกขอบเขต ได้แก่:

การจัดหมวดหมู่

บริษัท Mitre Corporation (MITRE) จัดประเภทการอ่านนอกขอบเขตภายใต้ Common Weakness Enumeration CWE-125 [ 1 ] โดยมีหมวดหมู่ย่อย CWE-126 (การอ่านเกินบัฟเฟอร์) [ 2 ] และ CWE-127 (การอ่านต่ำกว่าบัฟเฟอร์) [ 11 ]

การบรรเทา

MITRE แนะนำว่าการอ่านบัฟเฟอร์เกินสามารถตรวจจับได้อย่างมีประสิทธิภาพด้วย การวิเคราะห์แบบคงที่ (โดยเฉพาะ การทดสอบความปลอดภัยของแอปพลิเคชันแบบคงที่ ) และแนะนำว่า การวิเคราะห์แบบไดนามิก (เช่น AddressSanitizer ) มีประสิทธิภาพในการตรวจจับในระดับปานกลาง [ 2 ]