Secure Development and Coding for Web Application Part 3

Sarun Wirawibunnan
blog blog
Published in
3 min readApr 16, 2021
Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

ใน Part ก่อนหน้าได้กล่าวถึง OWASP Top 10 ของ Web Application ไปแล้ว part นี้จะกล่าวถึง OWASP Top 10 สำหรับ API เป็นของปี 2019

OWASP Api Security Top 10 : 2019

Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

API1:2019 Broken Object Level Authorization

ช่องโหว่นี้เหมือนกับ Broken Access Control คือระบบไม่ได้ตรวจสอบสิทธิการเข้าถึงข้อมูล ทำให้สามารถเปลี่ยน parameter บางอย่างเพื่อเข้าถึงข้อมูลของคนอื่นได้

Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

API2:2019 Broken User Authentication

ช่องโหว่นี้เกิดจากการที่ผู้พัฒนาระบบไม่ได้ตั้งค่า Authentication ให้กับ Api ผู้ไม่หวังดีสามารถปลอมแปลงสิทธิการเข้าถึงได้

  • ไม่ตรวจสอบ Session / Token
  • กำหนด algorithm ในการเข้ารหัส JWT Token เป็น none
  • ไม่ทำการ Force check integrity หรือตรวจสอบความถูกต้องของ token
  • ใช้การ hash ข้อมูลบางอย่างเป็น param ของ api
Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

API3:2019 Excessive Data Exposure

ช่องโหว่ที่เกิดจากการที่ Api ตอบข้อมูลเกินกว่าที่จำเป็นต้องใช้ เช่นต้องการแค่ id กับชื่อ แต่ตอบอายุ วันเกิด เลขที่บัตรประชาชนไปจนหมด ทำให้ผู้ไม่หวังดีสามารถ dump ข้อมูลออกไปได้

Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

API4:2019 Lack of Resources & Rate Limiting

ช่องโหว่ที่เกิดจากการไม่จำกัด limit เกี่ยวกับการ request ต่างๆ

  • จำนวน request ที่เข้ามาในระบบ ผู้ไม่หวังดีสามารถโจมตีด้วยวิธี DDOS
  • max data ที่ระบบจะตอบกลับ ผู้ไม่หวังดีสามารถกรอกค่า limit นี้เป็นค่ามากๆให้ระบบทำงานไม่ไหว
Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

API5:2019 Broken Function Level Authorization

ข้อนี้จะคล้ายกับ API1 Broken Object Level Authorization แต่เกิดจากการไม่ตรวจสอบระดับของสิทธิการเข้าถึง Api path เช่นเปลี่ยนจาก /xxx/user เป็น /xxx/admin ทำให้เข้าใช้งานในระดับ admin ได้แม้ว่าจะไม่มีสิทธิ

Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

API6:2019 Mass Assignment

ช่องโหว่นี้เกิดจากการที่ Api มีการรับ required field และ optional field ซึ่งการใส่หรือไม่ใส่ optional field ระบบจะทำงานไม่เหมือนกัน ทำให้มีโอกาสที่ user ใส่ผิด หรือผู้ไม่หวังดีจงใจทำให้ระบบทำงานพิดพลาดได้

Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

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 ได้บ้าง
Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

API8:2019 Injection

เหมือนกับ Injection ของ OWASP Web Application รับ Parameter แล้วนำไปประกอบ Query String โดยตรง

Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

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 เดียวกัน ผู้ไม่หวังดีสามารถโจมตีระบบอื่นแล้วสวมรอยเข้าใช้งานระบบได้
Secure Development and Coding for Web Application, อัมฤทธิ์ ทองทั่ว, 19 มีนาคม 2564

API10:2019 Insufficient Logging & Monitoring

เหมือนกับ Insufficient Logging & Monitoring ของ OWASP Web Application กรอกข้อมูลเกินจำเป็นลงใน Log หรือ response ข้อมูลที่เป็น technical เช่น error msg/ stacktrace

หลังจากที่ได้รู้จักกับช่องโหว่ต่างๆที่ระบบมักจะมีกันแล้ว ใน Part ต่อไปจะกล่าวถึงการพัฒนาระบบที่มีความปลอดภัย Secure Software Development Life Cycle (SSDLC)

--

--