7 คะแนน โดย GN⁺ 2024-09-27 | 4 ความคิดเห็น | แชร์ทาง WhatsApp
  • เมื่อวันที่ 11 มิถุนายน 2024 มีการค้นพบช่องโหว่ในรถ Kia ที่ทำให้สามารถควบคุมฟังก์ชันสำคัญของรถจากระยะไกลได้ด้วยแค่ป้ายทะเบียน
  • ผู้โจมตีสามารถดึงข้อมูลส่วนบุคคลของเหยื่อได้อย่างเงียบ ๆ เช่น ชื่อ หมายเลขโทรศัพท์ อีเมล และที่อยู่จริง
  • ด้วยช่องโหว่นี้ ผู้โจมตีสามารถเพิ่มตัวเองเป็นผู้ใช้คนที่สองแบบมองไม่เห็นของรถได้โดยที่เจ้าของรถไม่รู้ตัว
  • มีการสร้างเครื่องมือเดโมเพื่อแสดงผลกระทบของช่องโหว่นี้ แต่ไม่ได้เผยแพร่ต่อสาธารณะหรือถูกนำไปใช้โจมตีจริง
    • หลังจากนั้นช่องโหว่นี้ได้รับการแก้ไขแล้ว เครื่องมือนี้ไม่ได้ถูกปล่อยออกมา และทีม Kia ยืนยันว่าไม่เคยมีการนำช่องโหว่นี้ไปใช้ในทางที่เป็นอันตราย

รถที่ได้รับผลกระทบ

  • รถ Kia หลายรุ่นตั้งแต่ปี 2014 ถึง 2025 ได้รับผลกระทบ
  • แต่ละรุ่นสามารถใช้ฟังก์ชันอย่างล็อก/ปลดล็อกระยะไกล สตาร์ต/ดับเครื่องระยะไกล แตร/ไฟระยะไกล และกล้องระยะไกลได้

รายละเอียดช่องโหว่

ราว 2 ปีก่อน เราพบช่องโหว่ด้านความปลอดภัยในผู้ผลิตรถยนต์มากกว่า 12 ราย เราพบปัญหาร้ายแรงที่ทำให้สามารถติดตามตำแหน่งจากระยะไกล ดับเครื่อง ปลดล็อก และสตาร์ตรถได้มากกว่า 15 ล้านคัน - Paul Roberts

  • หลังจากเวลาผ่านไปมาก เราตัดสินใจกลับไปตรวจดูเว็บไซต์ของผู้ผลิตที่เคยพบช่องโหว่อีกครั้ง
  • เว็บไซต์ owners และแอปมือถือของ Kia น่าสนใจ เพราะสามารถส่งคำสั่งควบคุมรถผ่านอินเทอร์เน็ตได้
  • เว็บไซต์จะส่งคำสั่งผ่านพร็อกซีเซิร์ฟเวอร์ไปยังแบ็กเอนด์ API ส่วนแอปจะเข้าถึง API โดยตรง
  • ตัวอย่างคำขอ HTTP ที่ส่งคำสั่งปลดล็อกประตูจากเว็บไซต์ owners:
    POST /apps/services/owners/apigwServlet.html HTTP/2  
    Host: owners.kia.com  
    Httpmethod: GET   
    Apiurl: /door/unlock  
    Servicetype: postLoginCustomer  
    Cookie: JSESSIONID=SESSION_TOKEN;   
    
  • เซิร์ฟเวอร์ใช้ JSESSIONID เพื่อสร้าง session ID ชื่อ Sid แล้วส่งต่อไปยังแบ็กเอนด์ API ดังนี้:
    GET /apigw/v1/rems/door/unlock HTTP/1.1  
    Host: api.owners.kia.com  
    Sid: 454817d4-b228-4103-a26f-884e362e8dee  
    Vinkey: 3ecc1a19-aefd-4188-a7fe-1723e1663d6e  
    
  • Sid คือโทเค็นเซสชัน ส่วน Vinkey คือ UUID ที่แมปกับหมายเลขตัวถังรถ (VIN)

ช่องโหว่ในโครงสร้างพื้นฐานของดีลเลอร์

  • เราตัดสินใจตรวจดูเว็บไซต์ดีลเลอร์ของ Kia ด้วย เพราะอยากรู้ว่า Kia จัดการข้อมูลลูกค้าอย่างไรเมื่อมีการซื้อรถใหม่
  • พวกเราตรวจสอบ URL ในอีเมลที่ส่งให้ลูกค้าเพื่อใช้ลงทะเบียนรถใหม่บนเว็บไซต์ดีลเลอร์:
    https://kiaconnect.kdealer.com/content/kDealer/…  
    
  • โดเมน kiaconnect.kdealer.com ที่ไม่เคยเห็นมาก่อนดูน่าสนใจ
  • ใน URL ข้างต้น พารามิเตอร์ token คือ VIN key ซึ่งเป็นโทเค็นเข้าถึงแบบใช้ครั้งเดียวที่ดีลเลอร์สร้างขึ้น และสามารถแก้ไขรถที่ระบุด้วยพารามิเตอร์ vin ได้
  • เมื่อโหลด URL จะมีการส่งคำขอ HTTP เพื่อตรวจสอบความถูกต้องของโทเค็น:
    POST /apps/services/kdealer/apigwServlet.html HTTP/1.1   
    Host: kiaconnect.kdealer.com  
    
    {  
      "token": "985a49f0-1fe5-4d36-860e-d9b93272072b",  
      "vin": "5XYP3DHC9NG310533",   
      "scenarioType": 3,  
      "loginPref": null  
    }  
    
  • สิ่งที่น่าสนใจคือ request URI ของเว็บไซต์ดีลเลอร์เป็น /apps/services/kdealer/apigwServlet.html ซึ่งคล้ายกับเว็บไซต์ owners
  • จึงคาดว่าน่าจะมีพร็อกซีที่ส่งต่อคำขอไปยัง API ภายในสำหรับดีลเลอร์
  • เมื่อตรวจดูโค้ด JavaScript ก็พบการเรียก API สำหรับฟังก์ชันเฉพาะพนักงาน เช่น ค้นหารถของดีลเลอร์ ค้นหาบัญชี ลงทะเบียน และยกเลิกการลงทะเบียน
  • เราลองเข้าถึง API endpoint ด้วย VIN ของรถที่เราเป็นเจ้าของเองโดยตรง แต่ได้รับข้อผิดพลาด 401 Unauthorized โทเค็นของดีลเลอร์ใช้ไม่ได้

เข้าถึง Dealer API ด้วยบัญชีทั่วไป

  • เราจึงลองสมัครเว็บไซต์ดีลเลอร์ด้วยบัญชีทั่วไปเพื่อสร้าง access token แล้วนำไปใช้เข้าถึง API เพราะรูปแบบคล้ายกับเว็บไซต์ owners
  • ผลคือสามารถสมัครผู้ใช้บนเว็บไซต์ดีลเลอร์ได้ด้วยวิธีเดียวกับเว็บไซต์ owners!
  • หลังจากล็อกอินและออก access token แล้ว เมื่อเรียก VIN lookup API ที่ก่อนหน้านี้เข้าถึงไม่ได้ พบว่าคำตอบมีชื่อ หมายเลขโทรศัพท์ และอีเมลของเจ้าของรถอยู่ด้วย
  • นั่นหมายความว่า หากยืนยันตัวตนกับพอร์ทัลดีลเลอร์ด้วยบัญชีทั่วไปที่เราสร้างขึ้นเองและใช้ channel header ที่แก้ไข ก็จะเข้าถึง API สำหรับดีลเลอร์ได้ทั้งหมด

เข้าถึงรถโดยไม่ได้รับอนุญาต

  • หลังวิเคราะห์โค้ด JavaScript อยู่หลายชั่วโมง เราก็เข้าใจว่า endpoint สำหรับลงทะเบียน ยกเลิกการลงทะเบียน และแก้ไขข้อมูลรถทำงานอย่างไร
  • สามารถเข้าถึงรถของเหยื่อได้ด้วย 4 ขั้นตอนต่อไปนี้:
    1. สร้างโทเค็นดีลเลอร์และดึงค่า "token" จาก HTTP response header
    2. หาอีเมลและหมายเลขโทรศัพท์ของเหยื่อ
    3. ใช้อีเมลที่รั่วไหลและ VIN เพื่อแก้ไขสิทธิ์การเข้าถึงของเจ้าของเดิม
    4. เพิ่มผู้โจมตีเป็นเจ้าของคนใหม่ของรถ
  • จากมุมมองของเหยื่อ จะไม่มีการแจ้งเตือนว่ามีคนเข้าถึงรถของตนหรือมีการเปลี่ยนสิทธิ์เกิดขึ้น
  • ผู้โจมตีสามารถหาค่า VIN จากป้ายทะเบียนของใครบางคน จากนั้นใช้ API เพื่อติดตามเหยื่ออย่างลับ ๆ และส่งคำสั่งอย่างเปิดประตู สตาร์ตรถ หรือบีบแตรได้

การสร้างแดชบอร์ดพิสูจน์แนวคิด

  • เพื่อแสดงให้เห็นถึงความร้ายแรงของช่องโหว่นี้ เราได้สร้างแดชบอร์ดพิสูจน์แนวคิดที่ทำให้ผู้โจมตีสามารถ (1) ป้อนป้ายทะเบียนของรถ Kia (2) ดึงข้อมูลส่วนบุคคลของเจ้าของรถ และ (3) สั่งควบคุมรถได้
  • หน้า "Exploit" ใช้สำหรับพยายามเข้าถึงรถโดยไม่ได้รับอนุญาต ส่วนหน้า "Garage" ใช้สั่งงานและติดตามตำแหน่ง
  • เราทดสอบกับรถ Kia ที่เช่ามาและถูกล็อกอยู่ และในวิดีโอด้านบนสุดของบล็อกจะเห็นการแฮ็กรถผ่านสมาร์ตโฟน จากนั้นสั่งล็อก/ปลดล็อกประตู เปิด/ดับเครื่อง บีบแตร และติดตามตำแหน่งจากระยะไกลได้

บทสรุป

  • เช่นเดียวกับที่ Meta อาจเผลอทำการเปลี่ยนแปลงโค้ดระหว่างการพัฒนาจนเปิดทางให้ใครบางคนยึดบัญชี Facebook ของคุณได้ ผู้ผลิตรถยนต์ก็อาจสร้างช่องโหว่ลักษณะเดียวกันขึ้นในรถของคุณได้เช่นกัน
  • ต่อจากนี้ไป เราจะยังคงพบช่องโหว่ในรถยนต์ต่อไป

ไทม์ไลน์

  • 06/07/24 16:40 UTC - สอบถามทีม Kia ถึงวิธีรายงานช่องโหว่
  • 06/10/24 13:21 UTC - ได้รับคำตอบจากทีม Kia
  • 06/11/24 22:41 UTC - รายงานช่องโหว่
  • 06/12/24 18:20 UTC - ส่งอีเมลแจ้งเตือน ticket เนื่องจากระดับความรุนแรง
  • 06/14/24 18:00 UTC - ทีม Kia ตอบว่ากำลังตรวจสอบ
  • 06/18/24 16:41 UTC - ส่งอีเมลแจ้งเตือน ticket และภาพหน้าจอของเครื่องมือเนื่องจากระดับความรุนแรง
  • 06/20/24 02:54 UTC - ส่งอีเมลแจ้งเตือน ticket และภาพหน้าจอการเข้าถึงผ่านการป้อนป้ายทะเบียน
  • 08/12/24 12:30 UTC - ขออัปเดตผ่านอีเมลแจ้งเตือน ticket
  • 08/14/24 17:41 UTC - ทีม Kia ตอบว่าช่องโหว่ได้รับการแก้ไขแล้วและกำลังทดสอบ
  • 09/26/24 08:15 UTC - ยืนยันการแก้ไขช่องโหว่และเปิดเผยต่อสาธารณะ

ความเห็นของ GN⁺

  • นี่เป็นกรณีที่น่าตกใจซึ่งแสดงให้เห็นว่าการแฮ็กรถยนต์กำลังกลายเป็นเรื่องจริง ยิ่งรถเชื่อมต่ออินเทอร์เน็ตมีมากขึ้น ปัญหาช่องโหว่แบบนี้ก็จะยิ่งรุนแรงขึ้น
  • เหตุการณ์นี้สะท้อนอย่างชัดเจนถึงการขาดความตระหนักด้านความปลอดภัยและการออกแบบระบบที่หละหลวมของผู้ผลิตรถยนต์ การนำ secure software development lifecycle (SSDLC) มาใช้ เช่น การจัดการช่องโหว่ซอฟต์แวร์และ code review ดูเป็นเรื่องเร่งด่วน
  • เทคโนโลยีควบคุมรถจากระยะไกลช่วยเพิ่มความสะดวก แต่ในขณะเดียวกันก็ขยายพื้นผิวการโจมตีด้วย การรักษาสมดุลระหว่างเทคโนโลยี ความปลอดภัย และความเป็นส่วนตัวจึงสำคัญ
  • เหตุการณ์นี้ยังเผยให้เห็นปัญหาของวิธีการยืนยันตัวตนที่อิงกับข้อมูลส่วนบุคคล การที่รู้เพียงป้ายทะเบียนก็ยึดรถได้ถือว่าหละหลวมเกินไป จำเป็นต้องมีระบบยืนยันตัวตนที่เข้มแข็งขึ้น เช่น biometric authentication หรือ multi-factor authentication
  • ผู้ใช้ควรสามารถรับรู้และควบคุมสถานะความปลอดภัยของรถตัวเองได้ ต้องมีฟังก์ชันแจ้งเตือนว่าใครเข้าถึงรถของฉัน และมีการสั่งงานอะไรบ้าง

4 ความคิดเห็น

 
aer0700 2024-09-28

โห น่ากลัวมาก

 
unsure4000 2024-09-27

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

 
bbulbum 2024-09-30

สงสัยโครงสร้างแพ็กเกจอยู่พอดี ที่แท้ก็ให้ใช้ฟรีพื้นฐานหลายปีเพื่อดึงให้สมัครนี่เอง..

 
GN⁺ 2024-09-27
ความคิดเห็นจาก Hacker News
  • การที่ Kia ตัดสินใจละเว้นระบบ interlock ในรถที่จำหน่ายในสหรัฐฯ ทำให้เกิดปัญหาการขโมยรถในวงกว้างทั่วประเทศ

    • ส่งผลให้การโจรกรรมรถพุ่งสูงขึ้นในเมืองอย่าง Milwaukee และ Chicago
    • สามารถขโมยรถได้ด้วยสาย USB ที่งอเล็กน้อยเท่านั้น
  • สามารถสร้างแอป "rideshare" ที่ครอว์ลฐานข้อมูลรถ Kia ที่มีช่องโหว่ เพื่อแสดงรถ Kia ใกล้เคียงและปลดล็อกได้

  • ปัญหาคือใครก็สมัครเป็นดีลเลอร์ได้ และดีลเลอร์ยังสามารถดูข้อมูลรถที่ยังไม่ได้ขายได้ด้วย

    • พนักงานดีลเลอร์อาจนำสิ่งนี้ไปใช้ในการ stalking ได้
  • ตามบทความ เดิมทีมีเพียง Kia และดีลเลอร์เท่านั้นที่ติดตามรถได้ แต่ตอนนี้คนที่ "ไม่ได้รับอนุญาต" ก็ทำได้แล้ว

    • จึงเกิดคำถามว่าทำไมการที่บริษัทติดตามรถถึงยอมรับได้ แต่ถ้าคนอื่นทำกลับกลายเป็นปัญหา
  • ปัญหาคือ Kia เก็บข้อมูลเกี่ยวกับรถและเจ้าของไว้เป็นจำนวนมาก

    • แม้ช่องโหว่นี้จะถูกแก้ไขแล้ว แต่ปัญหาเรื่องข้อมูลยังคงอยู่
  • พี่ชายคนหนึ่งที่เป็นเจ้าของรถ Kia กำลังได้รับผลกระทบด้านลบต่อสุขภาพจิตจากเหตุการณ์ขโมยรถ

  • จะไม่ซื้อรถที่ต้องสร้างบัญชีออนไลน์เพื่อเปิดใช้งานรถ

    • รถ Kia ที่เคยเป็นเจ้าของก่อนหน้านี้กินน้ำมันเครื่อง 1 quart ทุก ๆ 1,000 ไมล์ ตั้งแต่ก่อนถึง 100,000 ไมล์
  • ตอนนี้ไม่มีรถใหม่ในตลาดที่ไม่มีฟีเจอร์เชื่อมต่อแล้ว

    • จึงสงสัยว่ายังเป็นไปได้หรือไม่ที่จะผลิตรถที่ไม่เชื่อมต่ออินเทอร์เน็ต
  • ในฐานะเจ้าของรถ Kia รู้สึกโล่งใจที่ช่องโหว่ถูกแก้แล้วและไม่ได้ถูกนำไปใช้ในทางร้าย

    • แต่ Kia ก็ยังต้องปรับปรุงอีกมาก
  • คิดว่าไม่ควรเชื่อมต่อรถเข้ากับอินเทอร์เน็ต