Secure Development and Coding for Web Application Part 3
ใน Part ก่อนหน้าได้กล่าวถึง OWASP Top 10 ของ Web Application ไปแล้ว part นี้จะกล่าวถึง OWASP Top 10 สำหรับ API เป็นของปี 2019
OWASP Api Security Top 10 : 2019
API1:2019 Broken Object Level Authorization
ช่องโหว่นี้เหมือนกับ Broken Access Control คือระบบไม่ได้ตรวจสอบสิทธิการเข้าถึงข้อมูล ทำให้สามารถเปลี่ยน parameter บางอย่างเพื่อเข้าถึงข้อมูลของคนอื่นได้
API2:2019 Broken User Authentication
ช่องโหว่นี้เกิดจากการที่ผู้พัฒนาระบบไม่ได้ตั้งค่า Authentication ให้กับ Api ผู้ไม่หวังดีสามารถปลอมแปลงสิทธิการเข้าถึงได้
- ไม่ตรวจสอบ Session / Token
- กำหนด algorithm ในการเข้ารหัส JWT Token เป็น none
- ไม่ทำการ Force check integrity หรือตรวจสอบความถูกต้องของ token
- ใช้การ hash ข้อมูลบางอย่างเป็น param ของ api
API3:2019 Excessive Data Exposure
ช่องโหว่ที่เกิดจากการที่ Api ตอบข้อมูลเกินกว่าที่จำเป็นต้องใช้ เช่นต้องการแค่ id กับชื่อ แต่ตอบอายุ วันเกิด เลขที่บัตรประชาชนไปจนหมด ทำให้ผู้ไม่หวังดีสามารถ dump ข้อมูลออกไปได้
API4:2019 Lack of Resources & Rate Limiting
ช่องโหว่ที่เกิดจากการไม่จำกัด limit เกี่ยวกับการ request ต่างๆ
- จำนวน request ที่เข้ามาในระบบ ผู้ไม่หวังดีสามารถโจมตีด้วยวิธี DDOS
- max data ที่ระบบจะตอบกลับ ผู้ไม่หวังดีสามารถกรอกค่า limit นี้เป็นค่ามากๆให้ระบบทำงานไม่ไหว
API5:2019 Broken Function Level Authorization
ข้อนี้จะคล้ายกับ API1 Broken Object Level Authorization แต่เกิดจากการไม่ตรวจสอบระดับของสิทธิการเข้าถึง Api path เช่นเปลี่ยนจาก /xxx/user เป็น /xxx/admin ทำให้เข้าใช้งานในระดับ admin ได้แม้ว่าจะไม่มีสิทธิ
API6:2019 Mass Assignment
ช่องโหว่นี้เกิดจากการที่ Api มีการรับ required field และ optional field ซึ่งการใส่หรือไม่ใส่ optional field ระบบจะทำงานไม่เหมือนกัน ทำให้มีโอกาสที่ user ใส่ผิด หรือผู้ไม่หวังดีจงใจทำให้ระบบทำงานพิดพลาดได้
API7:2019 Security Misconfiguration
ข้อนี้เหมือนกับ Security Misconfiguration ของ OWASP Web Application แต่ส่วนของ Api จะเน้นที่ Cross-Origin Resource Sharing (CORS)
- Access Control Allow Method เปิดให้เรียก Api ด้วย Method อะไรบ้าง Get/Post/Delete
- Access Control Allow Origin เปิดให้ Client จาก Domain ไหนเรียกใช้งาน Api ได้บ้าง
API8:2019 Injection
เหมือนกับ Injection ของ OWASP Web Application รับ Parameter แล้วนำไปประกอบ Query String โดยตรง
API9:2019 Improper Assets Management
ช่องโหว่นี้เกิดจากการที่มี Api หลายๆ Version อยู่ใน Enveroment เดียวกัน
- มี api v1 ที่ที่ยังไม่แก้ช่องโหว่ กับ api v2 ที่แก้ช่องโหว่แล้วเชื่อมต่อ Database เดียวกัน ผู้ไม่หวังดีสามารถเข้าถึงข้อมูลผ่าน v1
- มี production server อยู่กับ uat server ผู้ไม่หวังดีสามารถเข้าถึงข้อมูลหรือหาจุดอ่อนต่างๆของระบบผ่าน uat
- api หลายๆ server ที่ใช้ Authentication Algorithm เดียวกัน เช่นใช้ Token จาก Auth server เดียวกัน ผู้ไม่หวังดีสามารถโจมตีระบบอื่นแล้วสวมรอยเข้าใช้งานระบบได้
API10:2019 Insufficient Logging & Monitoring
เหมือนกับ Insufficient Logging & Monitoring ของ OWASP Web Application กรอกข้อมูลเกินจำเป็นลงใน Log หรือ response ข้อมูลที่เป็น technical เช่น error msg/ stacktrace
หลังจากที่ได้รู้จักกับช่องโหว่ต่างๆที่ระบบมักจะมีกันแล้ว ใน Part ต่อไปจะกล่าวถึงการพัฒนาระบบที่มีความปลอดภัย Secure Software Development Life Cycle (SSDLC)