ความปลอดภัย: สิ่งที่จะเรียนต่อ

หน้านี้ชี้ให้เห็นช่องโหว่ของระบบปัจจุบัน ยังไม่ได้สอนวิธีแก้ในรอบนี้

Author

ผศ.ดร.ศุภชัย วรพจน์พิศุทธิ์

Published

4 ตุลาคม 2569

ส่วนของผู้สอน นักเรียนไม่ต้องทำหน้านี้

Noteสถานะ

เนื้อหาความปลอดภัยจะเรียนในรอบถัดไป หน้านี้มีไว้ให้ตระหนักว่าระบบที่สร้างไว้ยังไม่ปลอดภัยตรงไหน และเป็นเหตุผลที่ห้ามนำไปใช้นอกห้องเรียนที่ควบคุมเครือข่ายได้

โคมไฟของเราทำงานได้ตามที่ตั้งใจ แต่ระบบ IoT ที่ “ทำงานได้” ไม่เท่ากับ “ปลอดภัย” ลองคิดตามว่าผู้ไม่หวังดีที่อยู่ใน Wi-Fi เดียวกัน (หรือนักเรียนที่แกล้งเพื่อน) ทำอะไรได้บ้าง

สิ่งที่ระบบเป็นอยู่ตอนนี้ ความเสี่ยงที่ควรคิด หัวข้อที่จะเรียน
ใครเข้าถึง :8000 หรือ :8501 ได้ก็สั่งไฟได้ ไม่มีการล็อกอิน คนอื่นสั่งปิดไฟของบอร์ดเรา การยืนยันตัวตน (authentication) และสิทธิ์ (authorization)
ข้อมูลส่งเป็น HTTP ธรรมดา ดักอ่านหรือแก้ไขข้อมูลระหว่างทางได้ การเข้ารหัสการสื่อสาร (TLS/HTTPS)
device_id ใครจะตั้งอะไรก็ได้ ปลอมตัวเป็นบอร์ดของคนอื่น ส่งค่าแสงปลอม การระบุตัวตนอุปกรณ์และ token/คีย์ต่ออุปกรณ์
รหัส Wi-Fi อยู่ในไฟล์ arduino_secrets.h บนบอร์ด รหัสหลุดถ้าส่งไฟล์ขึ้น GitHub หรือถูกอ่านจากบอร์ด การจัดการความลับ (secret management)
ข้อความแชตถูกส่งให้ AI (อาจผ่านอินเทอร์เน็ต) ข้อมูลส่วนตัวรั่ว และผู้ใช้พยายาม “หลอก” AI ให้ตอบผิด (prompt injection) ความเป็นส่วนตัว และการจำกัดสิทธิ์ของ AI
ส่งคำขอได้ไม่จำกัดจำนวน ถูกท่วมคำขอจน gateway ไม่ตอบ (DoS) การจำกัดอัตราคำขอ (rate limiting)
ไม่มีบันทึกว่าใครสั่งอะไรเมื่อไร ตรวจสอบย้อนหลังไม่ได้ การบันทึกเหตุการณ์ (audit log)

สิ่งที่ระบบนี้ทำถูกแล้วบางส่วน

แม้จะยังไม่ปลอดภัยโดยรวม แต่มีหลักการดีที่ใช้ได้ทุกระบบ

  • ตรวจข้อมูลขาเข้าเสมอ: gateway/protocol.py ปฏิเสธข้อมูลที่รูปแบบ ชนิด หรือขอบเขตไม่ตรงสัญญา (ทดสอบแล้วใน gateway/tests/)
  • allowlist ของคำสั่ง: ทั้งกฎและ AI สร้างได้เฉพาะคำสั่งสามแบบ คำสั่งอื่นถูกปฏิเสธ
  • AI ไม่ควบคุมอุปกรณ์โดยตรง: คำตอบของ AI ถูกตรวจก่อนเสมอ และมีกฎสำรอง
  • ล้มเหลวอย่างปลอดภัย: เมื่อติดต่อ gateway ไม่ได้ บอร์ดใช้กฎของตัวเอง ไม่ค้างอยู่ในสถานะอันตราย
  • กันความลับไม่ให้ขึ้น repo: .gitignore กัน arduino_secrets.h
  • จำกัดขนาดข้อความ: คำขอเกิน 2 KB ถูกปฏิเสธ (HTTP 413)

คำถามชวนคิด

  1. ถ้าคุณเป็นผู้โจมตีในห้องเรียนเดียวกัน คุณจะสั่งปิดไฟของเพื่อนด้วยวิธีใด (ใช้ความรู้จาก API ได้เลย แต่ทดลองกับบอร์ดของตัวเองเท่านั้น)
  2. อุปกรณ์ในบ้านของคุณมีระบบยืนยันตัวตนหรือไม่ มีกรณีใดที่คุณเคยได้ยินว่าอุปกรณ์ IoT ถูกโจมตี
  3. ถ้าโคมไฟนี้ควบคุมรีเลย์ไฟบ้านจริง ความเสี่ยงข้อใดในตารางจะรุนแรงที่สุด
Warningข้อตกลง

ทดลองเฉพาะกับอุปกรณ์และเครือข่ายของตัวเองหรือที่ได้รับอนุญาตเท่านั้น การลองเข้าระบบของผู้อื่นโดยไม่ได้รับอนุญาตเป็นเรื่องผิดกฎหมายและผิดจริยธรรม