เมื่อไม่กี่วันที่ผ่านมาเกิดเหตุการณ์ผิดปกติที่สร้างความตกใจให้กับชุมชนเคอร์เนลลินุกซ์: ลินัส ทอร์วัลด์ส สั่งบล็อกบัญชีของคีส์ คุก บน kernel.org ทันทีหลังจากตรวจพบการแก้ไขดัดแปลงในที่เก็บ Git ของนักพัฒนารายนี้
Kees Cook ซึ่งได้รับการยกย่องในด้านความเป็นผู้นำในทีมรักษาความปลอดภัยของ Ubuntu และการดูแลระบบย่อยมากกว่าสิบระบบที่เกี่ยวข้องกับความปลอดภัยของเคอร์เนลถูกสั่งห้ามชั่วคราวไม่ให้ส่งการเปลี่ยนแปลงใดๆ ในระหว่างที่กำลังตรวจสอบข้อเท็จจริงให้ชัดเจน
การเปลี่ยนแปลงผู้ประพันธ์และลายเซ็นในคลังข้อมูล Kees Cook
ปัญหาเกิดขึ้นจากคำขอให้รวมการเปลี่ยนแปลงเข้ากับสาขาเคอร์เนล 6.16 ซึ่ง Linus ตรวจพบการอ้างอิงถึงที่เก็บข้อมูลที่มีการดัดแปลงคอมมิตโดยมีชื่อของเขาเป็นผู้เขียนและผู้ยืนยัน ทั้งๆ ที่เขาไม่ได้เป็นผู้ทำการเปลี่ยนแปลงเหล่านั้นตัวอย่างที่ร้ายแรงที่สุดอย่างหนึ่งคือการมีคอมมิตซ้ำซ้อน ซึ่งมีเนื้อหาเหมือนกับต้นฉบับทุกประการ แต่มีค่าแฮช SHA1 ที่แตกต่างกัน ซึ่งทำให้มีลายเซ็นของ Linus Torvalds ปรากฏอยู่โดยไม่ถูกต้อง
การเปลี่ยนแปลงเหล่านี้ไม่สามารถอธิบายได้ง่ายๆ ว่าเป็นแค่ความผิดพลาดโดยบังเอิญระหว่างการดำเนินการ git rebase เนื่องจากเกี่ยวข้องกับการแก้ไขข้อมูลที่สำคัญจำนวนมาก รวมถึงการเขียน commit ใหม่มากกว่า 6.000 รายการ ซึ่ง 330 รายการมีชื่อของ Linus เป็นผู้เขียน
ปฏิกิริยาของทอร์วัลด์: ความสงสัยถึงการจัดการที่จงใจ
ลินัส ทอร์วัลด์ส ไม่ได้ปิดบังความกังวลของเขาและอธิบายเหตุการณ์ดังกล่าวว่าอาจเป็นการกระทำที่มีเจตนาร้าย:
“การเขียนใหม่หนึ่งหรือสองครั้งอาจผิดพลาดได้ แต่การเขียนใหม่หลายพันครั้ง ซึ่งหลายครั้งมีลายเซ็นปลอมของฉันด้วยนั้นไม่ใช่ความผิดพลาด” เขากล่าว
เนื่องจากขนาดของการเปลี่ยนแปลงและความเสี่ยงต่อความสมบูรณ์ของโครงสร้างเคอร์เนลอย่างเป็นทางการTorvalds จึงขอให้ Konstantin Ryabitsevผู้ดูแลระบบโครงสร้างพื้นฐานของ kernel.org บล็อกการเข้าถึงของ Kees Cook จนกว่าสถานการณ์จะชัดเจน
ในการตอบสนองคีส์ คุก ชี้แจงว่าเมื่อเร็ว ๆ นี้เขาประสบปัญหาทางเทคนิคซึ่งอาจเป็นสาเหตุของเหตุการณ์ดังกล่าว เขาระบุว่าSSD ของเขาทำงานผิดปกติระหว่างการคัดลอกข้อมูล ซึ่งส่งผลให้ข้อมูลในหลายๆ repository เสียหาย หลังจากเกิดข้อผิดพลาดเหล่านี้ เขาพยายามกู้คืนสถานะของ repository โดยใช้คำสั่ง `git rebase` และเครื่องมืออัตโนมัติต่างๆ
อย่างไรก็ตาม การดำเนินการเหล่านี้เกิดขึ้นกับสาขาที่สำคัญเช่น for-next/hardening และ for-linus/hardening ซึ่งนำไปสู่การแก้ไขประวัติของที่เก็บข้อมูลโดยไม่ได้ตั้งใจ รวมถึงการเปลี่ยนแปลงผู้เขียนคอมมิตแม้จะมีการอธิบายแล้ว แต่ Linus ก็ยังคงไม่เชื่อ
"ผมไม่เข้าใจว่าการแซงโดยไม่ได้ตั้งใจสามารถเกิดขึ้นได้อย่างไร ยิ่งไม่ต้องพูดถึงการเปลี่ยนแปลงมากมายขนาดนี้"
ผู้ร้ายตัวจริง: git-filter-repo และ b4 trailers
ในข้อความต่อมาKees Cook ได้ระบุแหล่งที่มาของข้อผิดพลาดที่น่าจะเป็นไปได้นั่นคือ การใช้งานเครื่องมือสองตัวร่วมกัน ได้แก่git-filter-repo และ b4 trailers ซึ่งจะทำการแก้ไขประวัติการคอมมิตและส่วนท้าย (ป้ายกำกับ เช่น Signed-off-by:) ในการคอมมิต
การใช้ ยูทิลิตี้ในทางที่ผิดนี้จะทำให้เกิดการเขียนทับข้อมูลใน commit นับพันรายการโดยอัตโนมัติรวมถึงการแทนที่ชื่อผู้เขียนด้วยค่าเริ่มต้น (ในกรณีนี้คือ Linus Torvalds) โดยที่ Kees ไม่ได้สังเกตเห็นข้อผิดพลาดในขณะนั้น Konstantin Ryabitsev ผู้เขียนเครื่องมือ b4 ยืนยันถึงทฤษฎีนี้และยืนยันว่า Cook ไม่ได้มีเจตนาร้ายแต่อย่างใด อันที่จริง ระบบได้สร้างคำเตือนอยู่แล้ว แต่ก็ถูกละเลยไป
หลังจากสถานการณ์คลี่คลายลง การเข้าถึง kernel.org ของ Kees Cook ก็ได้รับการคืนสถานะแล้วเพื่อเป็นการป้องกันไว้ก่อน มีการประกาศว่าเครื่องมือ b4 จะมีการตรวจสอบความปลอดภัยแบบใหม่ซึ่งจะป้องกันการแก้ไขคอมมิตที่มีผู้เขียนไม่ตรงกับตัวตนของผู้ใช้ปัจจุบัน จุดประสงค์คือเพื่อป้องกันข้อผิดพลาดที่คล้ายกันและปกป้องความสมบูรณ์ของซอร์สโค้ดเคอร์เนล
ด้านคีส์เองก็ให้คำมั่นว่าจะสร้างสาขาที่ได้รับผลกระทบขึ้นใหม่จากแพตช์แต่ละส่วน และวิเคราะห์ขั้นตอนที่นำไปสู่ข้อผิดพลาดอย่างละเอียดถี่ถ้วน แม้ว่าเหตุการณ์นี้จะทำให้ความสัมพันธ์ภายในทีมพัฒนาเคอร์เนลตึงเครียด แต่ก็ยังเน้นย้ำถึงความสำคัญของการใช้เครื่องมือแก้ไขประวัติอย่างระมัดระวัง โดยเฉพาะอย่างยิ่งในโครงการที่สำคัญอย่างเคอร์เนลลินุกซ์
สุดท้ายนี้ ควรกล่าวถึงว่าเหตุการณ์ระหว่าง Linus Torvalds และ Kees Cook นี้เป็นเครื่องเตือนใจถึงอันตรายของการแก้ไขประวัติการคอมมิต และด้วยการเข้าแทรกแซงอย่างรวดเร็วของทีม kernel.org และความโปร่งใสของกระบวนการทำให้สถานการณ์อยู่ภายใต้การควบคุมได้
สุดท้ายนี้ หากคุณสนใจเรียนรู้เพิ่มเติม สามารถดูรายละเอียดได้ที่ลิงก์ ต่อไปนี้