Security Testing
สวัสดี พี่น้องชาว Welovebug ทุกท่านค่ะ วันนี้แอบอู๋งานมาเขียนเรื่อง พอดีมีโอกาศ ได้ไปร่วม งาน Security Testing ,Second Priority ? Thing againt ! ได้ทั้งความรู้และ ข้อสงสัยอยู่เหมือนกัน กลับมานั่งเขียน ก่อนอื่นขอขอบคุณ คุณ ณัฐดนัย เวียงวัง และคุณ กรองรัตน์ คามตะศิลา ที่ให้ความรู้เกี่ยวกับ Security Testing ซึ่งหัวข้อที่ได้พูดคุยกันหลักๆ ในช่วงแรกจะแยกเป็นส่วนของ Security และ Testing ซึ่งในช่วงแรกของการพูดคุยจะเป็นการพูดถึงหลักการเบื้องต้นของ Security ว่าประกอบไปด้วยอะไรบ้าง ซึ่งเริ่มต้นด้วยหัวข้อ และส่วนของ Software Testing และในตอนท้ายเป็นการนำ 2 ส่วนมาร่วมกัน ซึ่งเริ่มต้นด้วยเรื่องของ Security ค่ะ โดย คุณ กรองรัตน์ เริ่มอธิบายคำต่างๆ ที่ควรรู้ก่อน
Security Objectives
- Confidentiality : การรักษาความลับของข้อมูล
- Integrity : การรักษาสภาพของข้อมูลเมื่อบันทึกลง System แล้ว เมื่อเวลาเปลี่ยนไปข้อมูลจะไมถูกแก้ไข หรือเปลี่ยนแปลง จากบุคคลที่ไม่ได้รับอนุญาติ
- Availability : สภาพของข้อมูลที่พร้อมใช้

โดยทั้ง 3 คำนี้เป็นเรียกย่อๆว่า CIA ซึ่งเป็น Requirement พึ้นฐานที่ต้องมีกับระบบ ซึ่งทางคุณ กรองรัตน์ อธิบายเพิ่มโดยยก ตัวอย่าง Incident ของร้าน TJX ซึ่งเป็นร้านค้าคล้ายๆกับ Lotus บ้านเราโดยมีการ Hack ระบบผ่าน Wirless Network โดย Hack Wirless Point แล้วก็ทำการ setup server และทำการต่อ VPN ระหว่างร้าน TJX และต่อมาที่บ้านตัวเองเป็น Host โดย Hack ผ่าน Transaction การใช้บัตรเครดิตของลูกค้า
โดยอีกเรื่องที่ยกมาคือ เรื่อง การส่งเมล์ Spam ของสายการบิน British Airway ที่มีการส่ง E-Mail ออกไปจากระบบว่าถ้าส่งเมล์นี้ไปหาเพื่อนอีก 10 คนคุณจะได้ตั๋วเครื่องบินฟรี
ต่อมาเป็นการอธิบายเพิ่มเติมส่วนของ Defense Indepth Concept เป็นการป้องกันโดยแบ่งเป็น Layer และอธิบายเพิ่มเรื่องของ Security ว่ามีส่วนไหนบ้าง
- Data Security
- Application Security
- Host Security
- Network Security
- Pemeter Security
ซึ่งทั้ง 5 หัวข้อนี้วันนี้จะเน้นที่เรื่องของ Application Security ซึ่งตามที่เล่ามา เค้าจะเน้นไปในทางของ Software Testing เป็นหลัก และจะพูกถึงการนำ Security มา Apply ใช้กับ Software Testing ได้อย่างไร
Security Testing
คุณ ณัฏดนัย เริ่มต้นด้วยเรื่อง Security Test โดยมีศัพท์คำนึงที่น่าสนใจว่า Pen Test ตอนหลัง คุณ กรองรัตน์ มาอธิบายเพิ่มว่ามันคือคำว่า Penetration Testing ซึ่งเป็นสาขานึงของ Security Testing ซึ่งจะมีอธิบายกันในตอนท้าย
หัวข้อต่อมาที่คุณ ณัฏดนัย ได้พูดเพิ่มคือ Basic Concept ซึ่งได้ยกตัวอย่างเรื่องของ ประตู้ มาเป็นตัวเปรียบเทียบเรื่องความสำคัญของข้อมูลที่เราต้องการรักษาว่ามีระดับความสำคัญอย่างไร เรียกว่า Level of Security
ประตูบ้าน : ระดับความสำคัญ ก็เพื่อป้องกันคนภายนอกที่จะเข้ามาในบ้าน
ประตูรถ : ก็จะมีระดับป้องกันมากขึ้น โดยที่ป้องกันคนภายนอดเข้ามา และป้องกันไม่ให้สามารถขับออกไปได้
ประตูตู้เย็น : เปรียบเทียบในเรื่องของ ข้อมูลที่ไม่อยากให้รั่วไหลออกภายนอกได้
จิงๆ การทำ Security จะขึ้นอยู่กับสิ่งที่เราต้องการปกป้อง มากกว่าถ้ามันสำคัญมากหรือมีมูลค่ามาก ความเข้มข้นก็จะมากขึ้นด้วย หรือในทางกลับกันถ้า ข้อมูลนั้นไม่มีมูลค่าแต่เป็นข้อมูลที่เราไม่ต้องการให้ใครสามารถเข้ามาใช้งานได้ ข้อมูลนั้นก็อาจจะมีค่ามากกว่า ข้อมุลที่มีมูลค่ามากกว่าก็ได้ ตัวอย่างที่ คุณ ณัฐดนัย ยกมาคือ เราต้องการให้ประตูห้องน้ำบ้านเราแข็งแรง กว่า ประตูแบงค์ อันนี้น่าจะเห็นภาพชัดขึ้นนะค่ะ
ต่อมาเป็นเรื่องของ Security Testing Approach ซึ่งแบ่งออกเป็น 2 ส่วน คือ
- Security Spec
- Security non Spec
Spec ที่ว่าตามที่คุณ ณัฐดนัย บอก คือ Spec ตาม Requirement ซึ่งอันนี้ น่าจะเป็นอีก 1 คำถามว่าแล้วตาม Spec Requirement กับไม่ตามเนี่ย บางส่วนเนี่ยมันก็ต้องเทสนะ อันนี้ขอเป็นคำถามเพิ่มสำหรับ เพื่อนๆ Welovebug ว่าอะไรบ้างที่ว่าใน Spec กับนอก Spec แต่ก็ต้อง Test ?
สำหรับส่วนตัวแล้วการจะทำ Security Testing น่าจะต้องมีความรุ้เรื่องของ Security ก่อนเพราะถ้าเราเข้าใจส่วนของ Security ดีแล้ว และเข้าใจ Product ที่จะเทส เราก็สามารถนำทั้ง 2 เรื่องมา math กันเพื่อคิด Test Case ในส่วนของการทำ Security Testing ได้อย่างแน่นอนค่ะ
เรื่องต่อมาที่ คุณ ณัฐดนัย ได้พูดถึงคือ เรื่องของการนำ Software Testing มา math กับ Security โดยจะยืดตาม Software Testing คือแบ่งเป็น 2 ส่วน คือ
- Security Functional : ระบบสามารถทำงานตาม Function ได้
- Security Non Functional : จะแบ่งออกเป็น
- Usability : เป็นเรื่องของการใช้งานระบบ ที่ต้องง่ายสำหรับ user
- Reliability : เป็นเรื่องของความน่าเชื่อถือของข้อมูล
- Performance : เป็นเรื่องของประสิทธิภาพในการทำงานของระบบ ว่ามีประสิทธิภาพมากแค่ไหน ส่วนนี้จะดูที่ Respond Time ของระบบเป็นหลัก
ซึ่งสรุปคือ การทำ Security Test เราต้องมองทั้ง Functional และ Non Functional เพราะทั้ง 2 ส่วนนี้จะทำให้ Product มีคุณภาพมากขึ้นค่ะ
ส่วนเรื่องต่อมาเป็นเรื่องของ Security คุณ กรองรัตน์ ได้มาให้ความรู้เกี่ยวกับ Type of Security Testing ซึ่งแบ่งเป็น 3 ประเภท ดังนี้
- Dynamic Testing : เป็นการ Test โดยใช้ User เอง เช่น การใส่ค่าต่างในหน้าเว็บ
- Static Testing : ส่วนนี้จะเป็นส่วนของการอ่าน code โดยจะใช้ Tool ในการทำงาน จะทำตัวเหมือนเป็น Compiler ส่วนนี้จะเป็นการทำ Automate Test
- Penetration Testing & Vulnerability
- Penetration Testing : คือการทำตัวเหมือนเป็น Hacker ระบบ โดยจะทำยังไงให้ระบบล่ม จะเป็นการเทสแบบ White Box ,Black Box
- Vulnerability : เป็นการ Scan ช่องโหว่ของโปรแกรม
คุณ กรองรัตน์ ได้แนะนำเรื่องของ Best practise เรื่องของการทำ Data Foundation เป็นเรื่องของการเช็ค Input ค่าเพื่อเช็คช่องโหว่ของ Application และ มีเว็บไซด์ที่ Share ความรู้ต่างๆ เกี่ยวกับ การพัฒนา Application Security ต่างๆ ที่ OWASP
หัวข้อต่อมาเป็นเรื่องของ Limitation of Software Testing : เป็นส่วนของข้อจำกัดในการเทส หรืออะไรก็ตามที่ทำให้เกิดปัญหาในการ Test
- Time
- Resource (Software ,Hardware ,People ware)
- Knowledge
ความแตกต่างของ Software Testing กับ Security Testing คือเรื่องของ Awareness เป็นส่วนที่เสริมจาก Software Testing Awareness ในที่นี้จะหมายถึงความรุนแรงของ security ต่างๆ ซึ่งอาจจะเอามา Applie ได้
Security Testing Concept
- Confidentiality : มองมุม คนส่ง ว่าส่งถึงคนรับเท่านั้น
- Authentication : มองมุม ผู้รับ ว่าข้อมูลที่เราได้รับมาจากคนส่งที่เราต้องการ
- Integrity : ทำอย่างไร ข้อมูลที่ส่งไป จะไม่ถูกแก้ไข
- Authorization : การเข้าถึงข้อมูล
- Availability : การเข้าถึง ข้อมูลที่พร้อมใช้
- Non Repudiation : การปฏิเสทการรับผิด ระบบจะต้องมีการเก็บ Log ,Time Stamp ในการแก้ไข ข้อมูล
สำหรับคนที่ต้องการเริ่มทำ Security Testing คุณ ณัฐดนัย ให้แนวทางไว้ว่าให้ดู Security Testing Concept เป็นพื้นฐานในการเริ่มทำ Security Testing ค่ะ
เนื้อหาทั้งหมดที่เล่ามา เกิดจากการจดและจำมานะค่ะ อาจมีเนื้อที่ไม่ครบถ้วนแต่หวังว่าส่วนนึงน่าจะช่วยให้พี่น้องชาว Welovebug เข้าใจเรื่องของ Security Testing ขึ้นบ้างนะค่ะ ขอบคุณ คุณ ณัฐดนัย เวียงวัง และคุณ กรองรัตน์ คามตะศิลา อีกครั้ง สำหรับความรู้ที่ได้ในวันนั้นค่ะ
ฝาก คุณ ณัฐดนัย ช่วยอธิบายเพิ่มเรื่องของ Software Security Assurance เพิ่มด้วยค่ะ
