The Chromium Chronicle #5: การเขียนโค้ดนอกแซนด์บ็อกซ์

ตอนที่ 5: โดย Ade ในเมืองเมาน์เทนวิว รัฐแคลิฟอร์เนีย (สิงหาคม 2019)
ตอนก่อนหน้า

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

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

แผนภาพแซนด์บ็อกซ์

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

ในกระบวนการอื่นๆ ระบบจะจำกัดการเข้าถึงระบบปฏิบัติการผ่านข้อจำกัดเฉพาะแพลตฟอร์ม ดูข้อมูลเพิ่มเติมได้ในคู่มือการใช้งานแซนด์บ็อกซ์ของ Chrome

โปรดหลีกเลี่ยงข้อผิดพลาดที่พบบ่อยต่อไปนี้

กฎ 2 ข้อ

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


ควรทำ

โปรดใช้แนวทางปฏิบัติแนะนำต่อไปนี้แทน

  • โปรดระมัดระวังเป็นพิเศษหากโค้ดของคุณอยู่ในกระบวนการของเบราว์เซอร์
  • ตรวจสอบ IPC ทั้งหมดจากกระบวนการอื่น ให้สมมติว่ากระบวนการอื่นๆ ทั้งหมดถูกบุกรุก แล้วเพื่อหลอกคุณ
  • ประมวลผลในกระบวนการแสดงผลหรือยูทิลิตี หรือการประมวลผลแบบแซนด์บ็อกซ์อื่นๆ หากเป็นไปได้ ให้ใช้ภาษาที่ประหยัดหน่วยความจำ เช่น JavaScript (แก้ไขข้อบกพร่องด้านความปลอดภัยได้มากกว่า 50%)

เราใช้งานสแต็กเครือข่าย (เช่น HTTP, DNS, QUIC) ในกระบวนการของเบราว์เซอร์เป็นเวลาหลายปี ซึ่งทำให้มีช่องโหว่ร้ายแรงบางอย่าง ในบางแพลตฟอร์ม เครือข่ายจะมีกระบวนการของตนเอง โดยจะเริ่มใช้แซนด์บ็อกซ์

แหล่งข้อมูลเพิ่มเติม

  • กฎข้อ 2 ของ Chromium: ข้อมูลที่ไม่ปลอดภัยไม่เกิน 2 รายการ โค้ดที่ไม่ปลอดภัย และกระบวนการที่ไม่ปลอดภัย
  • การตรวจสอบข้อมูล IPC: คำแนะนำเกี่ยวกับวิธีตรวจสอบว่า IPC จากกระบวนการแสดงผลไม่ได้เต็มไปด้วย Fib และการสื่อให้เข้าใจผิด