ห้องสมุดทางปัญญา

Secure Coding (ตอนที่ 1)

Secure Coding (ตอนที่ 1)

Secure Coding คือ แนวทางการพัฒนาซอฟต์แวร์ให้มั่นคงปลอดภัยจากผู้ไม่ประสงค์ดี โดยกระบวนการพัฒนาซอฟต์แวร์จะมีกระบวนการออกแบบ พัฒนา และ การทดสอบช่องโหว่ของซอฟต์แวร์ ตามกระบวนการในวัฏจักรวงจรการพัฒนาซอฟต์แวร์อย่างปลอดภัย  (Secure Software Development Life Cycle: S-SDLC) ซึ่ง Secure Coding เป็นส่วนหนึ่งของกระบวนการที่สำคัญ โดยแนวทางที่ OWASP แนะนำประกอบไปด้วยหัวข้อดังนี้   Input Validation ในการรับข้อมูลใด ๆ จาก Client ต้องมีการตรวจสอบข้อมูลที่รับมาถูกต้องตามที่ต้องการ Output Encoding การแสดงผลข้อมูลบนหน้าเว็บ จะต้องถูกแปลงให้อยู่เป็นภาษา HTML สำหรับการแสดงผล จะสามารถป้องกันการโจมตี Cross Site Script (XSS) Authentication and Password Management ซอฟต์แวร์ที่ถูกพัฒนาหากมีความสำคัญ จะต้องมีการยืนยันตัวตนก่อนเข้าใช้งาน ในทุกฟังก์ชันการใช้งาน และ รหัสผ่านสำหรับการเข้าใช้งาน ควรถูกบังคับในการตั้งรหัสผ่านอย่างแข็งแรง พร้อมทั้งการจัดเก็บรหัสผ่านห้ามเก็บในรูปแบบของ Clear Text ควรจัดเก็บโดยการใช้ฟังก์ชันแฮช (Hash Function) ที่แข็งแรง รวมถึงการใช้ค่าสุ่ม (Salt) สำหรับการป้องกันความพยายามในการหารหัสผ่านเพื่อเข้าใช้งาน (Brute Force) Session Management การใช้งานเว็บนั้นจะมีการเก็บข้อมูลต่าง ๆ อยู่ในรูปของ Session และหากใช้การยืนยันตัวตน (Authentication) ด้วยก็จะมีข้อมูลถูกเก็บอยู่ในรูปแบบของ Session เช่นเดียวกัน ดังนั้น ควรที่จะต้องมี การ logout ออกจากระบบ และมีการลบข้อมูลที่ถูกเก็บอยู่ใน Session Access Control ควรมีการควบคุมการเข้าใช้งานตามสิทธิ์ของการเข้าใช้งาน โดยต้องสามารถป้องกันการเข้าถึงข้อมูลของผู้อื่นนอกเหนือสิทธิ์การเข้าใช้งาน Cryptographic การจัดเก็บข้อมูลที่มีความสำคัญในฐานข้อมูลต้องมีการเข้ารหัสลับที่ดีเพื่อป้องกันผู้ที่สามารถเข้าถึงฐานข้อมูล จะสามารถล่วงรู้ข้อมูลที่เป็นความลับได้ Error Handling and Logging ซอฟต์แวร์ที่ดี ควรที่จะปิดการแจ้งข้อผิดพลาดไม่ให้แสดง แต่สามารถแสดงอยู่ในรูปแบบของ Log ได้ และการ Log ควรจะต้อง Log การใช้งานของฟังก์ชันงานที่สำคัญ Communication Security ช่องทางในการแลกเปลี่ยนข้อมูลที่มีความลับ หรือ มีข้อมูลผู้ใช้งานอยู่นั้น จะต้องป้องกันไม่ให้ผู้อื่นล่วงรู้ได้ ซึ่งข้อมูลที่ผ่านเครือข่ายนั้นมีความเสี่ยงในการล่วงรู้ข้อมูลที่ส่งผ่านในเครือข่ายได้ ดังนั้นควรใช้โพรโทคอลที่สามารถรักษาความลับได้อย่าง HTTPS ในบทความหน้าจะกล่าวถึงรายละเอียดของแต่ละข้อ เพื่อให้ผู้อ่านสามารถเข้าใจและเกิดแนวคิดในการนำไปปรับใช้งานได้ เอกสารอ้างอิง https://www.owasp.org/index.php/Secure_Coding_Cheat_Sheet ...
อ่านต่อ
ระบบบริหารจัดการความมั่นคงปลอดภัยสารสนเทศ (ตอนที่ 1)

ระบบบริหารจัดการความมั่นคงปลอดภัยสารสนเทศ (ตอนที่ 1)

มาตรฐานระบบบริหารจัดการความมั่นคงปลอดภัยสารสนเทศ (Information Security Management System) ในปัจจุบันนับว่าเป็นมาตรฐานที่ได้รับความนิยมสำหรับหลายองค์กร ในการนำข้อกำหนดของมาตรฐานมาปรับประยุกต์ใช้ เพื่อการจัดการด้านความมั่นคงปลอดภัยสารสนเทศภายในองค์กร  สำหรับปัจจุบันเวอร์ชั่นของมาตรฐานนี้คือ ISO/IEC 27001:2013 ที่ได้มีการปรับปรุงให้มีความสอดคล้องตามแนวทางของคณะกรรมการกำหนดมาตรฐาน  สาระสำคัญของข้อกำหนดมีดังนี้ ข้อกำหนดที่ 4 บริบทขององค์กร (Context of the organization) สาระสำคัญ คือการที่องค์กรจะต้องเข้าใจลักษณะขององค์กร ธุรกิจ องค์ประกอบรอบด้านที่มีผลกระทบและได้รับผลกระทบจากองค์กรให้เข้าใจ ก่อนที่จะกำหนดขอบเขตของการบริหารจัดการความมั่นคงปลอดภัยสารสนเทศ เพื่อให้ระบบบริหารจัดการฯ ที่จัดทำขึ้นสามารถที่สร้างคุณค่า (Value) ได้อย่างแท้จริงแต่องค์กร ตัวอย่างเช่น หากองค์กรของเราดำเนินธุรกิจเกี่ยวกับการให้บริการด้านการแพทย์ มีการจัดเก็บข้อมูลผู้เข้ารับบริการ องค์กรก็ต้องพิจารณาถึงบริบทให้เข้าใจว่า ใครคือคนที่องค์กรจำเป็นที่จะต้องตระหนักให้ความสำคัญ (Interested parties) กลุ่มคนเหล่านั้นสนใจประเด็นใด (Needs & Expectations) แล้วจึงกลับมาพิจารณาขอบเขตของระบบบริหารจัดการฯ เพื่อให้มั่นใจว่าระบบที่กำลังจะดำเนินการสามารถสร้างคุณค่าและตอบสนองกลุ่มคนเหล่านั้นได้อย่างแท้จริง  ข้อกำหนดที่ 5 ผู้นำ (Leadership) สาระสำคัญ คือ การที่ผู้นำระดับสูงซึ่งมาตรฐานเรียกว่า "Top management" จะต้องเข้ามามีส่วนในการกำกับและควบคุม (Govern) ทั้งนี้ คำว่า "ผู้นำระดับสูง" ไม่ได้จำเป็นที่จะต้องเป็นผู้นำระดับสูงสุดขององค์กร แต่จะต้องมีสิทธิ์เพียงพอในการสั่งการ กำกับดูแลและควบคุม โดยข้อกำหนดที่เกี่ยวข้องกับการควบคุมประกอบด้วย (1) ภาวะผู้นำและพันธสัญญา (2) นโยบาย และ (3) บทบาท ความรับผิดชอบและอำนาจหน้าที่  ข้อกำหนดที่ 6 การวางแผน (Planning) สาระสำคัญในหัวข้อนี้ประกอบด้วย 2 ส่วน คือ (1) การบริหารความเสี่ยง และ (2) การวางแผนเพื่อบรรลุวัตถุประสงค์ด้านความมั่นคงปลอดภัยสารสนเทศ สำหรับเรื่องการบริหารความเสี่ยง (Risk management) มาตรฐานเวอร์ชั่นปัจจุบัน ได้แนะนำมาตรฐานการบริหารความเสี่ยง (Risk Management - Principles and guidelines) ISO 31000 มาประกอบการประยุกต์ปฏิบัติ และได้ตัดรายละเอียดทางเทคนิคสำหรับการประเมินความเสี่ยงบางอย่างไป เพื่อให้เกิดความครอบคลุมในการนำมาประยุกต์ใช้งาน  นอกจากนี้ เมื่อมีการประเมินความเสี่ยงแล้ว องค์กรยังจำเป็นที่จะต้องวิเคราะห์และวางแผนการดำเนินงานอื่นที่จำเป็นอีก เพื่อให้มั่นใจว่าองค์กรจะสามารถบรรลุตามวัตถุประสงค์ด้านความมั่นคงปลอดภัยสารสนเทศ (Information Security Objectives) ที่กำหนดขึ้นมาได้ ข้อกำหนดที่ 7 สนับสนุน (Supporting) ในหัวข้อนี้ประกอบด้วยข้อกำหนดย่อยจำนวน 5 หัวข้อ ดังนี้ (1) ทรัพยากร (2) ความรู้ความสามารถ (3) ความตระหนัก (4) การสื่อสาร และ (5) เอกสารข้อมูล  ทั้งนี้ ในหัวข้อการสื่อสาร ถือว่ามีความเปลี่ยนแปลงและมีความชัดเจนมากยิ่งขึ้น เนื่องจากมาตรฐานได้กำหนดหัวข้อให้องค์กรจะต้องพิจารณาอย่างชัดเจนเมื่อมีการสื่อสาร ซึ่งหากองค์กรสามารถปฏิบัติตามที่มาตรฐานกำหนดก็คาดว่าจะส่งผลต่อผู้เกี่ยวข้องเกิดความเข้าใจและดำเนินงานได้อย่างมีประสิทธิผลมายิ่งขึ้น ข้อกำหนดที่ 8 การปฏิบัติการ (Operation) คือ การนำแผนการลดความเสี่ยงที่ได้จากการข้อกำหนดที่ 6.1 และแผนเพื่อบรรลุวัตถุประสงค์ด้านความมั่นคงปลอดภัยสารสนเทศ ตามข้อกำหนดที่ 6.2 มาดำเนินงาน จากนั้น ดำเนินการทบทวนและปรับปรุงรายการความเสี่ยงและแผนการลดความเสี่ยง ซึ่งอาจเปลี่ยนแปลงไปจากเดิม ข้อกำหนดที่ 9 การประเมินสมรรถนะ (Performance Evaluation) หากพิจารณาตามวงจรเดมิ่ง (Deming-cycle) แล้วก็กล่าวได้ว่าข้อกำหนดนี้คือขั้นตอนของการตรวจสอบ (Check) ซึ่งประกอบด้วย (1) การติดตาม วัดผล วิเคราะห์ และประเมินผล (2) การตรวจสอบภายใน และ (3) การทบทวนโดยฝ่ายบริหาร  โดยผลลัพธ์จากในข้อกำหนดนี้ หากดำเนินการอย่างถูกต้อง จะเป็นกลไกที่ช่วยผลักดันไปสู่การพัฒนาและปรับปรุงระบบบริหารจัดการฯ มีประสิทธิผลยิ่งขึ้น ข้อกำหนดที่ 10 การปรับปรุง (Improvement) กล่าวถึงการปรับปรุงโดยแบ่งเป็น (1) ความไม่สอดคล้องและการปรับปรุงแก้ไข และ (2) การปรับปรุงพัฒนาอย่างต่อเนื่อง โดยเนื้อหาของหัวข้อ "ความไม่สอดคล้องและการปรับปรุงแก้ไข" ในเวอร์ชั่นปัจจุบันมีการปรับปรุงให้กระชับขึ้น จึงเป็นการรวมใจความของ การดำเนินการแก้ไข (Corrective Action) และการดำเนินการป้องกัน (Preventive Action) เข้าด้วยกัน   บทความในตอนต่อไปจะกล่าวถึงมาตรการควบคุมและวัตถุประสงค์การควบคุม (Controls and Control Objectives) ซึ่งเป็นที่มีเนื้อหาจำนวนมาก และทำให้ผู้ที่ไม่คุ้นเคยกับมาตรการความปลอดภัย รู้สึกถึงความแตกต่างอย่างมากระหว่างมาตรฐานระบบบริหารจัดการความมั่นคงปลอดภัยสารสนเทศกับมาตรฐานอื่น ...
อ่านต่อ