Skip to main content

สแต็กบัฟเฟอร์ล้นคืออะไร?

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

ชื่อจากสแต็กบัฟเฟอร์ล้นมาจากสแต็กซึ่งเป็นรายการที่ใช้งานได้อย่างมีประสิทธิภาพซึ่งข้อมูลถูกจัดระเบียบ: คำนี้มาจากการเปรียบเทียบของรายการทางกายภาพหนึ่งเวอร์ชันนี้คือ call stack, เป็นรายการที่โปรแกรมคอมพิวเตอร์ใช้เพื่อติดตามส่วนต่าง ๆ ของโปรแกรม, รูทีนย่อยที่ทำงานในช่วงเวลาใดก็ตามเนื่องจากสแต็กการโทรทำงานเป็นแบบชั่วคราวและจำเป็นต้องเข้าถึงได้อย่างรวดเร็วมันจะอยู่ในหน่วยความจำคอมพิวเตอร์แทนที่จะอยู่ในที่เก็บข้อมูลถาวรเช่นฮาร์ดไดรฟ์

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

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

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