ได้อะไรกลับมาบ้างจากงาน OWASP Thailand A6

A6 Sensitive Data Exposure ว่ากันถึงเรื่องการป้องกัน/กรณีศึกษาการเข้าถึง sensitive data

หลังจากเข้าร่วมกลุ่ม OWASP Thailand ในเฟซบุ๊คได้ซักพักก็มี event(25 สิงหาคม 2558) โผล่ขึ้นมาแล้วเป็นงานฟรีด้วยก็เลยมีโอกาสได้ไปเก็บเกี่ยวความรู้เพื่อมาปรับปรุงกระบวนการทำงานของตัวเองเพิ่มเติม ต้องขอขอบคุณสถานที่อย่างดี!(ต้องใช้คำนี้เลย)จาก กลต และขอบคุณพี่ๆในกลุ่มที่มาให้ความรู้ครับ ซึ่งผมก็ใหม่มากกับเรื่อง security(เอ็งจะใหม่กับทุกงานเลยนะ noob มากนาย) ยังไงผิดถูกประการใดต้องขออภัย และน้อมรับการแก้ไขนะครับ จะขอสรุปเป็นข้อๆดังนี้

  1. OWASP(Open Web Application Security Project) Thailand Chapter จัดตั้งขึ้นเพื่อร่วมศึกษา วิจัย แบ่งปันองค์ความรู้ เกี่ยวกับการรักษาความปลอดภัยในระดับเว็บแอพพลิเคชั่น ตลอดจนทุกท่านจะได้ร่วมสร้างเนื้อหาของ OWASP เป็นภาษาไทย เพื่อเป็นประโยชน์ต่อภาพรวมของประเทศต่อไป(copy ประโยคมาจากเฟซบุ๊คของกลุ่ม)
  2. A6 คือเรื่อง Sensitive Data Exposure ว่ากันถึงเรื่องการป้องกัน/กรณีศึกษาการเข้าถึง sensitive data จริงๆแล้วมีหลาย A ในแต่ละ A คือแต่ละเรื่องที่จะถูกโจมตี ดูข้อมูลตามลิ้งค์นี้
    https://www.owasp.org/index.php/OWASP_Top_Ten_Cheat_Sheet
  3. sensitive data คืออะไร
    - เลขบัตรประชาชน, เลขบัญชี, เบอร์โทรศัพท์, id ของผู้ใช้, username, password หรือแม้กระทั่งข้อมูลความลับใดๆที่ไม่ควรเปิดเผยและถ้าหลุดออกไปแล้วอาจก่อให้เกิดความเสียหายได้นั่นเอง
  4. ผลกระทบจากการถูก hack จากระบบหนึ่งมีผลกระทบกับอีกระบบเสมอเช่นเมื่อได้ username/password จาก website หนึ่งแล้ว ข้อมูลชุดนี้มีความเสี่ยงที่จะถูกลองเอาไป authenticate ที่ web อื่นๆได้อีก เพราะโดยปกติ username/password ของเรามักซ้ำๆกัน
  5. ถ้าจะทำ security ตอนนี้แนะนำใช้ TLS 1.1 TLS 1.2 ได้แล้ว (ข้อแนะนำเพิมเติม ถ้า update ได้ ให้ Update ไปใช้ TLS 1.2 เลยจะดีสุด)
  6. ควรตรวจสอบ production code ให้ดี บางทีก็ถูก hack ได้จากการที่ programmer hard code password แล้วลืมลบออก
  7. error message ของระบบแบบ default ควรซ่อนให้หมดเช่น IIS error, .NET error, apache error หน้าเหลืองๆแดงๆเหล่านี้ควรถูกซ่อนไว้ด้วยการทำหน้า default error page ขึ้นมา เพราะบางทีแค่ทำให้ระบบคาย error 500, error 404 ออกมา เราก็สามารถเห็น environment ข้างหลังได้แล้ว
  8. หน้าเว็บไซต์ที่เป็น form ข้อมูลตรงไหนที่เป็น sensitive data ควร set ให้ autocomplete off ด้วย
  9. หลายๆเว็บไซต์มักจะชอบ backup data แล้วก็คาไว้บน server ไม่ว่าจะเป็น .zip .bak เหล่านี้ปล่อยทิ้งไว้ก็มักจะถูก download ไป แล้วกลับมาโจมตีได้ง่ายๆ
  10. การเข้าถึง info.php ทางที่ดีก็ allow access เช่น allow เฉพาะ IP ผู้ดูแลระบบ
  11. comment ต่างๆใน html ก็อาจจะเป็น guideline ที่ดีในการจู่โจม ดังนั้นพยายามลบออกไปให้หมด
  12. code หน้า login ของบางเว็บมี query string หรือ user/pass ในการเข้าถึง database ได้เลย หรือแม้กระทั่ง user/pass ของ admin
  13. หน้า test page ต่างๆในการดู log ในการแอบทดสอบอะไรบางอย่างเมื่อไม่ใช่แล้วควรลบออกไปด้วย เพราะถ้าเข้าถึงได้ attacker ก็อาจจะใช้มันในการทำ sql injection ล้วงข้อมูลออกมาหมดได้เลย
  14. ระดับของ password
    - hard code แบบนี้แย่มาก
    - เก็บไว้ใน database แบบ clear text แบบนี้ก็ยังไม่ปลอดภัย
    - เก็บไว้ใน database แบบ encode/decode แบบนี้ถอดรหัสได้ง่าย
    - เก็บไว้ใน database แบบ encrypted (ต่างจากการ encode คือมี key) แบบนี้จะยากขึ้นมาหน่อย (แต่ก็ไม่ใช้แนวทางที่ถูกต้องในการเก็บ password ครับ)
  15. การเก็บ password ที่แนะนำตอนนี้ควรใช้ sha-256 + salt(randomness) ที่บอกว่า randomness คือผลลัพธ์ของการ encrypt จะถูกเปลี่ยนไปเรื่อยๆแม้จะเป็นข้อมูลชุดเดิม แบบนี้ถือว่าดีมาก
  16. พวก SHA1 หรือ MD5 ไม่ปลอดภัยอีกต่อไปแล้ว
  17. web site ที่เอาไว้ตรวจสอบข้อมูลว่า username/password เราถูกเจาะไปใช้แล้วหรือยัง
    - http://pastebin.com/
    - https://haveibeenpwned.com/
  18. adobe เคยถูกเจาะมาแล้ว แล้วพบว่ามีการเก็บ password แบบ clear text
  19. myspace, linkedin เคยถูกเจาะมาแล้ว แล้วพบว่ามีการเก็บ password แบบ SHA1 โดยไม่ใช้ Salt
  20. algorithm ในการเข้ารหัสควรเป็น algorithm ที่ prove แล้ว ไม่ควรเขียนขึ้นเอง
  21. การ copy code จากเว็บไซต์แจก code ทั้งหลายก็มีสิทธิ์โดนเจาะ เราควรจะ customize อะไรบางอย่างบ้างเช่น กรณีตัวอย่างเจอ private key เป็นชุดเดียวกับใน codeproject เลย แบบนี้ copy code ไปหาใน google ก็มีสิทธ์เจอ code แบบเรา แล้ว attacker ก็ลองเอา key นั้นมาถอดรหัสกับ data เราได้
  22. เว็บไซต์ที่ใช้ตรวจสอบคุณภาพ SSL ของเราได้แก่
    - https://www.ssllabs.com/ssltest/
  23. sensitive data ควรเก็บเท่าที่จำเป็น อันไหนที่มีความเสี่ยงสูงและเลี่ยงที่จะเก็บได้ก็ควรเลี่ยง
  24. บัตรประชาชนรุ่นหลังๆมี barcode ด้วย เวลา scan ส่งให้ใครปิดตรงนั้นไว้ด้วย
  25. กลุ่ม OWASP Thailand ได้จัดงานเผยแพร่ความรู้แบบนี้ทุกวันพฤหัสสุดท้ายของเดือนอยู่แล้ว ยังไงถ้าใครสนใจเข้าไป join group OWASP Thailand Chapter
  26. ขอบคุณพี่ๆทุกท่านอีกครั้งที่ให้ความรู้ครับ