ปลดปล่อย Wi‑Fi บน ESP32 [วิดีโอ]
(media.ccc.de)- ESP32 เป็นชิปที่พบได้ทั่วไปมาก ถึงขั้นที่ใน CCH น่าจะมีใช้อยู่หลายพันตัว แต่แกนสำคัญอย่าง Wi‑Fi stack เป็นแบบปิด จึงแก้ไขและตรวจสอบได้ยาก
- เซสชัน 38c3 เริ่มจาก การทำ reverse engineering อุปกรณ์รอบข้าง Wi‑Fi และเล่ากระบวนการสร้าง Wi‑Fi stack แบบโอเพนซอร์ส
- เป้าหมายไม่ใช่แค่การทำ implementation ทดแทน แต่คือการทำให้สามารถ ตรวจสอบและแก้ไขได้ด้วยตนเอง สำหรับซอฟต์แวร์ที่อาจจัดการข้อมูลอ่อนไหว
- หาก stack ใหม่ตั้งหลักได้ ESP32 อาจขยายบทบาทจาก IoT SoC ทั่วไป ไปเป็น แพลตฟอร์มไร้สายราคาถูก สำหรับการวิจัยและการทดลอง
- เมื่อฟังก์ชันต่าง ๆ เปิดให้ใช้งานได้เพียงพอ ก็จะนำไปใช้ได้ เช่น เครื่องมือ pentesting, เราเตอร์เมช B.A.T.M.A.N. และไคลเอนต์ AirDrop
เหตุผลที่ต้องเปิด Wi‑Fi stack แบบปิด
- Wi‑Fi stack เดิมของ ESP32 ใช้งานได้ แต่เป็น implementation แบบปิด จึงตรวจสอบการทำงานภายในหรือปรับแก้ตามความต้องการได้ยาก
- เป้าหมายหลักของ Wi‑Fi stack แบบโอเพนซอร์สคือการทำให้ส่วนที่อาจจัดการข้อมูลอ่อนไหวสามารถ แก้ไขและตรวจสอบ ได้
- ใน CCH น่าจะมี ESP32 หลายพันตัว และทั้งหมดกำลังรัน Wi‑Fi stack แบบปิดเช่นนี้ ซึ่งทำให้ประเด็นนี้น่ากังวลยิ่งขึ้น
จาก reverse engineering สู่ stack ใหม่
- โปรเจกต์เริ่มจากการทำ reverse engineering Wi‑Fi stack แบบ proprietary ของ ESP32
- จากนั้นต่อยอดไปสู่การสร้าง Wi‑Fi stack แบบโอเพนซอร์ส ที่จัดการอุปกรณ์รอบข้าง Wi‑Fi ของ ESP32 ได้โดยตรง
- ระหว่างทางยังครอบคลุมเรื่อง Wi‑Fi, ESP32, reverse engineering ทั่วไป และแนวทางการเข้าหาโปรเจกต์ลักษณะนี้ด้วย
การใช้งานเมื่อ ESP32 ถูกเปิดเต็มที่
- หากฟังก์ชันของ ESP32 ถูกเปิดอย่างสมบูรณ์ ก็จะรับบทบาทได้หลากหลายขึ้นทั้งในฐานะเครื่องมือวิจัยและ IoT SoC
- ตัวอย่างการใช้งานที่เป็นไปได้มีดังนี้
- เครื่องมือ pentesting
- เราเตอร์เมช B.A.T.M.A.N.
- ไคลเอนต์ AirDrop
ข้อมูลเซสชันและเงื่อนไขการเผยแพร่
- ผู้บรรยายคือ Frostie314159 และ Jasper Devreker
- เป็น เซสชันความยาว 38 นาที ในแทร็ก Hardware & Making ของ 38c3 จัดที่ Saal 1 วันที่ 2024-12-27
- วิดีโอและเสียงมีให้ในรูปแบบ MP4, WebM, MP3 และ Opus
- เนื้อหาเผยแพร่ภายใต้เงื่อนไข
http://creativecommons.org/licenses/by/4.0
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
บทความที่เกี่ยวข้อง: https://zeus.ugent.be/blog/23-24/open-source-esp32-wifi-mac/
ถ้าเข้ากันได้ ก็จะใช้คำแนะนำและตัวอย่างที่มีสะสมอยู่บนอินเทอร์เน็ตได้ตามเดิม และต้นทุนในการเริ่มต้นก็จะต่ำลงด้วย คนที่อยากแก้เลเยอร์ MAC เพียงนิดเดียวก็สามารถเข้าไปตามวิธีเดิมและแก้เฉพาะส่วนที่ต้องการได้ โดยไม่ต้องแบกรับภาระเรียนรู้ API ใหม่
ยังรู้สึกแปลกอยู่ไม่น้อยที่มีแต่ Espressif ที่ทำสำเร็จในการใส่ โมเด็ม WiFi ลงในไมโครคอนโทรลเลอร์ที่ค่อนข้างดี
ST ยังตามหลังอยู่มากในด้านนี้
แต่ WiFi บนบอร์ด RP2040 W ดูเหมือนเป็นโมดูลภายนอก แหล่งที่มาคือ https://esphome.io
หาซื้อทีละ 1 ชิ้นได้แทบทุกที่ และขายเป็นบอร์ด breakout หลายแบบที่มีไฟเลี้ยง USB พอร์ตโปรแกรม และขาที่ระบุชัดเจน พร้อมเอกสาร ตัวอย่าง Arduino IDE และ NodeMCU ครบถ้วน Arduino เองช่วงแรกก็คล้ายกัน แต่ติดอยู่กับชิป AVR ประสิทธิภาพต่ำอยู่นานเกินไป บอร์ดที่ไม่ใช่ของจีนก็แพง และไม่มี WiFi ส่วน Raspberry Pi Pico ฟีเจอร์ดี แต่ช่วงแรกของขาดแคลน ส่วนตัวอื่น ๆ จะใกล้เคียงกับ “ชิปเดี่ยว” ที่ซื้อจากที่อย่าง DigiKey ทำให้ค่าส่งแพง เอกสารยาวเกิน 600 หน้า แค่จะส่ง ping แรกก็ต้องอ่านเกิน 300 หน้า ต้องบัดกรีเข้ากับบอร์ด และโดยปกติการโปรแกรมก็ต้องใช้อุปกรณ์ราคาแพง
ยังไม่ได้ดูวิดีโอ ถ้ามีพูดถึงแล้วก็ขอโทษ แต่สงสัยว่าการรับรองด้านไร้สายของ ESP32 ผูกอยู่กับ เฟิร์มแวร์กล่องดำ อย่างเป็นทางการหรือไม่
ถ้าเป็นฮาร์ดแวร์เดียวกันแต่ใช้เฟิร์มแวร์โอเพน จะต้องส่งกลับไปให้หน่วยงานรับรองอย่าง FCC ตรวจความสอดคล้องอีกครั้งไหม?
จำมาตรา CFR ไม่ได้ทันที แต่ FCC อนุญาตอย่างชัดเจนให้ใครก็ได้ใช้อุปกรณ์ที่ไม่ได้รับการรับรองในปริมาณน้อย หากอุปกรณ์นั้นละเมิดกฎอื่นก็ยังถือว่าผิดอยู่ แต่ข้อเท็จจริงที่ว่าแก้ฮาร์ดแวร์หรือซอฟต์แวร์ไม่ได้ถูกห้ามในตัวมันเอง
แทบไม่ยอมรับการมีอยู่ของเฟิร์มแวร์ด้วยซ้ำ เหตุผลหนึ่งก็มีอยู่ อุปกรณ์ไร้สายย่านไม่ต้องขออนุญาตที่ผ่านการรับรองอย่าง WiFi ถูกคาดหวังให้ป้องกันการดัดแปลงเพื่อประโยชน์สาธารณะ ดังนั้นตอน FCC หารือข้อกำหนดรับรองเราเตอร์ WiFi จึงเคยพิจารณาขยายไปถึงซอฟต์แวร์ เช่น บังคับ secure boot กับเราเตอร์ WiFi ห่วย ๆ ที่เปราะบางทั้งหมด ซึ่งเป็นแนวคิดที่น่ากลัวมากและถูกยกเลิกไป ณ ตอนนี้ ผมมองว่าถ้าเฟิร์มแวร์ที่ได้ไม่ได้ทำให้เกิดการแผ่คลื่นนอกสเปกอย่างชัดเจน ก็ใกล้เคียงกับกึ่งถูกกฎหมายหรือกึ่งผิดกฎหมาย ไม่ใช่นักกฎหมาย
https://github.com/esp32-open-mac
เคยมีไอเดียสำหรับ provisioning รหัสผ่าน WiFi สามารถส่ง SSID และรหัสผ่านได้โดยปรับเปลี่ยน ความยาวแพ็กเก็ต
อุปกรณ์ IoT ใหม่ย่อมถอดรหัสแพ็กเก็ตไม่ได้ แต่สังเกตความยาวได้ ผมเคยทำตัวอย่าง implementation สำหรับ Linux ด้วย แต่หาไม่เจอเลยสักชิป IoT ที่ให้การเข้าถึง PHY ระดับต่ำพอสำหรับทำสิ่งนี้
ขอถามนอกเรื่องหน่อย หนึ่งในผู้บรรยายเปิดเผย หมายเลข DECT ไว้ แปลว่ายังมีคนพกโทรศัพท์รุ่นเก่า ๆ ไปใช้ในงานประชุมเทคนิคอยู่หรือ?
ยังมีแดชบอร์ดสถานะที่แสดงตัวชี้วัดระหว่างงานด้วย
[1] https://events.ccc.de/2024/12/22/38c3-poc-isdn-version/
[2] https://dashboard.eventphone.de/d/de7sgxz63vzeoe/38c3?orgId=...
โดยเฉพาะในโซนแคมป์ปิ้ง ความครอบคลุมของ WiFi อาจไม่สม่ำเสมอ ดังนั้นแม้เดินไปอาคารห้องน้ำหรือลานจอดรถก็ยังรับสายได้ เพราะใช้ย่านความถี่ของตัวเอง จึงไม่ทำให้ย่านที่ WiFi, Bluetooth, Zigbee ใช้แออัดขึ้นด้วย จะใช้แอปอะไรสักอย่างก็ได้ แต่ DECT เสถียรมากและระยะครอบคลุมก็ดีกว่า WiFi มาก ผมมีเครื่อง Siemens ดี ๆ ขนาดประมาณ Nokia 8210 เลยไม่ต้องพกอะไรที่เหมือนก้อนอิฐไปมา ตอนนี้แบตเตอรี่น่าจะใกล้ตายแล้ว แต่ก็เปลี่ยนได้ตามแบบแบตเตอรี่ยุคนั้น
ในบ้านพักอาศัยส่วนบุคคลในเยอรมนี DECT ยังได้รับความนิยมมาก
ทนทานกว่า VoIP ผ่าน WiFi มาก
เพราะ DECT มีมาก่อน จึงกลายเป็นเหมือนคำสามัญสำหรับระบบโทรศัพท์ภายในไปแล้ว
สงสัยว่าการแฮ็กนี้ลงลึกแค่ไหน การส่งเฟรมดูเหมือนเป็นแค่การตั้งค่ารีจิสเตอร์ไม่กี่ตัวแล้วรออินเทอร์รัพท์ เลยคิดว่าอาจกำลังคุยกับ เลเยอร์เฟิร์มแวร์ อื่นที่ทำงานจริงอยู่ก็ได้
ทำให้นึกถึงบอร์ด Raspberry Pi Pico แม้จะมี SoC หลัก RP2040 แต่ WiFi เป็นโมดูล WiFi/BT แยกต่างหาก (CYW43xx) ที่มีคอร์ Arm ของตัวเอง อินเทอร์เฟซรีจิสเตอร์ภายนอกของโมดูล WiFi ก็ไม่ได้มีเอกสารสาธารณะ แต่มีไดรเวอร์โอเพนซอร์ส (https://github.com/georgerobotics/cyw43-driver/tree/cf924bb0...) จึงพออนุมานสเปกได้ อย่างไรก็ตามไดรเวอร์นี้สุดท้ายก็สื่อสารกับซอฟต์แวร์ที่รันอยู่บนคอร์ Arm ภายในโมดูล และโค้ดนั้นผู้ผลิตให้มาเป็นเฟิร์มแวร์ไบนารีบล็อบขนาดใหญ่ บล็อบนั้นจริง ๆ อยู่ในไฟล์เฮดเดอร์ในไดเรกทอรี firmware ของรีโพที่ลิงก์ไว้ สงสัยว่าการแฮ็ก ESP32 ครั้งนี้สอดคล้องกับโครงสร้างนี้อย่างไร
ประทับใจที่ผู้นำเสนอๆ ดูเด็กมาก น่าสนใจที่ได้เห็นคนอายุน้อยขนาดนั้นสะสม ความรู้ทางเทคนิค ได้ถึงระดับนั้น
หมากรุกเป็นตัวอย่างที่สมบูรณ์แบบ เมื่อก่อนความรู้จำนวนมากอยู่ในหนังสือ และบ่อยครั้งเป็นหนังสือภาษาต่างประเทศ ตอนนี้ทุกอย่างเปิดเผยหมดแล้ว และเมื่อมีฝีมือถึงระดับหนึ่ง ก็สามารถเล่นกับคู่แข่งระดับท็อป 100 ได้แบบสบาย ๆ ทำให้พัฒนาได้เร็วขึ้น
เข้าใกล้ ไลบรารี MicroPython ที่รองรับโหมด promiscuous ไปอีกก้าวแล้ว
ดูโดยไม่ต้องดาวน์โหลด: https://media.ccc.de/v/38c3-liberating-wi-fi-on-the-esp32/pl...