
Secure Code Warrior
Incognito Lab
วันก่อนเจอ Tweet ที่คุณ Troy Hunt เจ้าของ haveibeenpwned ได้ share มาเกี่ยวกับ paper อันนึงที่น่าสนใจมาก คือเค้าอยากรู้ว่าถ้าจ้าง Developer มาพัฒนา Code เนี่ยจะการนึกถึงเรื่อง Security ด้วยหรือไม่ ดังนั้นเค้าจึงได้จ้างให้มีการเขียนโปรแกรมเกี่ยวกับ Registration Process โดยเค้าได้จ้าง Developer จาก freelancer.com เป็นจำนวน 43 คน โดยที่ไม่ได้บอก Security requirement เลย ซึ่งผลลัพธ์ที่ได้ในครั้งแรกนั้นมีจำนวน 18 คนที่ไม่ได้ใส่เรื่องของ Security เข้ามาในระบบเลย ในส่วนของคนที่ไม่ได้มีเรื่อง Security ก็จะถูกบอกให้กลับไปแก้มาใหม่ เมื่อทั้ง 43 คนได้ส่ง code เรียบร้อยแล้ว เค้าก็นำมาศึกษาต่อก็พบว่าวิธีการเก็บ password ของแต่ละคนนั้นแตกต่างกัน บางคนเลือกใช้ Base64 ที่เป็นแค่การ Encoding หรือ บางคนก็เลือกใช้ hashing algorithm ที่ไม่ปลอดภัยในปัจจุบันแล้ว โดยสรุปทั้ง 43 คนได้เลือกใช้วิธีการดังนี้
10 - MD5
8 - Base64
7 - Bcrypt
5 - SHA-256
5 - PBKDF2
3 - AES
3 - 3DES
1 - SHA-1
1 - HMAC/SHA1
โดย Paper นี้ได้มีการสรุป Key Findings มาหลายจุด แต่ผมขอดึงเรื่อง Security ที่เกี่ยวข้องมาดังนี้ครับ
- If You Want Security, Ask For It. ถ้าต้องการเรื่องของ Security ให้แจ้ง Requirement นี้ไปด้วยเลยตั้งแต่แรก
- Misconceptions มีความเข้าใจผิดอยู่มากเรื่องของ Encoding, Hashing, Encryption ทั้งในส่วนของ Encoding ที่หน้าตาของมันเหมือนจะถูกแปลงให้อ่านยาก และในส่วนของ Hashing กับ Encryption ที่ยังมีความเข้าใจว่าทั้ง 2 อย่างเหมือนกันอยู่
- Continuous Learning ส่วนใหญ่ของกลุ่มตัวอย่างนี้ขาดการเรียนรู้ในสิ่งใหม่ๆ เนื่องจาก Final solution ที่ถูกส่งมานั้นมีจำนวนหลายอันที่ใช้วิธีการเก็บ password แบบเก่าๆที่ไม่ปลอดภัยในปัจจุบันแล้ว
- Copy and Paste พบว่า security code ที่ส่งมานั้นหาได้จากบน Internet
สนใจอ่านรายละเอียดของ Paper นี้เต็ม ๆ ได้ที่ https://net.cs.uni-bonn.de/.../Naiakshina_Password_Study.pdf
ในส่วนของการเก็บ Password นั้น OWASP Password_Storage_Cheat_Sheet (https://github.com/.../Password_Storage_Cheat_Sheet.md) ได้แนะนำว่ามี 2 วิธีคือ
- Leverage an adaptive one-way function ใช้ one-way function คู่กับ salt โดย algorithm ที่แนะนำคือ Argon2 และ PBKDF2
- Leverage Keyed functions ใช้ HMAC คู่กับ Salt (HMAC แบบง่ายๆ ก็คือ one-way function ที่มีการทำ encryption ซ้ำอีกที)
ถ้าสนใจอยากเรียนรู้ Secure Coding แล้วล่ะก็มาลอง Secure Code Warrior ได้ โดยเป็น Platform ที่มีจุดเด่นคือ
-ครบถ้วนทุก platform การเขียน ไม่ว่าจะเป็น web, mobile และอื่นๆ
-รวมทุกภาษาไว้ด้วยกัน ตั้งแต่ Java, C#.net, IOS, Android, Node, Python, COBOL และอื่นๆ ซึ่งมีการ update วิธีเขียน coding รวมถึงช่องโหว่ใหม่ๆ ตาม trend ของโลก
-เข้าใจมุมมองของ hacker รวมถึงช่องโหว่ที่ hacker มักจะใช้ และเรียนรู้การเขียน code ให้ปลอดภัยตาม OWASP Top 10
-สนุกในรูปแบบของ gamification และ flexible กับ life style ของ programmer ผู้เรียนสามารถ enjoy กับบทเรียนที่ไหน เมื่อไหร่ก็ได้
นอกจากนี้ยังมี tournament ให้วัดพลังกันในทีมได้อีกด้วย
-license มีระยะเวลา 1 ปี ไม่มีเงื่อนไขจุกจิก เรียนได้ทุกอย่างที่มีใน platform จึงช่วยสร้าง awareness ให้กับ programmer ได้มากกว่าการเรียนรูปแบบเก่า
-องค์กรได้พัฒนาคน สามารถนำผลการฝึกอบรมไปปิด audit issue และนำค่าใช้จ่ายไปลดหย่อนภาษีได้ 200%
หากท่านสนใจสามารถติดต่อได้ที่ email: contact@incognitolab.com หรือโทร +66800898800
Up Next

ARTICLES
Mar
02
2021
ทำความรู้จักกับ Application Sandboxing บน Mobile Platform
เมื่อพูดถึงกลไกการรักษาความปลอดภัยของ Smartphone ในปัจจุบัน ไม่ว่าจะ iOS, Android หรือ Windows Phone ล้วนมีกลไกการรักษาความปลอดภัยพื้นฐานมาอยู่แล้วซึ่งช่วยให้ผู้ใช้งานทั่วไปสามารถใช้งาน Smartphone ได้อย่างมั่นคงปลอดภัยในระดับหนึ่ง
READ MORE

ARTICLES
Mar
02
2021
Application Signing model and Approval process (1/2)
ในบทความนี้ จะขอนำทุกท่านไปรู้จักกับ Application Signing model และ Approval process พร้อมกับวิเคราะห์ถึงประโยชน์และข้อจำกัดในมุมมองด้านความมั่นคงปลอดภัย
READ MORE

ARTICLES
Mar
02
2021
Application Signing model and Approval process (2/2)
Application Signing model มีจุดประสงค์หลักเพื่อใช้ในการยืนยันความถูกต้อง (Integrity) ของแอปพลิเคชันว่าไม่ได้ถูกดัดแปลงหรือแก้ไขโดยผู้ที่ไม่ใช่เจ้าของ หรือเรียกง่าย ๆ ก็คือการทำ Digital Signature สำหรับแอปพลิเคชันที่ไม่ได้รับการ Sign จะไม่สามารถนำไปติดตั้งลงบนอุปกรณ์ได้ ทั้งนี้การ Sign แอปพลิเคชันไม่ได้หมายความว่าแอปพลิเคชันนั้นจะปลอดภัยต่อการใช้งาน
READ MORE