GPU-Fuzz: ความก้าวหน้าใหม่ในการตรวจสอบความปลอดภัยหน่วยความจำ GPU ของเฟรมเวิร์กการเรียนรู้เชิงลึก พบช่องโหว่ที่ไม่รู้จัก 13 รายการ

GPU-Fuzz: ความก้าวหน้าใหม่ในการตรวจจับความปลอดภัยหน่วยความจำ GPU ในเฟรมเวิร์กการเรียนรู้เชิงลึก ค้นพบช่องโหว่ที่ไม่รู้จัก 13 รายการ (1/4)

คำสำคัญ: GPU-Fuzz, เฟรมเวิร์กการเรียนรู้เชิงลึก, ข้อผิดพลาดหน่วยความจำ, การทดสอบแบบฟัซซิ่ง, การแก้ไขข้อจำกัด

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

GPU-Fuzz: ความก้าวหน้าใหม่ในการตรวจสอบความปลอดภัยหน่วยความจำ GPU ของเฟรมเวิร์กการเรียนรู้เชิงลึก พบช่องโหว่ที่ไม่รู้จัก 13 รายการ

เพื่อแก้ไขช่องว่างทางเทคนิคนี้ บทความนี้ได้เสนอเครื่องมือทดสอบแบบฟัซซิ่ง GPU-Fuzz วิธีการนี้สร้างแบบจำลองกฎเชิงความหมายและข้อจำกัดด้านหน่วยความจำของโอเปอเรเตอร์การเรียนรู้เชิงลึกเป็นสูตรข้อจำกัดเชิงรูปนัย จากนั้นใช้ตัวแก้ปัญหา SMT Z3 เพื่อสร้างชุดทดสอบ และใช้กลยุทธ์การค้นหาที่ชี้นำโดยข้อจำกัดแบบวนซ้ำเพื่อสำรวจเงื่อนไขขอบเขตของพารามิเตอร์อย่างมีประสิทธิภาพ โดยการดำเนินการข้ามเฟรมเวิร์กและใช้เครื่องมือ NVIDIA Compute Sanitizer เพื่อตรวจจับข้อผิดพลาดหน่วยความจำได้อย่างแม่นยำ

ผลการทดลองแสดงให้เห็นว่า:
* GPU-Fuzz ค้นพบช่องโหว่ที่ไม่เคยรู้จักมาก่อน 13 รายการ ในเฟรมเวิร์กหลักสามรายการ ได้แก่ PyTorch, TensorFlow และ PaddlePaddle ซึ่งประกอบด้วยการละเมิดการเข้าถึงหน่วยความจำ 7 รายการ และปัญหาหน่วยความจำเสียหายแบบเงียบ 5 รายการ
* เมื่อเปรียบเทียบกับเครื่องมือหลักอย่าง NNSmith ในการทดสอบ 4 ชั่วโมง GPU-Fuzz สร้างชุดทดสอบได้มากกว่าเกือบ 3 เท่า และค้นพบข้อผิดพลาดหน่วยความจำระดับร้ายแรง 26±5 รายการ ในขณะที่ NNSmith ไม่พบปัญหาด้านความปลอดภัยของหน่วยความจำเลย

GPU-Fuzz: ความก้าวหน้าใหม่ในการตรวจสอบความปลอดภัยหน่วยความจำ GPU ของเฟรมเวิร์กการเรียนรู้เชิงลึก พบช่องโหว่ที่ไม่รู้จัก 13 รายการ
คำอธิบายภาพ: สรุปช่องโหว่ที่ GPU-Fuzz ค้นพบ ตารางนี้สรุปช่องโหว่ที่ไม่รู้จัก 13 รายการที่ GPU-Fuzz ค้นพบในเฟรมเวิร์กหลักสามรายการ ประกอบด้วยการละเมิดการเข้าถึงหน่วยความจำ 7 รายการ และช่องโหว่หน่วยความจำเสียหายแบบเงียบ 5 รายการ โอเปอเรเตอร์คอนโวลูชันแบบทรานสโพสมีช่องโหว่สูง สาเหตุหลักมักมาจากการคำนวณมิติกริดผิดพลาดและข้อบกพร่องในการตรวจสอบขอบเขต ช่องโหว่ครอบคลุมสามรูปแบบ: การเสียหายแบบเงียบ ข้อยกเว้น GPU และการยืนยันล้มเหลวใน CPU GPU-Fuzz สามารถค้นหาช่องโหว่ความปลอดภัยหน่วยความจำในเคอร์เนล CUDA ระดับล่างของเฟรมเวิร์กการเรียนรู้เชิงลึกหลักได้อย่างมีประสิทธิภาพ ซึ่งยืนยันความสามารถในการตรวจจับของเครื่องมือ

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

สารบัญ

  • หนึ่ง บทนำ
  • สอง พื้นหลังและแรงจูงใจ
    • 2.1 สถาปัตยกรรม GPU
    • 2.2 โอเปอเรเตอร์การเรียนรู้เชิงลึก
    • 2.3 แรงจูงใจ
  • สาม การออกแบบระบบ
    • 3.1 การสร้างแบบจำลองโอเปอเรเตอร์
    • 3.2 การสร้างชุดทดสอบโดยอิงจากข้อจำกัด
    • 3.3 การดำเนินการข้ามเฟรมเวิร์ก
  • สี่ การนำไปปฏิบัติ
  • ห้า การประเมินผล
    • 5.1 การตั้งค่าการทดลอง
    • 5.2 ผลการค้นพบช่องโหว่
    • 5.3 การศึกษาเปรียบเทียบ
    • 5.4 กรณีศึกษา
  • หก การอภิปราย
  • เจ็ด งานที่เกี่ยวข้อง
  • แปด การเปิดเผยข้อมูลอย่างรับผิดชอบ
  • เก้า สรุป

หนึ่ง บทนำ

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

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

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

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

ผลงานหลักของบทความนี้มีดังนี้:
1. เสนอวิธีการทดสอบแบบฟัซซิ่งใหม่ โดยการสำรวจพื้นที่พารามิเตอร์ของโอเปอเรเตอร์อย่างเป็นระบบเพื่อทดสอบข้อผิดพลาดหน่วยความจำ GPU มิติการวิจัยนี้เสริมกับเครื่องมือทดสอบแบบฟัซซิ่งสำหรับการเรียนรู้เชิงลึกที่มีอยู่
2. ออกแบบและนำระบบ GPU-Fuzz ไปปฏิบัติ ระบบนี้ใช้เทคนิคการแก้ไขข้อจำกัดเพื่อสร้างชุดทดสอบโดยอัตโนมัติ และสำรวจเงื่อนไขขอบเขตที่เกี่ยวข้องกับหน่วยความจำในเคอร์เนล CUDA ระดับล่าง
3. ค้นพบช่องโหว่ที่ไม่เคยรู้จักมาก่อน 13 รายการในเฟรมเวิร์กการเรียนรู้เชิงลึกหลัก เช่น PyTorch, TensorFlow และ PaddlePaddle ผ่าน GPU-Fuzz ซึ่งยืนยันประสิทธิภาพของเครื่องมือ

สอง พื้นหลังและแรงจูงใจ

2.1 สถาปัตยกรรม GPU

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

GPU-Fuzz: ความก้าวหน้าใหม่ในการตรวจสอบความปลอดภัยหน่วยความจำ GPU ของเฟรมเวิร์กการเรียนรู้เชิงลึก พบช่องโหว่ที่ไม่รู้จัก 13 รายการ

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

  • หน่วยความจำส่วนกลาง: พื้นที่หน่วยความจำความจุสูงที่ใช้ร่วมกันโดยทุกเธรด มักใช้สำหรับเก็บคำสั่งปฏิบัติการของเคอร์เนลและตัวแปรส่วนกลาง การวิจัยก่อนหน้านี้แสดงให้เห็นว่า GPU ไม่รองรับกลไกสิทธิ์การแยกการเขียนและการปฏิบัติการ (W⊕X) [10] ดังนั้น ช่องโหว่การเขียนเกินขอบเขตในหน่วยความจำส่วนกลางอาจถูกผู้โจมตีใช้เพื่อแก้ไขคำสั่งเคอร์เนลที่เก็บไว้ในพื้นที่นี้ ซึ่งจะเปลี่ยนตรรกะการดำเนินการที่คาดหวังของโปรแกรมโดยพื้นฐาน
  • หน่วยความจำท้องถิ่น: พื้นที่หน่วยความจำส่วนตัวเฉพาะสำหรับแต่ละเธรด ใช้สำหรับเก็บพารามิเตอร์ฟังก์ชัน ตัวแปรท้องถิ่น และที่อยู่ส่งคืนซึ่งเป็นข้อมูลโฟลว์การควบคุม การล้นบัฟเฟอร์สแต็กเป็นข้อผิดพลาดหน่วยความจำทั่วไปที่เขียนทับที่อยู่ส่งคืนที่บันทึกไว้ ช่องโหว่นี้เป็นพื้นฐานของการโจมตีแบบโปรแกรมมิ่งโดยใช้การส่งคืน (ROP ซึ่งเป็นเทคนิคการโจมตีโดยการต่อชิ้นส่วนโค้ดที่มีอยู่ในโปรแกรม) [10] ซึ่งผู้โจมตีสามารถใช้เพื่อยึดโฟลว์การควบคุมของเธรดและเบนการดำเนินการไปยังโค้ดที่เป็นอันตราย

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

2.2 โอเปอเรเตอร์การเรียนรู้เชิงลึก

เฟรมเวิร์กการเรียนรู้เชิงลึก เช่น PyTorch[22] และ TensorFlow[1] ถูกสร้างขึ้นบนพื้นฐานของชุดหน่วยคำนวณพื้นฐานที่หลากหลาย หน่วยเหล่านี้เรียกว่าโอเปอเรเตอร์ โอเปอเรเตอร์ เช่น คอนโวลูชัน, พูลลิง, การคูณเมทริกซ์, ฟังก์ชันกระตุ้น[3] เป็นโมดูลพื้นฐานสำหรับการสร้างโครงข่ายประสาทเทียม

ผู้ใช้สามารถเรียกใช้โอเปอเรเตอร์เหล่านี้ผ่านอินเทอร์เฟซ Python ระดับสูงที่เรียบง่าย แต่การนำไปปฏิบัติระดับล่างนั้นซับซ้อนอย่างยิ่ง: โอเปอเรเตอร์แต่ละตัวได้รับการสนับสนุนโดยโปรแกรมระดับล่างหนึ่งรายการขึ้นไป (คือเคอร์เนล[3]) ที่ได้รับการปรับให้เหมาะสมสูง ซึ่งจะถูกดำเนินการบน GPU

ดังที่แสดงในรูปที่ 2 การเรียกใช้โอเปอเรเตอร์ Python ระดับสูงจะถูกแปลงเป็นการดำเนินการเคอร์เนล CUDA ระดับล่าง และช่องโหว่เล็กน้อยในกระบวนการนำไปปฏิบัติสามารถทำให้เกิดข้อผิดพลาดหน่วยความจำประเภทต่างๆ ได้

GPU-Fuzz: ความก้าวหน้าใหม่ในการตรวจสอบความปลอดภัยหน่วยความจำ GPU ของเฟรมเวิร์กการเรียนรู้เชิงลึก พบช่องโหว่ที่ไม่รู้จัก 13 รายการ

พื้นที่พารามิเตอร์ของโอเปอเรเตอร์มีขนาดใหญ่มาก นี่เป็นสาเหตุหลักของความซับซ้อนในการนำไปปฏิบัติระดับล่าง ตัวอย่างเช่น โอเปอเรเตอร์คอนโวลูชัน[6] นอกเหนือจากเทนเซอร์อินพุตเองแล้ว ยังถูกควบคุมโดยพารามิเตอร์มากมาย เช่น ขนาดเคอร์เนล, สไตรด์, การแพด, อัตราการขยาย, การจัดกลุ่มแชนเนล พารามิเตอร์เหล่านี้ไม่ได้เป็นอิสระต่อกัน แต่ถูกจำกัดโดยชุดของกฎข้อจำกัดเชิงความหมายและคณิตศาสตร์ที่ซับซ้อน ซึ่งกำหนดวิธีการรวมพารามิเตอร์ที่ถูกต้องและกำหนดคุณลักษณะของเทนเซอร์เอาต์พุต เพื่อให้ได้ประสิทธิภาพสูงสุด นักพัฒนาเฟรมเวิร์กจะใช้ CUDA C++ ในการนำเคอร์เนลเหล่านี้ไปปฏิบัติด้วยตนเอง พร้อมกับใช้เทคนิคขั้นสูง เช่น การแบ่งบล็อกหน่วยความจำร่วม, การคำนวณพอยน์เตอร์ที่ซับซ้อน เพื่อเพิ่มปริมาณการถ่ายโอนข้อมูลให้สูงสุด[9] การปรับให้เหมาะสมด้วยตนเองที่มุ่งเน้นประสิทธิภาพนี้มักจะละทิ้งวิธีการเชิงนามธรรมระดับสูงที่ปลอดภัยกว่า ทำให้โค้ดเคอร์เนลกลายเป็นพื้นที่ที่มีช่องโหว่หน่วยความจำที่ซ่อนเร้นสูง – ข้อผิดพลาดประเภทนี้จะถูกกระตุ้นเฉพาะภายใต้การกำหนดค่าพารามิเตอร์เฉพาะ ซึ่งมักพบได้ยาก[12]

2.3 แรงจูงใจ

ช่องโหว่หน่วยความจำ GPU เป็นภัยคุกคามที่ร้ายแรงและซ่อนเร้นต่อความน่าเชื่อถือและความปลอดภัยของระบบปัญญาประดิษฐ์[20] ในแอปพลิเคชันงานสำคัญ เช่น การถ่ายภาพทางการแพทย์[24], การขับขี่อัตโนมัติ[14] ช่องโหว่ประเภทนี้อาจทำให้เกิดความล้มเหลวที่ร้ายแรงได้ ในขณะเดียวกัน มันอาจถูกใช้เพื่อดำเนินการโจมตีด้านความปลอดภัย[21,23]

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


⚠️ หมายเหตุ: เนื้อหาได้รับการแปลโดย AI และตรวจสอบโดยมนุษย์ หากมีข้อผิดพลาดโปรดแจ้ง

☕ สนับสนุนค่ากาแฟทีมงาน

หากคุณชอบบทความนี้ สามารถสนับสนุนเราได้ผ่าน PromptPay

PromptPay QR
SCAN TO PAY WITH ANY BANK

本文来自网络搜集,不代表คลื่นสร้างอนาคต立场,如有侵权,联系删除。转载请注明出处:http://www.itsolotime.com/th/archives/29339

Like (0)
Previous 5 hours ago
Next 4 hours ago

相关推荐