ชำแหละเทอร์มินัลผู้ใช้ Starlink
(darknavy.org)- DARKNAVY ชำแหละเสาอากาศของ Starlink Standard Actuated ที่ซื้อจากสิงคโปร์ เพื่อวิเคราะห์เบื้องต้นด้านฮาร์ดแวร์ เฟิร์มแวร์ ชิปความปลอดภัย และความเป็นไปได้ในการอีมูเลต
- PCB ของเสาอากาศส่วนใหญ่ถูกครอบครองโดย RF front-end ของ STMicroelectronics และส่วนควบคุมหลักถูกรวมไว้ที่ด้านหนึ่งของบอร์ด ทำให้มีโครงสร้างคล้ายอุปกรณ์ IoT ทั่วไป
- เฟิร์มแวร์ Rev3 ถูกดัมพ์โดยการถอด eMMC ออก และข้อมูลส่วนใหญ่ยังอยู่ในสถานะ ไม่เข้ารหัส ทำให้ตรวจสอบบางส่วนของ boot chain, เคอร์เนล, บางส่วนของไฟล์ซิสเต็ม และการตั้งค่ารันไทม์ได้
- ซอฟต์แวร์ที่ดึงออกมามีฟังก์ชันที่ดูเหมือนใช้ได้ไม่เฉพาะกับเทอร์มินัลผู้ใช้ แต่รวมถึงดาวเทียมและเกตเวย์ภาคพื้นด้วย และดูเหมือนจะมีโครงสร้างที่ระบุประเภทอุปกรณ์จาก อุปกรณ์ต่อพ่วงฮาร์ดแวร์ ตอนเริ่มระบบ
- Ethernet Data Recorder บันทึกแพ็กเก็ตที่เกี่ยวข้องกับ telemetry ของดาวเทียมและเข้ารหัสด้วยคีย์ฮาร์ดแวร์ แต่ใน UTA มีการลงทะเบียน SSH public key จำนวน 41 คีย์โดยอัตโนมัติ และพอร์ต 22 เปิดค้างไว้บนเครือข่ายท้องถิ่นเสมอ
เทอร์มินัลผู้ใช้ Starlink และขอบเขตการวิเคราะห์
- Starlink คือบริการ อินเทอร์เน็ตผ่านดาวเทียมวงโคจรต่ำ ของ SpaceX โดยผู้ใช้จะเชื่อมต่อกับดาวเทียมวงโคจรใกล้โลกผ่านเทอร์มินัลผู้ใช้ แล้วเชื่อมสู่อินเทอร์เน็ตผ่านเกตเวย์ภาคพื้น
- ดาวเทียมรุ่นใหม่เริ่มทยอยเพิ่ม ลิงก์เลเซอร์ เข้ามา ทำให้ดาวเทียมบางดวงสื่อสารกันเองได้โดยตรง
- ช่วยลดการพึ่งพาสถานีภาคพื้น เพิ่มประสิทธิภาพการส่งข้อมูล และปรับปรุงการครอบคลุมทั่วโลก
- แม้ในสมรภูมิยูเครนที่ไม่มีสถานีภาคพื้นในพื้นที่ เทอร์มินัลผู้ใช้ Starlink ก็สามารถเชื่อมต่อทางอ้อมไปยังเกตเวย์ในประเทศข้างเคียงผ่านลิงก์ระหว่างดาวเทียมได้
- การตรวจสอบของ DARKNAVY ไม่ได้ครอบคลุมเทอร์มินัลผู้ใช้ Starlink ทั้งชุด แต่โฟกัสที่องค์ประกอบเสาอากาศคือ User Terminal Antenna, UTA
- อุปกรณ์เป้าหมายคือ Starlink Standard Actuated ที่ซื้อจากสิงคโปร์
- เรียกอีกชื่อว่า Rev3 หรือ GenV2
ผลการชำแหละฮาร์ดแวร์
- เทอร์มินัลผู้ใช้ Starlink แบบสมบูรณ์ประกอบด้วย 2 ส่วนคือ เราเตอร์ และเสาอากาศ
- PCB ของ UTA ที่ถูกชำแหละมีขนาดเกือบเท่ากับเคสภายนอก
- พื้นที่ส่วนใหญ่ของบอร์ดถูกใช้โดย ชิป RF front-end ที่ผลิตโดย STMicroelectronics
- ชิ้นส่วนควบคุมหลักส่วนใหญ่ถูกรวมอยู่ด้านหนึ่งของ PCB
- เมื่อไม่นับส่วนเสาอากาศ RF แล้ว การออกแบบโดยรวมของแกนหลัก UTA คล้ายกับอุปกรณ์ IoT ทั่วไปอย่างมาก
- SoC หลักคือ quad-core Cortex-A53 ที่ ST ผลิตแบบคัสตอมให้กับ SpaceX
- ปัจจุบันฮาร์ดแวร์และ datasheet ของชิปนี้ยังเป็นความลับและไม่เปิดเผยสู่สาธารณะ
- ในงาน Black Hat USA 2022 ดร. Lennert Wouters จาก KU Leuven ได้สาธิตการโจมตีแบบ fault injection กับเสาอากาศ Starlink รุ่นแรก GenV1 จนได้ root shell ของอุปกรณ์
- หลังจากนั้น SpaceX ได้เพิ่มความต้านทานต่อการโจมตีลักษณะนี้ด้วยการปิดใช้งาน UART debug interface บน PCB ผ่านการอัปเดตเฟิร์มแวร์
- Wouters ปรับปรุงแนวทางของตนและสามารถเจาะเข้าไปได้อีกครั้ง
การดึงเฟิร์มแวร์และโครงสร้างซอฟต์แวร์
- เพื่อวิเคราะห์ UTA ให้ลึกขึ้น DARKNAVY ได้ ดัมพ์เฟิร์มแวร์โดยตรง จากชิป eMMC
- บนบอร์ด Rev3 ไม่มีขา debug ของ eMMC ที่เห็นได้ชัด
- จึงต้องถอดชิป eMMC ออกจาก PCB แล้วอ่านด้วยโปรแกรมเมอร์
- เฟิร์มแวร์ที่ดึงออกมาส่วนใหญ่ยังอยู่ในสถานะ ไม่เข้ารหัส
- boot chain ยกเว้น BootROM
- เคอร์เนล
- พื้นที่ที่ไม่เข้ารหัสของไฟล์ซิสเต็ม
- หลังเคอร์เนลเริ่มทำงานแล้ว สภาพแวดล้อมรันไทม์ส่วนใหญ่จะถูกอ่านจาก eMMC และแตกออกไว้ในไดเรกทอรี
/sx/local/runtime - ในโครงสร้างรันไทม์
binเก็บไฟล์ปฏิบัติการที่จำเป็นต่อซอฟต์แวร์สแตกของ Starlink,datเก็บไฟล์คอนฟิก และrevision_infoบันทึกเวอร์ชันซอฟต์แวร์และฮาร์ดแวร์ปัจจุบัน user_terminal_frontendซึ่งจัดการการสื่อสารกับผู้ใช้ภายนอก เขียนด้วย Go ส่วนโปรแกรมที่เหลือส่วนใหญ่เป็นไฟล์ปฏิบัติการ C++ แบบ static compile ที่ไม่มี symbol- จากการวิเคราะห์เบื้องต้นที่อิงงานวิจัยก่อนหน้า สถาปัตยกรรม network stack มีความคล้ายกับ DPDK อยู่พอสมควร
- โดยหลักแล้วโปรแกรม C++ ใน userspace จะประมวลผลแพ็กเก็ตเครือข่ายโดยข้ามเคอร์เนล
- Linux kernel มีบทบาทหลักในการให้ไดรเวอร์ฮาร์ดแวร์พื้นฐานและการจัดการโปรเซส
- ซอฟต์แวร์หลักที่ดึงจาก UTA ยังมีฟังก์ชันที่ดูเหมือนเป็นของดาวเทียมหรือเกตเวย์ภาคพื้นรวมอยู่ด้วย
- จากการ reverse engineering เบื้องต้น ระบบดูเหมือนจะระบุ ประเภทอุปกรณ์ จากอุปกรณ์ต่อพ่วงฮาร์ดแวร์ระหว่างการเริ่มระบบ
- จากนั้นจึงโหลดและรันลอจิกที่ตรงกับประเภทอุปกรณ์นั้น
การอีมูเลตด้วย QEMU
- DARKNAVY ได้สร้าง สภาพแวดล้อมอีมูเลชันบน QEMU สำหรับเฟิร์มแวร์ Rev3 เพื่อให้วิเคราะห์ UTA ต่อเนื่องได้ง่ายขึ้น
- ในสภาพแวดล้อมนี้ พวกเขาสามารถรันและดีบักซอฟต์แวร์บางส่วนที่โต้ตอบกับเอนทิตีภายนอกได้สำเร็จ
httpdWebSocket- บริการ
gRPC
ชิปความปลอดภัย STSAFE-A110
- นอกจาก SoC หลักแล้ว UTA ยังติดตั้งชิปความปลอดภัยเฉพาะทาง STSAFE-A110
- ชิปนี้อ้างระดับความปลอดภัย CC EAL5+
- ต่างจาก SoC แบบคัสตอม เพราะสามารถซื้อได้อย่างถูกกฎหมายภายใต้ NDA
- ในเฟิร์มแวร์ UTA มีโปรแกรม userspace ชื่อ
stsafe_cliที่ทำหน้าที่จัดการการโต้ตอบกับชิปนี้ - จากผลการ reverse engineering ดูเหมือนว่า STSAFE จะให้ความสามารถหลักดังต่อไปนี้
- ตัวระบุเฉพาะของอุปกรณ์แต่ละเครื่อง หรือ UUID
- การจัดการใบรับรอง public key
stsafe_leaf.pemซึ่งคาดว่าใช้สำหรับการยืนยันตัวตนในการสื่อสารกับดาวเทียม - การสร้าง symmetric encryption key สำหรับการส่งข้อมูลของผู้ใช้
- ชิปนี้ทำหน้าที่เป็น root of trust เพิ่มเติมที่แยกจากกลไก secure boot ของ SoC และสอดคล้องกับแนวทางการออกแบบความปลอดภัยของระบบ embedded สมัยใหม่
Ethernet Data Recorder และคีย์ SSH
- ระหว่างการวิเคราะห์พบโปรแกรมชื่อ Ethernet Data Recorder ซึ่งหากดูจากชื่อและหน้าที่อย่างเดียวอาจถูกสงสัยว่าเป็นแบ็กดอร์สำหรับดักจับข้อมูลผู้ใช้
- แต่เมื่อตรวจสอบรายละเอียด พบว่าโปรแกรมนี้บันทึกแพ็กเก็ตเครือข่ายบางประเภทด้วยกลไกคล้าย
pcap_filter- ตัวอย่างกฎการจับข้อมูลรวมถึงเงื่อนไข
udp and dst port 10017และโฮสต์ปลายทางแบบ multicast บางรายการ - เมื่ออิงจากเบาะแสอื่นในเฟิร์มแวร์ แพ็กเก็ตเหล่านี้เกี่ยวข้องกับ telemetry ของดาวเทียม
- ตัวอย่างกฎการจับข้อมูลรวมถึงเงื่อนไข
- ทราฟฟิกทั้งหมดที่ถูกจับจะถูกเข้ารหัสด้วยคีย์ฮาร์ดแวร์ที่ฟิวส์ไว้ใน SoC
- จากข้อมูลที่มีอยู่ในตอนนี้ ยังยากจะสรุปว่าฟังก์ชันนี้เก็บ ข้อมูลความเป็นส่วนตัวของผู้ใช้
- ระหว่างการ initialize อุปกรณ์ หากระบบระบุตัวเองว่าเป็นเทอร์มินัลผู้ใช้ สคริปต์เริ่มต้นระบบจะเขียน SSH public key จำนวน 41 คีย์ลงใน
/root/.ssh/authorized_keysโดยอัตโนมัติ- พอร์ต 22 ของ UTA เปิดไว้บนเครือข่ายท้องถิ่นตลอดเวลา
- การมีคีย์ล็อกอินที่ไม่ทราบที่มาจำนวนมากเช่นนี้ในผลิตภัณฑ์สำหรับผู้ใช้ถือว่าน่าสังเกต
บริบทด้านความปลอดภัยของระบบอินเทอร์เน็ตผ่านดาวเทียม
- เมื่อเทคโนโลยีดาวเทียมยังคงพัฒนาและถูกนำไปใช้ในหลายอุตสาหกรรม องค์ประกอบแต่ละส่วนของ Starlink และระบบอินเทอร์เน็ตผ่านดาวเทียมอื่น ๆ อาจกลายเป็นพื้นที่สำคัญสำหรับปฏิบัติการโจมตีและป้องกันในอนาคต
- ในด้านความมั่นคงปลอดภัยอวกาศ นักพัฒนาและแฮ็กเกอร์ไม่ได้ต้องรับมือแค่โลกดิจิทัลเท่านั้น แต่ยังต้องเผชิญกับ ข้อจำกัดของฟิสิกส์อวกาศ ด้วย
- การควบคุมผิดพลาดเพียงครั้งเดียวอาจทำให้สูญเสียการติดต่อกับเป้าหมายไปอย่างถาวร
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ถ้าระบบใส่ คีย์สาธารณะ SSH 41 คีย์ ลงใน
/root/.ssh/authorized_keysให้อัตโนมัติเมื่อระบุได้ว่าเป็นเทอร์มินัลผู้ใช้ตอนเริ่มต้นระบบ ก็ยิ่งทำให้อยากรู้ว่าใครบ้างที่ ไม่มี สิทธิ์ root เข้าถึงเทอร์มินัลผู้ใช้ “ของฉัน”ถ้ามองจริงจังขึ้น ก็ไม่ต่างจากการมี ระบบบริหารจัดการระยะไกล บนเราเตอร์ที่ ISP ให้มามากนักหรือเปล่า แม้ SpaceX จะเข้าถึงเทอร์มินัลผู้ใช้โดยตรงไม่ได้ แต่ก็ยังสามารถจับทราฟฟิกได้จากดาวเทียมหรือสถานีภาคพื้นดิน
กลับกัน ถ้า 41 อินสแตนซ์นั้น แชร์คีย์เดียวกัน นั่นน่าจะน่ากังวลกว่า
authorized_keysของผมที่เป็นผู้ใช้ส่วนตัวคนเดียวก็มี 25 บรรทัดแล้ว มี YubiKey คนละอันสำหรับแล็ปท็อปแต่ละเครื่อง คีย์ของ iPad กับ iPhone และคีย์ Secure Enclave ของ MacStarlink ก็น่าจะมีผู้ดูแลระบบมากกว่า 1–2 คน ดังนั้นคีย์สาธารณะสัก 100 คีย์ก็ถือว่าสมเหตุสมผล
เรามีซอฟต์แวร์เข้าถึงระยะไกลแยกต่างหากเพื่อวินิจฉัยปัญหาทางวิศวกรรมบนอุปกรณ์โปรดักชัน และสามารถเปิด REPL ได้ แต่ถูกควบคุมด้วยการควบคุมสิทธิ์และการอนุมัติจาก DevOps
การสนทนาก่อนหน้าของโพสต์คล้ายกัน: Teardown of the SpaceX Starlink User Terminal https://news.ycombinator.com/item?id=25277171 (2 ธันวาคม 2020 — 158 คะแนน, 138 ความเห็น)
ถ้าเอาคีย์สาธารณะ 41 คีย์มาเผย ก็น่าจะตรวจสอบได้ว่ามีนักพัฒนาคนไหนใช้บ้าง
https://web.archive.org/www.darknavy.org/blog/a_first_glimps...
น่าประหลาดใจที่แพ็กเก็ตทั้งหมดถูกประมวลผลใน user space
ถ้าต้องจัดการทราฟฟิก 1Gbps ด้วยแพ็กเก็ต UDP ขนาด 100 ไบต์ ก็ต้องประมวลผล 1 ล้านแพ็กเก็ตต่อวินาที ถ้าเป็น CPU 1GHz ก็มีได้แค่ 1000 ไซเคิลต่อแพ็กเก็ต
ทำได้ก็จริง แต่คงไม่ง่าย เว้นแต่ว่าวิศวกรจะชอบเขียนแอสเซมบลีด้วยมือและคิดสารพัดเทคนิคตาราง lookup
ซอฟต์แวร์นั้นอาจเป็นเคอร์เนลที่แพตช์แล้ว หรืออาจเป็น การบายพาสเคอร์เนลแบบ XDP ก็ได้ เป็นการเดาจากประสบการณ์ที่เคยแตะ DPDK หรือของคล้ายกันแบบผิวเผินในเราเตอร์/เกตเวย์เคเบิลโมเด็ม Intel Puma
Starlink อยู่ราว 25–200Mbps และแพ็กเก็ตเฉลี่ยก็ใหญ่กว่า 7–8 เท่า ดังนั้นอย่างมากก็ประมาณ 36,000 แพ็กเก็ตต่อวินาที ซึ่ง CPU 1GHz ก็รับมือได้ค่อนข้างสบาย
ถึงจุดนั้นแล้ว ก็ไม่เห็นว่าทำไมการที่โค้ด polling อยู่ในเคอร์เนลหรือไม่ถึงจะสำคัญ
memcpyเพิ่มอีกครั้งได้ จึงเร็วกว่าเยอะอยากให้แก้คำผิดในชื่อเรื่อง ตอนนี้เขียนว่า “Ternimal”
สงสัยว่าเริ่มทำเรื่องแบบนี้กันอย่างไร วิศวกรรมย้อนกลับยาก และการเล่นกับฮาร์ดแวร์มักแพงมาก หรือไม่ก็เก่าจนไม่มีการพัฒนาต่อแล้วเป็นส่วนใหญ่ แม้จะมีข้อยกเว้นก็ตาม
ปกติจะมี UART แต่ดูเหมือนเทอร์มินัล Starlink ไม่มี UART คนนี้เลยถอด ชิปหน่วยความจำ eMMC ออกมาแทน โดยพื้นฐานก็เหมือนการ์ด microSD ที่บัดกรีติดไว้
มีประโยคว่า “DARKNAVY built a basic QEMU-based emulation environment for the Rev3 firmware” เลยสงสัยว่ามีเอกสารหรือโซลูชันสำเร็จรูปสำหรับ จำลองการทำงาน ของเฟิร์มแวร์ที่เชื่อมต่อกับอุปกรณ์ภายนอกอย่าง GPS หรือไม่
Android Emulator เป็น downstream ของ QEMU emulator โดยเพิ่มการรองรับการบูตอุปกรณ์ Android และจำลองฮาร์ดแวร์ Android ทั่วไป (OpenGL, GPS, GSM, เซ็นเซอร์) รวมถึงอินเทอร์เฟซ GUI Android Emulator ขยาย QEMU ในหลายรูปแบบ
สนใจว่าถ้าต้องการ ป้องกันการวิศวกรรมย้อนกลับ เฟิร์มแวร์ในผลิตภัณฑ์ควรป้องกันอย่างไร มีเอกสารที่แนะนำเทคนิคที่ SpaceX ใช้หรือเปล่า?
rootfsด้วยค่าลับที่ดึงออกจาก secure element ได้ยาก ถ้าก้าวไปอีกขั้นก็ใช้ของอย่าง TrustZone ของ ARM เพื่อซ่อนงานที่อ่อนไหว เช่น bootloader, การถอดรหัส, การเซ็นอิมเมจจากที่สามารถ dump filesystem ออกมาได้ตรง ๆ ดูเหมือน SpaceX จะไม่ได้ใส่การป้องกันอื่นมากนักนอกจาก bootloader ที่กล่าวถึงในบทความ
ผมคิดว่าเอาทรัพยากรไปใช้ในทางที่เป็นประโยชน์กับทุกคนและทำให้ผลิตภัณฑ์ดีขึ้นจะดีกว่า สำหรับผู้ใช้ขั้นสูง ความเป็นไปได้ในเชิงทฤษฎีที่จะปรับแต่งผลิตภัณฑ์ได้ แม้แต่ในแบบที่ผู้ผลิตไม่เคยคิดถึง ก็อาจเป็นข้อดีอย่างมาก
จากมุมมองผู้ใช้ปลายทางสายเทคนิค มันดูเป็นแบบนี้: ผมเหนื่อยและหดหู่นิด ๆ จริง ๆ ที่ต้องแฮ็กอุปกรณ์เพื่อให้ใช้งานได้ถูกต้อง ตั้งแต่หลอดไฟ เครื่องให้อาหารแมว และตอนนี้ก็เครื่องกรรเชียงบก
ถ้าอิงจากโค้ดเบสที่แชร์กับจรวดก็คงเจ๋งนะ?