อ่าน 3 นาที
การเรียกใช้โค้ดตามอำเภอใจ
ในด้าน ความปลอดภัย ทางคอมพิวเตอร์การเรียกใช้โค้ดโดยพลการ ( ACE ) คือความสามารถของผู้โจมตีในการเรียกใช้คำสั่งหรือโค้ดใดๆ
การเรียกใช้โค้ดตามอำเภอใจ
ในด้าน ความปลอดภัย ทางคอมพิวเตอร์การเรียกใช้โค้ดโดยพลการ ( ACE ) คือความสามารถของผู้โจมตีในการเรียกใช้คำสั่งหรือโค้ดใดๆ ตามที่ผู้โจมตีเลือกบนเครื่องเป้าหมายหรือในกระบวนการเป้าหมาย[ 1 ]ช่องโหว่การเรียกใช้โค้ดโดยพลการคือข้อบกพร่องด้านความปลอดภัยในซอฟต์แวร์หรือฮาร์ดแวร์ที่อนุญาตให้เรียกใช้โค้ดโดยพลการ โปรแกรมที่ออกแบบมาเพื่อใช้ประโยชน์ จากช่องโหว่ดังกล่าวเรียกว่าการโจมตี การเรียกใช้โค้ดโดยพลการ ความสามารถในการเรียกใช้โค้ดโดยพลการผ่านเครือข่าย (โดยเฉพาะอย่างยิ่งผ่านเครือข่ายบริเวณกว้าง เช่น อินเทอร์เน็ต) มักเรียกว่าการเรียกใช้โค้ดจากระยะไกล ( RCEหรือRCX )
การเรียกใช้โค้ดตามอำเภอใจหมายความว่า หากมีคนส่งชุดข้อมูลที่ออกแบบมาเป็นพิเศษไปยังคอมพิวเตอร์ พวกเขาสามารถทำให้คอมพิวเตอร์ทำอะไรก็ได้ตามที่ต้องการ แม้ว่าจุดอ่อนเฉพาะนี้อาจไม่ก่อให้เกิดปัญหาจริงในโลกแห่งความเป็นจริง นักวิจัยได้หารือกันว่ามันบ่งชี้ถึงแนวโน้มตามธรรมชาติของคอมพิวเตอร์ที่จะมีช่องโหว่ที่อนุญาตให้เรียกใช้โค้ดโดยไม่ได้รับอนุญาตหรือไม่[ 2 ]
ประเภทของช่องโหว่
มีช่องโหว่หลายประเภทที่อาจทำให้ผู้โจมตีสามารถเรียกใช้คำสั่งหรือโค้ดใดๆ ก็ได้ตามอำเภอใจ ตัวอย่างเช่น:
- ช่องโหว่ด้าน ความปลอดภัยของหน่วยความจำเช่นบัฟเฟอร์โอเวอร์โฟลว์หรือการอ่านข้อมูลเกินขอบเขต
- ช่องโหว่การดีซีเรียไลเซชัน[ 3 ]
- ช่องโหว่ความสับสนประเภท[ 4 ] [ 5 ]
- การเรียกใช้โค้ดตามอำเภอใจของ GNU ldd [ 6 ]
วิธีการ
การเรียกใช้โค้ดตามอำเภอใจมักทำได้โดยการควบคุมตัวชี้คำสั่ง (เช่น การกระโดดหรือการแตกสาขา ) ของกระบวนการ ที่กำลังทำงานอยู่ ตัวชี้คำสั่งชี้ไปยังคำสั่งถัดไปในกระบวนการที่จะถูกเรียกใช้ ดังนั้นการควบคุมค่าของตัวชี้คำสั่งจึงทำให้สามารถควบคุมได้ว่าคำสั่งใดจะถูกเรียกใช้ต่อไป เพื่อให้สามารถเรียกใช้โค้ดตามอำเภอใจได้ การโจมตีหลายๆ ครั้งจะแทรกโค้ดเข้าไปในกระบวนการ (ตัวอย่างเช่น โดยการส่งอินพุตเข้าไปซึ่งจะถูกเก็บไว้ในบัฟเฟอร์อินพุตในRAM ) และใช้ช่องโหว่เพื่อเปลี่ยนตัวชี้คำสั่งให้ชี้ไปยังโค้ดที่แทรกเข้าไป จากนั้นโค้ดที่แทรกเข้าไปจะถูกเรียกใช้โดยอัตโนมัติ การโจมตีประเภทนี้ใช้ประโยชน์จากข้อเท็จจริงที่ว่าคอมพิวเตอร์ส่วนใหญ่ (ซึ่งใช้สถาปัตยกรรม Von Neumann ) ไม่ได้แยกความแตกต่างระหว่างโค้ดและข้อมูล โดยทั่วไป [ 7 ] [ 8 ] ดังนั้นโค้ดที่เป็นอันตรายจึงสามารถปลอมแปลงเป็นข้อมูลอินพุตที่ไม่เป็นอันตราย ได้ CPU รุ่นใหม่ๆ หลายตัวมีกลไกที่ทำให้เรื่องนี้ยากขึ้น เช่น บิต ห้ามเรียกใช้ [ 9 ] [ 10 ]
เมื่อรวมกับการยกระดับสิทธิ์
โดยตัวมันเอง การโจมตีโดยการเรียกใช้โค้ดโดยพลการจะทำให้ผู้โจมตีได้รับสิทธิ์ เช่นเดียว กับกระบวนการเป้าหมายที่อ่อนแอ[ 11 ]ตัวอย่างเช่น หากใช้ประโยชน์จากข้อบกพร่องในเว็บเบราว์เซอร์ผู้โจมตีสามารถกระทำการในฐานะผู้ใช้ โดยดำเนินการต่างๆ เช่น การแก้ไขไฟล์คอมพิวเตอร์ส่วนบุคคลหรือการเข้าถึงข้อมูลธนาคาร แต่จะไม่สามารถดำเนินการในระดับระบบได้ (เว้นแต่ผู้ใช้ดังกล่าวจะมีสิทธิ์เข้าถึงนั้นด้วย)
เพื่อแก้ไขปัญหานี้ เมื่อผู้โจมตีสามารถเรียกใช้โค้ดใดๆ บนเป้าหมายได้แล้ว มักจะมีการพยายาม ใช้ช่องโหว่ การยกระดับสิทธิ์เพื่อควบคุมระบบเพิ่มเติม ซึ่งอาจเกี่ยวข้องกับเคอร์เนลเองหรือบัญชีผู้ใช้ เช่น Administrator, SYSTEM หรือ root ไม่ว่าจะมีหรือไม่มีการควบคุมที่เพิ่มขึ้นนี้ ช่องโหว่ก็มีศักยภาพที่จะสร้างความเสียหายร้ายแรงหรือเปลี่ยนคอมพิวเตอร์ให้กลายเป็นซอมบี้ได้ แต่การยกระดับสิทธิ์จะช่วยซ่อนการโจมตีจากผู้ดูแลระบบที่ถูกต้องได้
ตัวอย่าง
นักเล่นเกม ย้อนยุคได้ค้นพบช่องโหว่ในวิดีโอเกมคลาสสิกที่ทำให้พวกเขาสามารถเรียกใช้โค้ดตามอำเภอใจได้ โดยปกติจะใช้ลำดับการกดปุ่มที่แม่นยำในการเล่นขั้นสูงโดยใช้เครื่องมือช่วยเพื่อทำให้เกิดบัฟเฟอร์โอเวอร์โฟลว์ทำให้พวกเขาสามารถเขียนลงในหน่วยความจำที่ได้รับการป้องกันได้ในงานAwesome Games Done Quick 2014 กลุ่มนักวิ่งเร็วได้เขียนโค้ดและเรียกใช้เกมPong , SnakeและSuper Mario Bros. เวอร์ชันต่างๆ บนสำเนาของSuper Mario World [ 12 ]โดยใช้การอ่านนอกขอบเขตของตัวชี้ฟังก์ชันที่ชี้ไปยังบัฟเฟอร์ที่ผู้ใช้ควบคุมเพื่อเรียกใช้โค้ดตามอำเภอใจ
เมื่อวันที่ 1 พฤษภาคม 2561 นักวิจัยด้านความปลอดภัยได้ค้นพบช่องโหว่ ACE ในโปรแกรมบีบอัดไฟล์7-Zip [ 13 ]
เมื่อวันที่ 12 มิถุนายน 2018 Jean-Yves Avenard นักวิจัยด้านความปลอดภัยชาวบอสเนียจากMozillaค้นพบช่องโหว่ ACE ในWindows 10 [ 14 ]
PHPตกเป็นเป้าหมายของช่องโหว่ ACE จำนวนมาก[ 15 ] [ 16 ] [ 17 ]
เมื่อวันที่ 9 ธันวาคม พ.ศ. 2564 ช่องโหว่ RCE ที่เรียกว่า " Log4Shell " ถูกค้นพบในเฟรมเวิร์กการบันทึกข้อมูล ยอดนิยม Log4jซึ่งส่งผลกระทบต่อบริการต่างๆ มากมาย รวมถึงiCloud , Minecraft: Java EditionและSteamและถูกระบุว่าเป็น "ช่องโหว่ที่ใหญ่ที่สุดและร้ายแรงที่สุดในรอบทศวรรษที่ผ่านมา" [ 18 ] [ 19 ]
ดูเพิ่มเติม
อ่านเพิ่มเติม
- Sommestad, Teodor; Holm, Hannes; Ekstedt, Mathias (มิถุนายน 2012). "การประมาณอัตราความสำเร็จของการโจมตีการเรียกใช้โค้ดโดยพลการจากระยะไกล" การจัดการข้อมูลและความปลอดภัยคอมพิวเตอร์ 20 ( 2): 107– 122. doi : 10.1108/09685221211235625 .
- Sun, Enbo; Han, Jiaxuan; Li, Yiquan; Huang, Cheng (2 กรกฎาคม 2024). "แบบจำลองการตรวจจับเพย์โหลดการโจมตีการเรียกใช้โค้ดระยะไกลที่เน้นเนื้อหาแพ็กเก็ต"อินเทอร์เน็ตแห่งอนาคต 16 ( 7): 235. doi : 10.3390/fi16070235 .
- Jancewicz, Russell J.; Kiayias, Aggelos; Michel, Laurent D.; Russell, Alexander C.; Shvartsman, Alexander A. (2013). "การเข้าควบคุมระบบการลงคะแนนอย่างมุ่งร้าย: การเรียกใช้โค้ดตามอำเภอใจบนเครื่องลงคะแนนแบบสแกนด้วยแสง". รายงานการประชุมสัมมนาประจำปีครั้งที่ 28 ของ ACM ว่าด้วยการประยุกต์ใช้คอมพิวเตอร์หน้า 1816–1823 . doi : 10.1145/2480362.2480702 . ISBN 978-1-4503-1656-9.
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ การเรียกใช้โค้ดตามอำเภอใจ
ในด้าน ความปลอดภัย ทางคอมพิวเตอร์การเรียกใช้โค้ดโดยพลการ ( ACE ) คือความสามารถของผู้โจมตีในการเรียกใช้คำสั่งหรือโค้ดใดๆ
ประเภทของช่องโหว่
มีช่องโหว่หลายประเภทที่อาจทำให้ผู้โจมตีสามารถเรียกใช้คำสั่งหรือโค้ดใดๆ ก็ได้ตามอำเภอใจ ตัวอย่างเช่น:
วิธีการ
การเรียกใช้โค้ดตามอำเภอใจมักทำได้โดยการควบคุมตัว ชี้คำสั่ง (เช่น การกระโดดหรือการ แตกสาขา ) ของ กระบวนการ ที่กำลังทำงานอยู่ ตัวชี้คำสั่งชี้ไปยังคำสั่งถัดไปในกระบวนการที่จะถูกเรียกใช้...
เมื่อรวมกับการยกระดับสิทธิ์
โดยตัวมันเอง การโจมตีโดยการเรียกใช้โค้ดโดยพลการจะทำให้ผู้โจมตีได้ รับสิทธิ์ เช่นเดียว กับกระบวนการเป้าหมายที่อ่อนแอ [ 11 ] ตัวอย่างเช่น หากใช้ประโยชน์จากข้อบกพร่องใน เว็บเบราว์เซอร์ ผู้โจมตีสามารถกระทำการในฐานะผู้ใช้ โดยดำเนินการต่างๆ เช่น...