Secure Coding Compliance คืออะไร

หลังจากได้ทำ Training ไป เรามาดูกันว่า Secure Coding Compliance คืออะไร มีประโยชน์อย่างไรบ้าง

Secure Coding Compliance

Secure Coding Compliance คือกระบวนการและแนวทางปฏิบัติที่มุ่งมั่นให้การเขียนโค้ดเป็นไปตามมาตรฐานความปลอดภัย เพื่อป้องกันช่องโหว่ทางด้านความปลอดภัย (security vulnerabilities) ที่อาจถูกแฮกเกอร์หรือผู้ไม่ประสงค์ดีโจมตีในระบบซอฟต์แวร์ขององค์กร

องค์ประกอบหลักของ Secure Coding Compliance

  1. มาตรฐานและกรอบการทำงาน (Standards & Frameworks) มีมาตรฐานที่นิยมใช้เพื่อควบคุมและตรวจสอบ เช่น

    • OWASP Secure Coding Practices (แนะนำแนวทางป้องกันช่องโหว่ที่พบบ่อย)
    • ISO/IEC 27001 (มาตรฐานการจัดการความปลอดภัยของข้อมูล)
    • NIST Guidelines (แนวปฏิบัติสำหรับการพัฒนาซอฟต์แวร์ปลอดภัย)
  2. การเขียนโค้ดอย่างปลอดภัย (Secure Coding Practices) การปฏิบัติตามแนวทางการเขียนโค้ดที่ปลอดภัย เช่น:

    • การตรวจสอบ input validation (การกรองข้อมูลจากผู้ใช้)
    • การหลีกเลี่ยง hardcoding ข้อมูลสำคัญ เช่น รหัสผ่าน
    • การใช้ฟังก์ชันที่ปลอดภัย เช่น การจัดการ memory อย่างเหมาะสม
  3. การทดสอบความปลอดภัย (Security Testing) ใช้เครื่องมือและกระบวนการเพื่อค้นหาและแก้ไขจุดบกพร่อง เช่น:

    • Static Application Security Testing (SAST)
    • Dynamic Application Security Testing (DAST)
    • การทำ Penetration Testing
  4. การปฏิบัติตามข้อกำหนดกฎหมายและอุตสาหกรรม (Compliance Requirements) ซอฟต์แวร์ต้องเป็นไปตามกฎระเบียบที่เกี่ยวข้อง เช่น:

    • GDPR (การปกป้องข้อมูลส่วนบุคคลในยุโรป)
    • PCI-DSS (มาตรฐานความปลอดภัยสำหรับข้อมูลการชำระเงิน)
  5. การฝึกอบรมและสร้างวัฒนธรรมความปลอดภัย (Training & Culture)

    • ให้ทีมพัฒนาซอฟต์แวร์เข้าร่วมโปรแกรมฝึกอบรม เช่น Secure Code Warrior
    • สร้างวัฒนธรรมที่เน้นความสำคัญของการพัฒนาซอฟต์แวร์อย่างปลอดภัย

ประโยชน์ของ Secure Coding Compliance

  • ลดความเสี่ยงในการโจมตีทางไซเบอร์
  • เพิ่มความเชื่อมั่นของผู้ใช้ในระบบ
  • ลดค่าใช้จ่ายในการแก้ไขข้อบกพร่องในระยะยาว
  • สอดคล้องกับกฎระเบียบและมาตรฐานของอุตสาหกรรม

Secure Coding Compliance Success

ตัวอย่างของแนวทางหัวข้อการเขียนโค้ดที่ปลอดภัย โดยแบ่งเป็นดังนี้

  1. Security Misconfiguration Vulnerability:
    • เช่น Attacker เจอ admin page, แสดงรายละเอียดของ Error ให้ User เห็น ข้อมูลภายในรั่วไหล
    • แนวทางแก้ไข ต้อง config ให้ถูกต้อง ให้ software มีการ update version ล่าสุดสม่ำเสมอ
  2. Authentication - Insufficiently Protected Credentials:
    • เช่น hard-coded password
    • แนวทางแก้ไข เก็บ password ใน services เช่น password manager ปกป้องการมองเห็น password
  3. Sensitive Data Storage - Plain Text Storage of Sensitive Information:
    • เช่น Clear text format
    • แนวทางแก้ไข Blur or Blind Data by using strong encryption prior security communities or storage
  4. Insecure Cryptography - Exposed Key:
    • เช่น Key ไว้ใน public, ใช้ weak encryption หรือ hard-coded key
    • แนวทางแก้ไข Blur or Blind Data by using strong encryption prior security communities, key in private folder
  5. Unprotected Transport of Credentials:
    • เช่น ไม่ใช้ SSL TLS version ล่าสุด
    • แนวทางแก้ไข ใช้ SSL TLS version ล่าสุด
  6. Unprotected Transport of Sensitive Information:
    • เช่น ไม่ใช้ SSL TLS version ล่าสุด และโดน Man in the middle ดักข้อมูล
    • แนวทางแก้ไข ใช้ SSL TLS version ล่าสุด
  7. Weak Algorithm or Protocol Use:
    • เช่น ใช้ TLS เวอร์ชั่นเก่า มี Weak Algorithm และโดน Man in the middle ดักข้อมูล
    • แนวทางแก้ไข ใช้ SSL TLS version ล่าสุด, ไม่ใช้ Weak Algorithm
  8. Using Known Vulnerable Component/Untrusted Source:
    • เช่น ไม่ใช้ Component หรือ Package ที่เชื่อถือได้และเป็น version ล่าสุด
    • แนวทางแก้ไข ใช้ Component หรือ Package ที่เชื่อถือได้และเป็น version ล่าสุด
  9. SQL/NoSQL Injection:
    • เช่น ไม่ป้องกัน Statement Query จาก SQL/NoSQL Injection
    • แนวทางแก้ไข ใช้ ORM ตรวจสอบ Query เขียน Query ที่ป้องกัน Injection
  10. Stored/ Reflected Cross-Site Scripting:
    • เช่น การเปิดช่องโหว่หน้าเว็บไซต์ให้สามารถฝัง Script เข้ามาใน Platform ได้ และลิ้งเอา DOM cookie ของ Users ไป
    • แนวทางการแก้ไข ปิดช่องโหว่หน้าเว็บไซต์ที่สามารถฝัง Script เข้ามาใน Platform เช่น Sanitize Data ก่อน Store in Platform
  11. Information Exposure - Error Details:
    • เช่น แสดงรายละเอียดของ Error ให้ User เห็น ข้อมูลภายในรั่วไหล เช่น Web Server/ Software OS Version ทำให้สามารถรู้ช่องโหว่จาก Version และทำการโจมตีช่องโหว่นั่นๆได้
    • แนวทางการแก้ไข นำ Error Message ออกไม่ให้ Users เห็น, Log Error มีการจัดการที่ถูกต้องเพื่อให้ Monitor และแก้ไขปัญหาได้
  12. Missing Function Level Access Control:
    • เช่น ไม่มีการแบ่งแยก Level Access Control ของ Application
    • แนวทางการแก้ไข มีการแบ่งแยก Level Access Control ของ Application
  13. Insecure Direct Object Reference:
    • เช่น การมี UserId =1 แต่ UserId = 1 สามารถข้ามและเข้า UserId = 2 ได้ ทั้งที่ไม่มี Access
    • แนวทางการแก้ไข มีการแบ่งแยก Level Access Control ของ Application
  14. Access Control - Using input from untrusted sources:
    • เช่น ใช้ source of cookie input
    • แนวทางการแก้ไข หลีกการใช้ sources ที่ input เป็นช่องโหว่ เช่น input cookie ซึ่งสามารถเปลี่ยนแปลง value ได้ ทำให้เปลี่ยน Access ไปเข้า UserId อื่นๆได้
  15. Injection Flows - Path Traversal:
    • เช่น การที่ User ได้ Access เข้าถึง Path ที่ไม่ควรเข้าได้ เช่น Folder รูปภาพซึ่งไม่ใช้รูปภาพของตนเอง หรือ config files
    • แนวทางการแก้ไข ป้องกันการเข้าถึง Path ที่ User ไม่ควรเข้า, กำหนดรูปแบบ format ไฟล์ใดๆอย่างหนึ่งเท่านั้นในการ save หรือ open ให้ถูกต้อง
  16. Improper Authentication:
    • เช่น การไม่ตรวจความถูกต้องของ Permission/Access ของ Users ที่ควรจะต้องได้รับ - Application Error กล่าวคือ User A bypass เข้าถึงข้อมูลของ User B ได้ ยกตัวอย่างเช่น การ set หรือ เปลี่ยน cookie session-id ซึ่งสามารถ bypass ได้ง่าย
    • แนวทางการแก้ไข ปรับแก้ Application Logic ให้ครอบคลุมไม่สามารถ bypass ข้าม User ได้เช่นใช้การ random secure session-id
  17. Weak Password Policy:
    • เช่น อนุญาตให้ User ใช้ Weak Password
    • แนวทางแก้ไข ใช้ High Policy Password
  18. User of Single-factor Authentication:
    • เช่น Login Password ขั้นเดียว
    • แนวทางแก้ไข มี Multi-factor Authentication
  19. Insufficient Session Expiration
    • เช่น ไม่มีการกำหนด Session Timeout กรณี User ลืม logout จาก Public Computer จะทำให้ผู้อื่นเข้าถึง Account ได้ง่ายๆ
    • แนวทางแก้ไข กำหนด Session Timeout
  20. Insufficient Anti-Automation:
    • เช่น Attacker ทำการ Flood Post ใน Application หรือ Brute Force Password ในการ Login เข้า User Account อื่นๆ
    • แนวทางแก้ไข กำหนด Captcha หรือ มีระบบป้องกันการทำ Automation ซ้ำ เช่นกรอก Password Login ผิดได้มากสุด 3 ครั้ง เป็นต้น
  21. Insecure Password Change Function:
    • คือ เวลาเปลี่ยน Password ต้องมีให้ User กรอก Current Password ก่อนเปลี่ยนเป็น New Password ป้องกันในกรณี Hacker ได้ Access เข้าไป User Account แล้ว Hacker จะไม่สามารถเปลี่ยน Password ได้เพราะ Hacker ไม่รู้ Current Password
  22. Insecure Password Reset Function:
    • คือ มี pattern key ในการ reset password ทำให้ Attacker ได้ token และสามารถอดรหัสและสามารถ reset password แล้วก็ควบคุม User Account ที่ Hacker ไปจู่โจมได้
    • แนวทางแก้ไข เพิ่ม Anti Phishing Phrase ใน Flow reset password ในเนื้อหา Email Reset Password ที่ส่งให้ User
  23. Insufficient Logging and Monitoring:
    • คือ มีการจัดการ Logging และ Monitoring Log ในกรณีที่เจอ Suspicious Log เช่น cd rm หรือ mkdir ให้มี process banned user เป็นต้น

หวังว่าแนวทาง Security หัวข้อทั้งหมดที่ได้กล่าวมานั้นจะเป็นพื้นฐานที่สามารถนำไปปรับใช้กับ Software หรือ Website ให้ปลอดภัยได้มากยิ่งขึ้นครับ :)

Previous Post Next Post