นับเป็นเรื่อง talk of the town ในวงการ IT ของบ้านเรา เมื่อแอพ “ดาวเหนือ” ของ กกต. ที่ถูกสร้างขึ้นมาใช้นำทางประชาชนไปยังคูหาเลือกตั้ง และตรวจสอบรายชื่อผู้มีสิทธิเลือกตั้ง มีความบกพร่องในเรื่องของการปกป้องข้อมูลที่ควรจะเป็นความลับ ทำให้ใครก็ตามที่มีความสามารถทางด้าน IT ซักเล็กน้อยก็สามารถค้นหาข้อมูลและที่อยู่ของใครก็ได้ผ่านการสุ่มหมายเลขบัตรประชาชนทันที

 รู้จักกับ “ดาวเหนือ”

แอพดาวเหนือ ถูกสร้างขึ้นมาโดยบริษัท Pheonec Co.,Ltd. ซึ่งน่าจะถูกว่าจ้างโดย กกต. (สำนักงานคณะกรรมการการเลือกตั้ง) ให้ทำขึ้นมา โดยใช้เวลาในการพัฒนาราว 1 ปี และงบประมาณราว 150,000 บาท (ข้อมูลจากเดลินิวส์จริงๆเขียน 1.5 แสนล้านบาท ซึ่งไม่น่าจะใช่) สามารถให้ผู้ใช้กรอกข้อมูลเลขบัตรประชาชนลงไป 13 หลัก แล้วตัวแอพจะแจ้งข้อมูลที่เกี่ยวกับการเลือกตั้งของผู้ใช้ ทั้งหน่วยเลือกตั้ง ที่ตั้งหน่วย ลำดับการใช้สิทธิ์ และแผนที่นำทางไปยังหน่วยเลือกตั้งนั่นเอง

 

จะมีทำไมในเมื่อเลือกตั้งยังไม่รู้จะมีเมื่อไหร่?

อย่าเพิ่งเข้าใจผิดว่าการใช้สิทธิ์เลือกตั้งนั้นต้องมีแต่การเลือก ส.ส. แต่ว่ายังมีการเลือกตั้งใช้สิทธิ์อื่นๆด้วย ซึ่งตัวที่กำลังจะจัดขึ้นเร็วๆ นี้ได้แต่การออกเสียงประชามติร่างรัฐธรรมนูญที่จะมีขึ้นช่วงปลายเดือน ก.ค. นี้

ฟังดูดีอยากโหลดเลยล่ะสิ อ่ะขอเชิญจิ้มไปโหลดมาลองกันได้

 

ค้นหาข้อมูลตามเลขบัตรประชาชน ความสามารถเดียว แต่ภัยมหันต์

Tips: เลขบัตรประจำตัว 13 หลักของเรานั้น แต่ละหลักมีความหมายนะ มีที่มาที่ไปนะ ขอเข้าไปอ่าน ข้อกำหนดหมายเลขบัตรประชาชน กันได้

อย่างที่บอกไปข้างต้นว่า “ใครก็ตามที่มีความสามารถทางด้าน IT ซักเล็กน้อยก็สามารถค้นหาข้อมูลและที่อยู่ของใครก็ได้ผ่านการสุ่มหมายเลขบัตรประชาชน” โดยคำจำกัดความของ ใครก็ตามที่มีความรู้ด้าน IT ซักเล็กน้อย (สำหรับผม) อาจจะเป็นเพียงแค่กลุ่มผู้ใช้แอนดรอยด์สายฮาร์ดคอ (super user) ที่มีความรู้ความสามารถในการ root เครื่องแอนดรอยด์ผ่านคำสั่ง command line ได้ แค่ลองค้นหาข้อมูลเพิ่มเติมนิดหน่อยก็สามารถแอบเข้าไปล้วงลึกเพื่อหาวิธีดึงข้อมูลส่วนตัวจากแอพ “ดาวเหนือ” ในระบบ “แอนดรอยด์” ได้แล้ว

วิธีการเจาะข้อมูล

ที่เน้นย้ำว่าในระบบ “แอนดรอยด์” เป็นเพราะวิธีการหาช่องโหว่บนแอพดาวเหนือนั้น สามารถทำได้ง่ายผ่านแอพในระบบแอนดรอยด์ ส่วนแอพในระบบ iOS นั้นก็สามารถทำได้เช่นกันแต่อาจจะยากกว่าในระบบแอนดรอยด์อยู่หลายขั้น ส่วนวิธีการนั้นสามารถทำได้โดยใช้กระบวนการวิศวะกรรมย้อนกลับ (decompile) ที่จะแปลงตัวไฟล์ติดตั้งในระบบแอนดรอยด์ (apk) ย้อนกลับไปเป็นรหัสต้นฉบับ ทำให้คุณปฏิญญาผู้ที่พบช่องโหว่ สามารถเข้าไปดูวิธีการดึงข้อมูลที่ทางแอพดาวเหนือเอามาแสดงในหน้าแอพได้ผ่านรหัสต้นฉบับ

 

ยกตัวอย่างโค๊ดจากแอพดาวเหนือที่จะเห็นได้ว่าเนื้อโค๊ดค่อนข้างสมบูรณ์มาก (แต่เนื้อโค๊ดในภาพตัวอย่างนี้ยกส่วนที่เป็นโค๊ดธรรมดาๆมาให้ดูเท่านั้น)

 

ส่วนการดึงข้อมูลของประชาชนออกมาแสดงในแอพดาวเหนือนั้น ทางแอพดึงข้อมูลผ่านระบบเว็บเซอร์วิสที่ตั้งอยู่บนเว็บของกรมการปกครอง โดยเว็บเซอร์วิสที่ว่านี้เป็นการถ่ายโอนข้อมูลผ่านโปรโตคอล http แบบไม่มีการเข้ารหัสเพื่อปกป้องความลับของข้อมูลที่รับส่งและไม่มีระบบการตรวจสอบสิทธิการเรียกใช้เว็บเซอร์วิส ทำให้ใครก็ตามที่มี url ของระบบเว็บเซอร์วิสนี้ ก็สามารถเรียกใช้ได้โดยแค่สุ่มตัวเลขของหมายเลขบัตรประชาชนในฐานข้อมูลถูก ก็สามารถดึงข้อมูลชื่อและที่อยู่ได้แล้ว

วิธีการแก้ไขของผู้พัฒนาแอพ

หลังจากที่คุณปฏิญญาได้เผยแพร่ปัญหาออกไป ทางผู้พัฒนาแอพได้ทำการตัดตอนแอพดาวเหนือโดยการอัพเดตแอพเวอร์ชัน 5.0 ทำให้เกิด force close เมื่อเปิดใช้งาน เพื่อป้องกันไม่ให้ผู้ที่โหลดแอพไม่สามารถใช้งานได้ชั่วคราวเพื่อเป็นการซื้อเวลาในการแก้ไขปัญหา :stare:

หลังจากที่แก้ปัญหาได้เสร็จแล้วทางผู้พัฒนาได้อัพเดตแอพเป็นเวอร์ชัน 6.0 ทำให้แอพสามารถกลับมาใช้งานได้เหมือนเดิม โดยสิ่งที่แก้เพิ่มเติมในแอพคือ การใส่คำเตือนไปถึงผู้ที่ชี้ถึงช่องโหว่….

[quote=มาตรา6]ผู้ใดล่วงรู้มาตรการป้องกันการเข้าถึงระบบคอมพิวเตอร์ที่ผู้อื่นจัดทำขึ้นเป็นการเฉพาะถ้านำมาตรการดังกล่าวไปเปิดเผยโดยมิชอบ ในประการที่น่าจะเกิดความเสียหายแก่ผู้อื่น ต้องระวางโทษจำคุกไม่เกินหนึ่งปี หรือปรับไม่เกินสองหมื่นบาทหรือทั้งจำทั้งปรับ

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

สรุป

เหตุการณ์ครั้งนี้ถือว่าเป็นบรรทัดฐานให้กับวงการของนักพัฒนาไทย ที่ควรให้ความสำคัญกับการปกป้องข้อมูลที่มีความสำคัญเวลารับส่งข้อมูลผ่านโปรโตคอลอินเตอร์เน็ต และควรป้องกันการทำวิศวกรรมย้อนกลับผ่านไฟล์ติดตั้งบนระบบแอนดรอยด์โดยการใช้ทูลช่วยอย่าง ProGuard ที่ทำให้การทำวิศวกรรมย้อนกลับ (Decompile) เป็นได้ยากขึ้น เพราะตอนนี้ APK ของแอพตัวนี้ไม่ได้มีการป้องกันอะไรเลย ทำให้สามารถดูมาแล้วแงะส่องโค๊ดกันเป็นว่าเล่นแล้ว