- พบปัญหาความปลอดภัยร้ายแรงที่ StarDict ส่งข้อความที่ผู้ใช้เลือกในสภาพแวดล้อม X11 ไปยังเซิร์ฟเวอร์ภายนอกผ่าน HTTP ที่ไม่เข้ารหัส
- ปัญหานี้เกิดขึ้นเพราะปลั๊กอิน YouDao และ dict.cn ถูกเปิดใช้งานเป็นค่าเริ่มต้นในการตั้งค่ามาตรฐานของ Debian
- ฟังก์ชันนี้หมายความว่า เมื่อผู้ใช้เลือกข้อความใด ๆ ระบบจะส่งไปยังเซิร์ฟเวอร์โดยอัตโนมัติ ทำให้มีความเสี่ยงที่ข้อมูลอ่อนไหวจะรั่วไหล
- ผู้ดูแลแพ็กเกจได้พิจารณาข้อเสนอให้ปิดฟังก์ชันนี้และแยกปลั๊กอินออก แต่การแก้ปัญหาที่ต้นตอยังไม่เพียงพอ
- ปัญหานี้เคยถูกหยิบยกขึ้นมาหลายครั้งในอดีต และย้ำให้เห็นอีกครั้งถึงการขาดการตอบสนองอย่างสมบูรณ์และความสำคัญของความตระหนักด้านความปลอดภัย
ภาพรวมการทำงานและประเด็นด้านความปลอดภัยของ StarDict
- StarDict เป็นโปรแกรมพจนานุกรมข้ามแพลตฟอร์มภายใต้สัญญาอนุญาต GPLv3 ที่รองรับหลายภาษาและมีระบบนิเวศของปลั๊กอิน
- ในการตั้งค่าเริ่มต้นของ Debian เมื่อเรียกใช้ StarDict ข้อความที่ผู้ใช้เลือกจะถูกส่งไปยังเซิร์ฟเวอร์ระยะไกลสองแห่งคือ youdao.com และ dict.cn ผ่าน HTTP ที่ไม่เข้ารหัส
- ปัญหานี้ถูกรายงานไปยังทั้ง oss-security mailing list และตัวติดตามบั๊กของ Debian
รายละเอียดของปัญหา
- ตามการออกแบบของ StarDict โค้ดที่สื่อสารกับเว็บไซต์พจนานุกรมถือเป็นองค์ประกอบที่พอเข้าใจได้ แต่ฟังก์ชัน "สแกน" ถูกเปิดไว้เป็นค่าเริ่มต้น
- นั่นหมายความว่าเมื่อผู้ใช้เลือกข้อความด้วยเมาส์ ระบบจะเปิดป๊อปอัปแปลโดยอัตโนมัติ และข้อความนั้นจะถูกส่งไปยังเซิร์ฟเวอร์ภายนอกโดยอัตโนมัติ
- ปัญหาจะร้ายแรงเป็นพิเศษเมื่อผู้ใช้เปิดให้ StarDict ทำงานอยู่เบื้องหลังตลอดเวลา
ความแตกต่างตามสภาพแวดล้อม Linux
- ในสภาพแวดล้อม Wayland StarDict ไม่สามารถจับข้อความจากแอปพลิเคชันอื่นได้ ทำให้ฟังก์ชันสแกนไม่ทำงานและไม่เกิดปัญหาด้านความปลอดภัยนี้
- ปัญหานี้ยังคงมีอยู่เฉพาะในสภาพแวดล้อม X11 แบบเดิมเท่านั้น
ปฏิกิริยาของ Debian และนักพัฒนา StarDict
- ผู้ดูแลแพ็กเกจ Debian Xiao Sheng Wen มองว่าไม่ใช่ปัญหาใหญ่ โดยระบุว่า
"สามารถปิดฟังก์ชันสแกนและปลั๊กอิน YouDao ได้" - อย่างไรก็ตาม ผู้รายงาน Vincent Lefevre ชี้ว่า "ฟังก์ชันที่เกี่ยวข้องกับความเป็นส่วนตัวต้องถูกปิดไว้เป็นค่าเริ่มต้น"
- แม้จะสามารถแจ้งฟังก์ชันนี้ผ่านคำอธิบายแพ็กเกจได้ แต่คำอธิบายของ stardict-plugin ไม่ได้กล่าวถึงการใช้พจนานุกรมออนไลน์
- มีข้อเสนอเพื่อปรับปรุง เช่น การแยกปลั๊กอินออก แต่ยังไม่มีมาตรการทันที
ความสะดวกของฟังก์ชันกับความกังวลด้านความปลอดภัย
- ฟังก์ชันสแกนเป็นจุดเด่นสำคัญของ StarDict เมื่อผู้ใช้ต้องการเปิดพจนานุกรมอย่างรวดเร็วขณะอ่านภาษาต่างประเทศ
- แต่ผู้ใช้ยากจะคาดคิดได้ว่าการสื่อสารดังกล่าวไม่ได้เข้ารหัส และบุคคลใดก็ตามระหว่างทางอาจทำให้ข้อความอ่อนไหวรั่วไหลได้
เหตุการณ์ด้านความปลอดภัยลักษณะคล้ายกันในอดีตและการรับมือ
- ในปี 2009 และ 2015 ก็เคยมีการรายงานกรณีลักษณะคล้ายกัน
- ปี 2009: มีการตั้งค่าให้ปิดพจนานุกรมเครือข่ายเป็นค่าเริ่มต้นอยู่ช่วงหนึ่ง
- แต่ปลั๊กอิน YouDao ที่เพิ่มเข้ามาในปี 2016 เพิกเฉยต่อการตั้งค่านั้น
- ปัญหาในปี 2015 เพิ่งได้รับการแก้ไขในปี 2025 ในรูปแบบของการถอดปลั๊กอินออก
- สะท้อนให้เห็นถึงการเกิดซ้ำของปัญหาและความล่าช้าในการรับมือ รวมถึงการเปลี่ยนผู้ดูแลและการจัดลำดับความสำคัญที่ไม่ดีซึ่งเกิดขึ้นซ้ำแล้วซ้ำเล่า
ขนาดฐานผู้ใช้และผลกระทบด้านความปลอดภัย
- ตามสถิติของ Debian ปัจจุบันมีผู้ติดตั้งและใช้งาน StarDict ราว 178 คน เท่านั้น แต่เมื่อคำนึงถึงระบบที่ไม่ได้เข้าร่วมการเก็บสถิติ ก็เป็นไปได้ว่าตลอดหลายปีที่ผ่านมา มีผู้ใช้จำนวนมากเผชิญกับความเสี่ยงที่ข้อความจะรั่วไหล
- การคัดลอกรหัสผ่าน อีเมลที่อ่อนไหว หรือข้อความที่เลือกขณะกำลังแก้ไขเอกสาร อาจถูกเปิดเผยออกสู่ภายนอกได้โดยตรง
ระบบนิเวศโอเพนซอร์สและวาระด้านความปลอดภัย
- ดิสทริบิวชันขนาดใหญ่อย่าง Debian ต้องดูแลแพ็กเกจจำนวนมหาศาล ทำให้การพลาดอัปเดตและซอฟต์แวร์ที่ล้าสมัยเกิดขึ้นบ่อย
- กฎของ Linus ที่ว่า "ถ้ามีคนดูมากพอ บั๊กก็จะตื้น" จะเกิดขึ้นได้จริงก็ต่อเมื่อมีคนพบบั๊ก รายงานบั๊ก และผู้ดูแลยอมรับว่าเป็นปัญหาก่อนจะลงมือแก้ไข
การเปลี่ยนผ่านจาก X11 ไปสู่ Wayland
- การนำ Wayland มาใช้มีเป้าหมายเพื่อลดความเป็นไปได้ของช่องโหว่ความปลอดภัยประเภทนี้ โดยเฉพาะการรั่วไหลของข้อมูลระหว่างแอปพลิเคชัน
- อย่างไรก็ตาม ความไม่สะดวกด้านการใช้งานและแนวทางใหม่ในการจัดการสิทธิ์การเข้าถึงก็ยังเป็นโจทย์ที่ต้องรับมือ
บทสรุปและนัยสำคัญ
- ความจริงที่ว่าปัญหาความปลอดภัยที่ถูกค้นพบ วิเคราะห์ และรายงานแล้ว ยังคงไม่ได้รับการแก้ไขหรือกลับมาเกิดซ้ำ เป็นเรื่องน่ากังวล
- หากต้องการรักษาชื่อเสียงด้านความปลอดภัยของ Linux จำเป็นอย่างยิ่งที่นักพัฒนาโอเพนซอร์ส ผู้ดูแลแพ็กเกจ และผู้ใช้จะต้องตระหนักถึงปัญหาอย่างต่อเนื่องและตอบสนองอย่างรวดเร็ว
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
อย่างที่ Xiao ชี้ไว้ ผู้ใช้ที่ติดตั้งซอฟต์แวร์สามารถอ่านคำอธิบายแพ็กเกจได้ และมีการพูดถึงฟังก์ชันสแกนไว้จริง แต่ผู้ดูแล Debian ก็มักตอบรายงานบั๊กในทำนองว่า “ต้องอ่านคำอธิบายแพ็กเกจทั้งหมดอย่างละเอียด (รวมถึงหลายร้อยแพ็กเกจที่ติดตั้งมาเป็น dependency) ” ซึ่งพูดตามตรง ถ้าเริ่มอ่านคำอธิบายและ README ทั้งหมดตั้งแต่ Trixie ที่ปล่อยออกมาเมื่อไม่กี่วันก่อน ป่านนี้ก็คงยังอ่านไม่หมด
ถ้าเป็นโปรแกรมพจนานุกรม ก็อาจคาดได้ตามธรรมดาว่าจะมีโค้ดที่สื่อสารกับเว็บไซต์อยู่ด้วย แต่ถ้าฉันติดตั้งพจนานุกรมด้วย apt-get ก็ย่อมคาดหวังได้ว่าพจนานุกรมทั้งชุดจะอยู่ในเครื่องฉันเอง เพราะสุดท้ายแล้วพจนานุกรมกระดาษก็ถูกใช้งานกันมาหลายร้อยปี... Stardict อาจเป็นแบบออนไลน์ก็ได้ แต่ถึงจะดูปกติ มันก็ให้ความรู้สึกเหมือนมีอะไรแอบแฝง
ฉันค่อนข้างตกใจเมื่อพบว่าในมือถือ Samsung ข้อมูลคลิปบอร์ดทั้งหมดถูกแชร์ไปยังทุกอุปกรณ์ในบัญชี Samsung ของฉัน รวมถึงรหัสผ่านด้วย และยังมีประวัติค้างอยู่ด้วย จำไม่ได้ว่าเป็นค่าตั้งต้นหรือเผลอกดยอมรับไปเอง แต่เดาว่าข้อมูลนี้น่าจะถูกส่งผ่านเซิร์ฟเวอร์ของ Samsung ฉันปิดฟังก์ชันแชร์ไปแล้ว แต่ประวัติคลิปบอร์ดยังปิดไม่ได้ และถึงจะเปลี่ยนคีย์บอร์ดไปใช้ตัวอื่น พอกลับมาใช้คีย์บอร์ด Samsung ก็ยังเห็นคลิปบอร์ดเก่าทั้งหมดอยู่ครบ โทรศัพท์เครื่องหน้าคงไม่เลือก Samsung แล้ว
รู้สึกว่าคำพูดเกี่ยวกับ Wayland ชวนให้เข้าใจผิดอยู่บ้าง แต่สรุปท้ายถูกต้องแล้ว: “เป็นไปได้ว่า StarDict ขอสิทธิพิเศษเพื่อให้ทำงานบน Wayland และผู้ใช้ก็กดยอมรับค่าเริ่มต้นนั้นเหมือนที่ทำอยู่ตอนนี้” กล่าวคือมีแนวโน้มสูงว่าจะเป็นแบบนั้น และอาจมีการกำหนดสิทธินั้นให้อัตโนมัติตั้งแต่ขั้นตอนติดตั้งก็ได้ มัลแวร์มีอยู่เสมอ Wayland อาจป้องกันการโจมตีบางแบบได้ แต่ไม่ได้ทำให้ปลอดภัยจากแพ็กเกจที่ติดตั้งมาเป็นส่วนหนึ่งของดิสโทร
การค้นพจนานุกรมในเครื่องจากคลิปบอร์ดนั้นโอเค การเพิ่มฟังก์ชันร้องขอพจนานุกรมระยะไกลก็ไม่ใช่ปัญหา และถ้าจะแยกสองฟังก์ชันนี้ให้ผสมกันได้ง่ายผ่านแฟลกพิเศษอะไรสักอย่างก็ยังพอรับได้ แต่การเอาสองอย่างนี้มาปนกันในค่าตั้งต้นนั้นแทบจะใกล้เคียงกับพฤติกรรมไม่หวังดี
สำหรับคำพูดที่ว่า “แน่นอนว่าโปรแกรมพจนานุกรมมีโค้ดเชื่อมต่อเว็บไซต์” ผมอยากบอกว่าในความเป็นจริงมันขึ้นอยู่กับเป้าหมายการใช้งาน รุ่นขั้นต่ำของพจนานุกรมภาษาฟินแลนด์ (
tsk) ที่ผมทำมีขนาดราว 30MB และมีคำประมาณ 250,000 คำ โดยฝังพจนานุกรมไว้ในไบนารีเลยและสร้างการค้นหาแบบ prefix ใหม่ทุกครั้งที่รัน แต่ถ้ารวม lemmatization, นิรุกติศาสตร์ และฐานข้อมูลขนาดใหญ่ต่าง ๆ มันอาจโตไปถึงหลายสิบกิกะไบต์ได้ ผมต้องการการค้นหาแบบทันทีในระดับการพิมพ์คีย์บอร์ด จึงต้องใช้โครงสร้างแบบนี้ และใช้แรงไปมากพอจนตัดสินใจว่าจะทำรุ่นถัดไปเป็นแบบเสียเงิน tsk Github หน้าเว็บเวอร์ชันเสียเงิน (ตอนนี้ออฟไลน์อยู่เพราะปัญหา code signing บน Windows) สำหรับกรณีใช้งานอื่นส่วนใหญ่ การถามเซิร์ฟเวอร์จะสะดวกกว่ามาก แทบไม่มีเหตุผลให้ดาวน์โหลดพจนานุกรมมหึมาทั้งหมดลงมา ดังนั้นโครงสร้างแบบผสม เช่นแคชคำที่ใช้บ่อยที่สุด 10,000 คำไว้ในเครื่อง แล้วค่อยให้คำหายากไปถามเซิร์ฟเวอร์ จึงถือว่าสมเหตุสมผลมากยิ่งดูยิ่งรู้สึกว่ามีหลายจุดที่ตีความได้ว่าเป็นเจตนาไม่ดี ผู้ดูแลตอบว่า “ผู้ใช้เปิดใช้ฟังก์ชัน ‘scan’ เอง และเมื่อเลือกข้อความก็จะเป็นการ trigger การแปล... แล้วทำไมถึงไปเลือกข้อมูลลับมาเป็นคำขอแปลล่ะ?”
ผมนับถือความพยายามมหาศาลที่เทให้ Debian แต่ผมไม่ชอบ “ความสุดโต่ง” แบบนี้ของตัวจัดการแพ็กเกจเสมอมา เช่นแค่จะติดตั้ง foo ก็พยายามติดตั้งซอฟต์แวร์ที่เกี่ยวข้องให้หมดเท่าที่เป็นไปได้ และถ้ามี network daemon ก็เปิดรันทันทีด้วย แม้จะรู้ว่ามีแฟลกสำหรับปิดการติดตั้ง “แพ็กเกจแนะนำ” แต่ก็ยังรู้สึกว่าค่าตั้งต้นแบบนี้กลับทำให้ผู้ใช้ลำบาก
--no-install-recommends--install-recommendsเป็นค่าตั้งต้นไม่ใช่ปัญหา Recommends ต่างจาก Suggests แบบละเอียดอ่อนตรงที่สื่อว่า “ผู้ใช้ส่วนใหญ่ของเราน่าจะต้องการสิ่งนี้” ส่วน Suggests คือ “ฟีเจอร์สำหรับคนส่วนน้อย” แต่ผมก็เห็นด้วยว่าเป็นปัญหาถ้าผู้ดูแลแต่ละรายใช้ฟิลด์ Recommends ในทางที่เกินเลย เช่นจะติดตั้งเครื่องมือบีบอัดไฟล์แต่กลับพ่วงระบบ init เฉพาะมาด้วย แบบนั้นไม่สมเหตุสมผลเลย (กำลังมองไปที่ file-roller กับทีม GNOME)ผมไม่เข้าใจว่าทำไมฟังก์ชันทั้งหมดนี้ถึงไม่ทำงานแบบออฟไลน์ พจนานุกรมภาษาจีนทั้งชุดมีคำน้อยกว่า 400,000 คำ ต่อให้คิดคำละ 1k ก็แค่ 400MB เอง ทำในเครื่องได้สบาย การพึ่งพาการเชื่อมต่อเครือข่ายเป็นเพียงการออกแบบที่ไม่รอบคอบ
เห็นเรื่องแบบนี้แล้วโมโหมาก นี่เป็นสิ่งที่ยอมรับไม่ได้เด็ดขาด