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

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

ตัวอย่างกรณีศึกษาที่เคยเกิดขึ้น เช่น ซอฟต์แวร์ที่ใช้สำหรับตรวจสอบและอัปเดตไดรเวอร์ที่ถูกติดตั้งมาพร้อมกับเครื่องคอมพิวเตอร์บางรุ่นไม่มีการตรวจสอบความถูกต้องของไฟล์อัปเดต ทำให้ผู้ประสงค์ร้ายสามารถหลอกให้ดาวน์โหลดไฟล์อัปเดตปลอมได้ (ข่าวเก่า <a href="https://www.thaicert.or.th/newsbite/2016-06-08-05.html">https://www.thaicert.or.th/newsbite/2016-06-08-05.html</a>) หรือเซิร์ฟเวอร์ของผู้พัฒนาซอฟต์แวร์ถูกเจาะระบบแล้วใช้เผยแพร่ไฟล์อัปเดตที่มีมัลแวร์ฝังอยู่ ทำให้คอมพิวเตอร์หลายหมื่นเครื่องตกเป็นเหยื่อ (ข่าวเก่า <a href="https://www.thaicert.or.th/newsbite/2017-07-11-02.html">https://www.thaicert.or.th/newsbite/2017-07-11-02.html</a>)

กรณีเซิร์ฟเวอร์ของผู้พัฒนาซอฟต์แวร์ถูกเจาะระบบแล้วถูกใช้เผยแพร่มัลแวร์นั้นอาจเกิดขึ้นได้ไม่บ่อยนัก แต่กรณีที่ผู้ประสงค์ร้ายปลอมตัวเป็นเซิร์ฟเวอร์เผยแพร่ไฟล์อัปเดตปลอมนั้นสามารถเกิดขึ้นได้ง่ายกว่ามาก ตัวอย่างเช่น ผู้ประสงค์ร้ายอาจเชื่อมต่อเครือข่าย Wi-Fi สาธารณะ (เช่น ในห้างสรรพสินค้า โรงแรม หรือร้านกาแฟ) แล้วตั้งเซิร์ฟเวอร์ปลอมสำหรับเผยแพร่ไฟล์อัปเดต ซึ่งก็อาจทำได้โดยการใช้เครื่องมืออย่างเช่น Evilgrade (<a href="https://github.com/infobyte/evilgrade">https://github.com/infobyte/evilgrade</a>) มาช่วยในการทำงาน หากมีเหยื่อเชื่อมต่อเข้ามาในเครือข่าย Wi-Fi เดียวกัน แล้วมีการเรียกอัปเดตซอฟต์แวร์ ไฟล์มัลแวร์ก็จะถูกดาวน์โหลดลงไปติดตั้งในเครื่องของเหยื่อ ส่งผลให้ผู้ประสงค์ร้ายสามารถควบคุมเครื่องดังกล่าวได้ทันที

ข้อแนะนำในการพัฒนาซอฟต์แวร์ให้ปลอดภัย ควรใส่ใจกระบวนการอัปเดต ซึ่งสามารถทำได้โดยใช้การตรวจสอบทั้ง 2 ขั้นตอนนี้ควบคู่กัน
<ol>
 	<li>ดาวน์โหลดไฟล์อัปเดตจากเซิร์ฟเวอร์ผ่านช่องทางที่มีความมั่นคงปลอดภัย เช่น ใช้ HTTPS เพื่อไม่ให้ถูกดักแก้ไขเปลี่ยนแปลงข้อมูลระหว่างทาง</li>
 	<li>ตรวจสอบความถูกต้องของไฟล์อัปเดตที่ดาวน์โหลดมา โดยอาจใช้ใบรับรองดิจิทัลเข้ามาช่วย</li>
</ol>
ในฝั่งของผู้ใช้ เพื่อความปลอดภัยควรปฏิบัติดังนี้
<ol>
 	<li>หากเชื่อมต่อเครือข่ายที่ไม่น่าเชื่อถือ (เช่น Wi-Fi สาธารณะ) ควรพิจารณาก่อนดาวน์โหลดซอฟต์แวร์จากเว็บไซต์ที่ไม่ได้ใช้การเชื่อมต่อแบบ HTTPS หรือพิจารณาก่อนใช้งานคุณสมบัติดาวน์โหลดไฟล์อัปเดตอัตโนมัติ</li>
 	<li>หากเชื่อมต่อเครือข่ายที่น่าเชื่อถือ (เช่น อินเทอร์เน็ตที่บ้านหรือที่ทำงาน) ควรหมั่นอัปเดตซอฟต์แวร์ที่ติดตั้งในเครื่องให้เป็นเวอร์ชันล่าสุด</li>
</ol>
<strong>ที่มา:</strong> <a href="https://insights.sei.cmu.edu/cert/2017/06/the-consequences-of-insecure-software-updates.html">CERT</a> l <a href="https://www.thaicert.or.th/newsbite/2017-08-03-01.html#2017-08-03-01">ThaiCERT</a>