ข่าว

mem-isolate: ผู้เชี่ยวชาญเตือนว่าความปลอดภัยของหน่วยความจำแบบ Fork มีข้อจำกัดที่สำคัญ
ชุมชน Rust กำลังอภิปรายเกี่ยวกับไลบรารี่ mem-isolate ที่เพิ่งเปิดตัว ซึ่งสัญญาว่าจะทำให้สามารถรันโค้ดที่ไม่ปลอดภัยได้อย่างปลอดภัยผ่านเทคนิคที่แยกการทำงานที่อาจเป็นอันตรายไว้ในโปรเซสที่แยกออกมา (forked processes) แม้ว่าแนวทางนี้จะชาญฉลาด แต่ผู้เชี่ยวชาญด้านความปลอดภัยและการเขียนโปรแกรมระบบได้แสดงความกังวลอย่างมากเกี่ยวกับข้อจำกัดและการใช้งานที่อาจผิดวัตถุประสงค์mem-isolate ทำงานโดยการประมวลผลฟังก์ชันในโปรเซสลูกที่แยกออกมา ซึ่งสร้างขึ้นผ่านคำสั่งระบบ POSIX fork() แนวทางนี้สร้างสำเนาของหน่วยความจำของโปรเซสหลัก ทำให้การดำเนินการที่ไม่ปลอดภัยสามารถทำงานได้โดยไม่ส่งผลกระทบต่อพื้นที่หน่วยความจำของโปรเซสต้นฉบับ เมื่อฟังก์ชันทำงานเสร็จ ผลลัพธ์จะถูกแปลงเป็นข้อมูลอนุกรม (serialized) กลับไปยังโปรเซสหลักผ่านท่อ (pipe) และโปรเซสลูกจะถูกยกเลิกข้อจำกัดด้านความปลอดภัยผู้เชี่ยวชาญด้านความปลอดภัยในชุมชนได้ชี้ให้เห็นว่า mem-isolate ไม่ได้ให้ระดับความปลอดภัยตามที่ชื่อบ่งบอก ไลบรารี่นี้ไม่เข้าเกณฑ์นิยามของโค้ดที่ปลอดภัยใน Rust ซึ่งต้องการการรับประกันความปลอดภัยของหน่วยความจำทั้งในเชิงพื้นที่ (spatial) และเวลา (temporal)ผมไม่คิดว่านี่เข้าเกณฑ์นิยามของความปลอดภัยใน safe Rust: ความปลอดภัยไม่ได้หมายถึงแค่จะไม่เกิดการล่มเนื่องจากข้อผิดพลาดของหน่วยความจำเชิงพื้นที่เท่านั้น แต่หมายถึงโค้ดนั้นต้องมีความปลอดภัยของหน่วยความจำทั้งในเชิงพื้นที่และเวลาด้วยจากมุมมองด้านความปลอดภัย การแยกที่จัดเตรียมไว้นั้นเป็นเพียงผิวเผิน โปรเซสที่ถูก fork ยังคงรักษาสำเนาสมบูรณ์ของสถานะโปรแกรม รวมถึงข้อมูลลับใดๆ ในหน่วยความจำ นั่นหมายความว่าโค้ดที่ไม่ปลอดภัยและสามารถถูกโจมตีได้ยังคงสามารถเข้าถึงข้อมูลที่ละเอียดอ่อนภายในสภาพแวดล้อมที่แยกออกมา นอกจากนี้ โปรเซสลูกยังคงมีสิทธิ์เดียวกันกับโปรเซสหลัก ดังนั้นช่องโหว่ในการประมวลผลโค้ดยังคงถูกโจมตีได้ข้อจำกัดหลักของ mem-isolate:ทำงานได้เฉพาะบนระบบ POSIX (Linux, macOS, BSD)เพิ่มภาระการทำงานประมาณ 1.9 มิลลิวินาทีต่อการเรียกฟังก์ชัน (เทียบกับ 1.5 นาโนวินาทีสำหรับการเรียกโดยตรง)ต้องมีการแปลงข้อมูลที่ส่งคืนระหว่างโปรเซสอาจเป็นอันตรายในแอปพลิเคชันแบบมัลติเธรดไม่สามารถป้องกันการโจมตีที่ไม่ทำให้เกิดการหยุดทำงานของระบบโปรเซสลูกมีสิทธิ์และการเข้าถึงหน่วยความจำเหมือนกับโปรเซสหลักอาจทำให้เกิดการติดตาย (deadlocks) หากมีการแยกโปรเซส (fork) ในขณะที่มิวเท็กซ์ถูกล็อคข้อกังวลทางเทคนิคเกี่ยวกับ Forkผู้เชี่ยวชาญด้านการเขียนโปรแกรมระบบได้เน้นย้ำว่า fork() เป็น API ที่มีปัญหาสำหรับกรณีการใช้งานนี้ โดยเฉพาะในแอปพลิเคชันแบบมัลติเธรด เมื่อโปรเซสทำการ fork สถานะหน่วยความจำทั้งหมดจะถูกทำซ้ำ รวมถึงสถานะของ mutex และล็อค หากเธรดใดกำลังถือล็อคในช่วงเวลาที่ทำการ fork โปรเซสลูกอาจประสบปัญหา deadlockแม้แต่การดำเนินการง่ายๆ เช่น การพิมพ์หรือการจัดสรรหน่วยความจำก็สามารถทำให้เกิดการค้างในโปรเซสที่ถูก fork บัฟเฟอร์ในพื้นที่ผู้ใช้ที่ไม่ได้ถูกล้าง (flush) ก่อนที่การเรียกกลับ (callback) จะเสร็จสิ้นจะสูญหายไป ปัญหาเหล่านี้ทำให้ mem-isolate อาจเป็นอันตรายในแอปพลิเคชันที่ซับซ้อนผลกระทบต่อประสิทธิภาพไลบรารี่นี้ทำให้เกิดค่าโสหุ้ยด้านประสิทธิภาพที่สำคัญ โดยการทดสอบประสิทธิภาพแสดงให้เห็นว่า execute_in_isolated_process() ใช้เวลาประมาณ 1.9 มิลลิวินาที เทียบกับ 1.5 นาโนวินาทีสำหรับการเรียกฟังก์ชันโดยตรง – ช้ากว่าเดิมมากกว่าหนึ่งล้านเท่า แม้ว่าผู้เขียนจะยอมรับข้อจำกัดนี้ด้วยคำพูดติดตลกเกี่ยวกับการรันโค้ดช้าลง 1 มิลลิวินาที สมาชิกในชุมชนชี้ให้เห็นว่าค่าโสหุ้ยนี้ทำให้ไลบรารี่ไม่สามารถใช้งานได้จริงในหลายกรณีนักพัฒนาหลายคนใช้โค้ดที่ไม่ปลอดภัยโดยเฉพาะสำหรับการปรับปรุงประสิทธิภาพ ดังนั้นการห่อหุ้มโค้ดดังกล่าวในกลไกที่ทำให้เกิดค่าโสหุ้ยที่สำคัญจึงทำลายวัตถุประสงค์เดิม ตามที่ผู้แสดงความคิดเห็นรายหนึ่งระบุ การใช้แนวทางนี้อย่างกว้างขวางอาจลดข้อได้เปรียบด้านประสิทธิภาพของ Rust เมื่อเทียบกับภาษาเช่น Python หรือ Ruby ที่พึ่งพาการ fork อย่างมากสำหรับการทำงานแบบขนานผลการทดสอบประสิทธิภาพ:การเรียกฟังก์ชันโดยตรง: ~1.5 นาโนวินาทีfork() + wait: ~1.7 มิลลิวินาทีexecute_in_isolated_process(): ~1.9 มิลลิวินาทีการประยุกต์ใช้งานจริงแม้จะมีข้อจำกัด นักพัฒนาบางคนเห็นคุณค่าใน mem-isolate สำหรับสถานการณ์เฉพาะ ไลบรารี่นี้อาจมีประโยชน์เมื่อทำงานกับโค้ดของบุคคลที่สามที่ไม่ปลอดภัยโดยธรรมชาติและไม่สามารถปรับปรุงได้ โดยเฉพาะอย่างยิ่งเมื่อเชื่อมต่อกับไลบรารี่ C ในกรณีเหล่านี้ การแยกที่จัดเตรียมไว้อาจเป็นการแลกเปลี่ยนที่ยอมรับได้สำหรับความปลอดภัยที่เพิ่มขึ้น โดยเฉพาะในเส้นทางที่ไม่สำคัญต่อประสิทธิภาพอย่างไรก็ตาม สำหรับแอปพลิเคชันส่วนใหญ่ ผู้เชี่ยวชาญแนะนำให้ใช้แนวทางการแยกที่แข็งแกร่งกว่า สถาปัตยกรรมแบบหลายโปรเซสที่ออกแบบอย่างเหมาะสมพร้อมช่องทาง IPC ที่จำกัดและ API การแซนด์บ็อกซ์ระดับระบบปฏิบัติการจะให้การรับประกันความปลอดภัยที่แข็งแกร่งกว่า เอนจินเบราว์เซอร์เช่น Chrome ใช้แนวทางนี้แทนการแยกโปรเซสอย่างง่ายการอภิปรายเกี่ยวกับ mem-isolate เน้นย้ำถึงความท้าทายที่ดำเนินอยู่ในการสร้างสมดุลระหว่างความปลอดภัย ประสิทธิภาพ และความสามารถในการใช้งานจริงในการเขียนโปรแกรมระบบ แม้ว่าแนวทางนวัตกรรมเพื่อความปลอดภัยของหน่วยความจำจะได้รับการต้อนรับในระบบนิเวศ Rust แต่จำเป็นต้องได้รับการประเมินอย่างรอบคอบเทียบกับแนวปฏิบัติที่ดีที่สุดและโมเดลความปลอดภัยที่ได้รับการยอมรับอ้างอิง: mem-isolate: Run unsafe code safely
ความปลอดภัย
5 ชั่วโมงที่ผ่านมา
โมเดล AI WHAMM ของ Microsoft ทำให้เกม Quake II ทำงานบนเบราว์เซอร์ด้วยกราฟิกแบบ Generative แบบเรียลไทม์
ปัญญาประดิษฐ์
6 ชั่วโมงที่ผ่านมา

มีรายงานว่า Ubisoft กำลังพัฒนาเกมกลยุทธ์แนว XCOM ที่ได้แรงบันดาลใจจาก Rainbow Six Siege
เกมคอนโซล
7 ชั่วโมงที่ผ่านมา

ฟอนต์ Sparks สร้างการแสดงข้อมูลภาพในข้อความ แต่จุดประเด็นถกเถียงเรื่องคำนิยาม
ปัญญาประดิษฐ์
11 ชั่วโมงที่ผ่านมา

ปลั๊กอิน Pytest.nvim ผสานการทดสอบโดยตรงใน Neovim พร้อมรองรับ Docker
11 ชั่วโมงที่ผ่านมา

ระบบ OCR สร้างความกังวลเกี่ยวกับความเสี่ยงการสร้างข้อมูลเท็จของ AI และการใช้ข้อมูลอย่างมีจริยธรรม
ปัญญาประดิษฐ์
11 ชั่วโมงที่ผ่านมา

uWrap: โซลูชั่นการตัดข้อความแบบเบาที่นักพัฒนาซอฟต์แวร์รอคอย
แอปพลิเคชัน
17 ชั่วโมงที่ผ่านมา

SpacetimeDB จุดประเด็นถกเถียงเรื่องการอนุญาตใช้งานฐานข้อมูลและการประยุกต์ใช้ในการพัฒนาเกม
เมื่อวาน

มีรายงานว่า Google Cloud อำนวยความสะดวกในการเฝ้าระวังชายแดนด้วย AI แม้เคยปฏิเสธมาก่อน
ปัญญาประดิษฐ์
เมื่อวาน

Dell เปิดตัวชุดสาย AlienFX ราคา 35 ดอลลาร์ เพื่อรองรับการใช้งานเมนบอร์ดจากผู้ผลิตรายอื่นกับ Alienware Area-51
เมนบอร์ด
เมื่อวาน

ราคา Nvidia RTX 5060 Ti หลุด: 8GB ราคา 399 ดอลลาร์สหรัฐ และ 16GB ราคา 499 ดอลลาร์สหรัฐ คาดเปิดตัว 16 เมษายน
การ์ดจอ
เมื่อวาน

อัปเดต Cold Fusion ของ Abiotic Factor นำระบบอัปเกรดใหม่และแก้ไขการโจมตีฐาน
เกมบน Steam
เมื่อวาน

สเปคและราคาของ Samsung Galaxy XCover 7 Pro รั่วไหล: สมาร์ทโฟนแกร่งระดับทหารกำลังจะเปิดตัวเดือนนี้
โทรศัพท์
เมื่อวาน

Ferron: เว็บเซิร์ฟเวอร์ใหม่ที่ปลอดภัยด้านหน่วยความจำเขียนด้วย Rust แสดงศักยภาพเทียบกับคู่แข่งที่มีชื่อเสียง
สตาร์ทอัพ
เมื่อวาน

อัปเดตล่าสุดของ Inzoi แก้ไขปัญหาหลักที่ผู้เล่นกังวล: ระยะเวลาการนอน พฤติกรรมการรับประทานอาหาร และการพัฒนาความสัมพันธ์
แอปพลิเคชัน
เมื่อวาน

บริการสมาชิก AI ใหม่ของ Garmin ล้มเหลวด้วยข้อมูลเชิงลึกทั่วไปและข้อผิดพลาดทางคณิตศาสตร์
ปัญญาประดิษฐ์
เมื่อวาน

Android 16 แนะนำการคอมไพล์บนคลาวด์เพื่อเร่งความเร็วในการติดตั้งแอป
แอปพลิเคชัน
เมื่อวาน

ร้านค้าปลีกเวียดนามสร้างเซิร์ฟเวอร์ AI ประสิทธิภาพสูงโดยใช้การ์ด RTX 5090 หลายตัวท่ามกลางภาวะขาดแคลนทั่วโลก
ฮาร์ดแวร์ AI
เมื่อวาน

เมื่อ Shell Scripts ซับซ้อนเกินไป: การถกเถียงเรื่อง Bash INI Parser
เมื่อวาน

Microsoft บล็อกส่วนขยาย C/C++ บน VSCode Forks รวมถึง Cursor
Microsoft
เมื่อวาน
