เรื่องที่สำคัญมากๆเกี่ยวกับโลกของการพัฒนาซอฟต์แวร์ นั่นก็คือ ความปลอดภัยของแอปพลิเคชันทำไมเรื่องนี้ถึงสำคัญ เป็นเพราะว่าในปัจจุบันเราก้าวเข้าสู่ยุค Digital Transformation เราอยู่กับหลากหลายแอปพลิเคชันในการทำธุรกรรมต่างๆมากมาย ไม่ว่าเราจะไปเที่ยว หรือ shopping ก็จะเกิดธุรกรรมออนไลน์เกิดขึ้น ซึ่งก็อาจทำให้เกิดความเสี่ยงที่เราจะถูกโจมตีหรือถูกแฮกข้อมูลทางออนไลน์ได้ หากย้อนกลับไปเมื่อสอง หรือ สามปีก่อน หลายๆท่านที่อยู่ในวงการไอทีก็น่าจะทราบข่าวเกี่ยวกับช่องโหว่ Log4j หรือ Log4shell ที่เกิดขึ้น ซึ่งได้สร้างความวุ่นวายให้กับองค์กรไอทีทั่วโลก ทีม security ของแต่ละองค์กรต้องรีบทำการแก้ไขซอฟต์แวร์เพื่อไม่ให้เกิดช่องโหว่นี้ขึ้น ก็เลยเป็นที่มาที่ว่าทำไมความปลอดภัยบนแอปพลิเคชันถึงเป็นสิ่งสำคัญ
เรามาพูดถึงเทคนิคในการสร้างความปลอดภัยให้กับแอปพลิเคชันกันครับ
1. การใช้ Static Application Security Testing (SAST)
SAST คือ เครื่องมือที่เอาไว้ตรวจสอบช่องโหว่บน source code โดยที่ code ไม่จำเป็นต้องทำการ running หมายความว่า เราไม่จำเป็นต้องเอา code ไป deploy ก่อน ก็สามารถใช้ SAST ในการตรวจสอบช่องโหว่ที่เกิดขึ้นได้
2. การใช้ Dynamic Application Security Testing (DAST)
DAST คือ การตรวจสอบช่องโหว่ที่จะเข้ามาจากภายนอก เป็นการตรวจสอบเมื่อ code ถูกรันไปแล้ว เพื่อตรวจสอบว่า application ที่ developer เขียนขึ้นมาสามารถที่จะถูกแฮกหรือถูกโจมตีจากภายนอกได้หรือเปล่า
3. การใช้ Software Composition Analysis (SCA)
คือ การตรวจสอบ library ที่ developer นำมาใช้ แน่นอนว่าแอปพลิเคชัน standalone ทั่วไป ไม่สามารถที่จะทำแอปพลิเคชันโดยที่ไม่นำ library ของบุคคลคนอื่นมาใช้ ส่วนใหญ่จะมีการยืม library ที่คนอื่นที่ทำไว้แล้วมาใช้งานกับแอปพลิเคชันของตัวเอง ดังนั้น เราจึงต้องตรวจสอบด้วยว่า library นั้นๆ มีช่องโหว่หรือไม่ นอกจากนี้ SCA ยังช่วยตรวจสอบเวอร์ชันได้อีกด้วย เช่น เวอร์ชันที่เรานำ library มาใช้นั้นเข้ากันได้กับข้อกำหนดทางกฎหมายหรือไม่
4. การตรวจสอบ Secret หรือ Token
คือ การตรวจสอบการเขียน code ว่าเรามีการเขียน code ที่มีการประกาศตัวแปรที่เป็น token หรือ password ไว้แบบโจ่งแจ้งบนแอปพลิเคชันหรือเปล่า เพราะบางที developer ของเราอาจไม่ได้ศึกษาเรื่องความปลอดภัยมาโดยตรง มีหน้าที่เขียน code เพื่อให้ใช้งานได้ตามต้องการ บางทีอาจจะละเลย หรือเผลอลืมไปว่ามีการประกาศ token หรือ password สำคัญไว้ใน code
เทคนิคทั้ง 4 ประการที่ได้กล่าวมาด้านบนนั้นไม่ว่าจะเป็น SAST, DAST, SCA และการตรวจสอบ Secret หรือ Token จะช่วยให้แอปพลิเคชันของมีความปลอดภัยมากยิ่งขึ้น และในปัจจุบันในตลาดก็มีหลากหลายเครื่องมือที่สามารถทำได้
ในวันนี้ผมมีเครื่องมือที่ชื่อ GuardRails ซึ่งเป็นเครื่องมือที่เอาไว้ตรวจสอบช่องโหว่บน source code โดย GuardRails มี concept ที่ว่า เมื่อ developer เป็นคนเขียน code ฉะนั้น developer ต้องเป็นผู้รับผิดชอบในเรื่องของความปลอดภัยด้วย หากอธิบายให้เข้าใจง่ายๆ คือ เมื่อ developer เขียน code เสร็จ ก็จะ commit code ขึ้นไปบน depositary ที่เก็บโค้ด ซึ่ง GuardRails มีความสามารถในการสแกนช่องโหว่บน depositary ได้เลย จึงเป็นที่มาของ concept ดังกล่าวที่ developer จะต้องเป็นผู้รับผิดชอบกรณีที่มีช่องโหว่เกิดขึ้นนั่นเอง
นอกจากจะทำให้มีความปลอดภัยมากขึ้นแล้ว ยังช่วยเพิ่มความเร็วให้ software development life cycle อีกด้วย ทำให้การพัฒนาซอฟต์แวร์เป็นไปได้รวดเร็วมากยิ่งขึ้น หากเราต้องรอให้ทีม security ทำ VA Scan หรือ ทำ pentest ก่อน แล้วค่อยนำมาให้ developer ช่วยแก้ทีหลัง ก็จะทำให้แอปพลิเคชันตัวนั้น go live ช้าขึ้นนั่นเอง
ความสามารถอีกอย่างหนึ่งของ GuardRails คือ การทำ Infrastructure as a Code หรือ Iac เป็นการตรวจสอบ Yaml file หรือ Manifest file ในปัจจุบันมีการใช้ Kubernetes Openshift กันมากขึ้น ฉะนั้นแล้วการตรวจสอบ configuration file ก่อนที่จะมี deploy ขึ้นไปก็เป็นอีกอย่างหนึ่งที่จะทำให้แอปพลิเคชันของเรามีความปลอดภัยมากขึ้นนั่นเอง
หวังว่าทุกท่านจะได้รับความรู้เกี่ยวกับการสร้างความปลอดภัยให้กับแอปพลิเคชันก่อนขึ้น production กันนะครับ แล้วเจอกันใหม่บทความหน้าครับ