Taint Analysis คืออะไร ทำไม Security ต้องแคร์

Taint Analysis

Taint Analysis คืออะไร ทำไม Security ต้องแคร์

Taint Analysis คืออะไร ทำไม Security ต้องแคร์Taint analysis คือ กระบวนการใช้ information security framwork เพื่อหา flow ของ user input ที่อันตราย โดยต้องเข้าใจในการออกแบบระบบ หรือ software เช่น การ mitigate risk สำหรับ SQL injection ซึ่งโดยทั่วไปจะถูก attack จาก user input ที่ไม่ได้ควบคุมไว้

Taint analysis ช่วยวิเคราะห์ทุกๆ input และ header ของ user data

OWASP
ตัวอย่างจาก OWASP Top 10 benchmark report

Taint Analysis คืออะไร ทำไม Security ต้องแคร์Taint analysis คือ กระบวนการใช้ information security framwork เพื่อหา flow ของ user input ที่อันตราย โดยต้องเข้าใจในการออกแบบระบบ หรือ software เช่น การ mitigate risk สำหรับ SQL injection ซึ่งโดยทั่วไปจะถูก attack จาก user input ที่ไม่ได้ควบคุมไว้Taint analysis ช่วยวิเคราะห์ทุกๆ input และ header ของ user dataตัวอย่างจาก OWASP Top 10 benchmark report

SoqarQube สามารถแสดงผลได้ดังนี้

  • Line 47, รับค่าตัวแปรจาก user ชื่อ ‘param’ ซึ่ง ‘param’ เป็น taint แล้ว โดย user input
  • Line 51, ‘param’ ทำการ manipulate ยังไม่มีผลกระทบใดๆ แต่ยังคงเป็นสถานะ taint
  • Line 54, ‘param’ รวมไปใน value ของ ‘sql’ ฉะนั้น ‘sql’ อยู่ในสถานะ tainted ด้วย!
  • Lines 58-59, ‘sql’, รับค่าจาก raw user input และส่งให้ database 🙁

แน่นอนว่าในตัวอย่างนั้น ทุกอย่างรวมอยู่ใน method เดียว ปัญหานี้เห็นได้ง่าย…ถ้าเรารู้ว่าต้องมองหาอะไร…และควรมองหาที่ไหน…และสิ่งที่เราควรมองหาลองมาดูตัวอย่างที่ซับซ้อนมากขึ้น จาก Securibench micro

doGet

จาก ‘doGet’ method ที่ user จะเก็บ data ใน collection นี้ไว้ใน file อื่น ซึ่งดูได้ยากกว่าตัวอย่างแรก และส่งต่อให้กับ database โดยไม่ผ่าการตรวจสอบอีกเช่นเคย

SonarQube ช่วยยังไง

???SonarQube UI จะแสดง alert ให้เราเข้าใจได้ง่าย เพราะจะแสดงและไฮไลท์ file ทีเกี่ยวข้อง ซึ่งจะช่วยให้ developer trace data input ได้ง่ายทำให้ป้องกัน data ขององค์กรและลูกค้า จาก hacker ที่จะทำให้เกิด incident ได้

ที่มา

https://www.sonarsource.com/blog/what-is-taint-analysis/

Surakitt Wongsuwan
Surakitt Wongsuwan