ใช้ Github อย่างไร ไม่ให้ข้อมูลสำคัญเปิดเผยสู่สาธารณะ [Unit 42]
หลังเตรียมน้ำให้ภรรยาอาบน้ำลูก ก็แวะมาอ่านบทความจากทีม Unit 42 ซึ่งเป็นทีมนักวิจัยความปลอดภัยทางไซเบอร์ของบริษัท PaloAlto Networks ได้ทำรายงาน Unit 42 Cloud Threat Report: Spring 2020 ซึ่งมุ่งเน้นเกี่ยวกับแนวทางปฏิบัติของกระบวนการ DevOps เพื่อหลีกเลี่ยงการตั้งค่าที่ผิดพลาดที่อาจเกิดขึ้นบน Cloud
‘with greater speed, comes higher risk’
อะไรที่เร็วมากเกินไป ก็ตามมาด้วยความเสี่ยงที่สูงขึ้นตามด้วย
##########################################
นักวิจัยด้านความปลอดภัยพบว่ามีองค์กรจำนวนใช้งาน GitHub ด้วย public account แต่เอาข้อมูลสำคัญของ DevOps ไปเก็บไว้บนนั้น ทำให้มีความเสี่ยงต่อข้อมูลที่จะรั่วไหลต่อสาธารณะ
จาก 24,000 Public Github data พบว่ามีข้อมูลสำคัญดังนี้
โดยแบ่งรายละเอียดเป็นดังนี้
- Configuration and Private key files
ซึ่งประเภทไฟล์การกำหนดค่าที่พบมากที่สุดคือ Django โดย Django เป็น python based ซึ่งเป็นเฟรมเวิร์กผ่านเว็บที่รองรับการพัฒนาและออกแบบอย่างรวดเร็ว แล้วอีกไฟล์ซึ่งเป็นที่นิยมไม่แพ้กัน คือ PHP ซึ่งเป็นภาษาสคริปต์ที่ใช้กันทั่วไปในการออกแบบเว็บ ไฟล์การกำหนดค่าบนเว็บเหล่านี้ ถ้าผู้ไม่หวังดีได้ข้อมูลไป ก็จะสามารถรู้ถึงโครงสร้างพื้นฐานของระบบคลาวด์ขององค์กรนั้นๆ และหาช่องโหว่ของ software ระบบที่ใช้ได้ง่ายมากขึ้นเลย หรืออาจทำให้ผู้โจมตีสามารถเข้าถึงเซิร์ฟเวอร์เหล่านั้นได้อย่างง่ายดาย ไม่ต้องเหนื่อยเลย
2. Hardcoded API Keys and OAuth Tokens
พบว่า API Key จำนวน 2464 key และ OAuth Token จำนวน 1998 key ภายใน GitHub file ที่กว่า 24,000 ชุด
พวก Key & Password ของระบบ Cloud นั้นมีความสำคัญมาก เพราะอาจนำไปสู่การขโมยข้อมูลของลูกค้าได้เลย อย่างเคสที่เพิ่งเกิดขึ้นมาไม่นาน อย่าง Capital One ซึ่งมาจากเพียงได้ Amazon AWS key ไปเท่านั้นเอง สามารถไปอ่านข้อมูลเชิงลึกได้จากทางบทความของ i-Secure ในหัวข้อเรื่อง Capital One Data Breach: Analysis & Recommendation ได้เลยครับ
3. Hardcoded Passwords
รวมรายการ username และ password จำนวน 2328 รายการ ประกอบด้วยรหัสผ่านที่ไม่ซ้ำกัน 880 รายการ รวมถึง 797 ชื่อผู้ใช้ที่ไม่ซ้ำกัน พบรหัสผ่านเหล่านี้ภายในรายการ URL บริการ API และไฟล์กำหนดค่าของ SSH โดยนักวิจัยตั้งข้อสังเกตว่ามีเพียง 18% ของรายการรหัสผ่านทั้งหมดที่เกี่ยวข้องกับรหัสผ่านที่พบบ่อย โดยอันดับ 1 ก็นี้ไม่พ้น รหัสผ่านว่า “password” นั่นเอง ยอดฮิตตลอดกาล รองมาด้วย secret, admin ตามลำดับ
คำแนะนำ:
นักวิจัยแนะนำให้ผู้ใช้ทั่วไปและผู้ใช้องค์กรที่เผยแพร่ Source Code ไปยัง GitHub ควรทำให้มั่นใจว่าข้อมูลสำคัญต่างๆ ไม่ถูกเปิดเผยไปยังสาธารณะ
- ใช้แนวทางการเขียนโค้ดแบบอิงตัวแปร และ CLI argument-based แทน แล้วทำการลบชื่อผู้ใช้และรหัสผ่านแบบฮาร์ดโค้ด, API คีย์และโทเค็น OAuth ออกจากตัวอย่างโค้ด
- ใช้นโยบายความปลอดภัย (Password Security Policy) ของรหัสผ่านเพื่อบังคับใช้รหัสผ่านที่ซับซ้อนขึ้น
- ใช้นโยบายการเผยแพร่ ( Publication Policy) เพื่อควบคุมและป้องกันการแบ่งปันข้อมูลที่สำคัญภายในผ่านแหล่งข้อมูลภายนอก
- ใช้ความสามารถของบัญชีองค์กร (Enterprise account) ของ GitHub เพื่อให้แน่ใจว่ามีการตรวจสอบการแบ่งปันสาธารณะอย่างละเอียดมากขึ้น
- ใช้เครื่องมือในการช่วยตรวจ เช่น AWS-git, TokenScanner ของ GitHub, gitrob หรือ trugglehog เพื่อระบุตรวจสอบและลบโทเค็น ออกจากการเผยแพร่สู่สาธารณะ
- ใช้งาน Private Repository แทนสำหรับการใช้งานของทีม DevOps แล้วจำกัดการเข้าถึงอย่างเหมาะสม รวมถึงนำกระบวนการ DevSecOps เข้ามาใช้งานอย่างจริงจัง
- องค์กรอาจใช้บริการ Threat Intelligence ที่จะคอยช่วย monitor keyword ต่างๆ ขององค์กรเรา ที่อยู่ใน Public Site, Pastebin, Github, Dark Web หรืออื่นๆ เป็นการช่วยดูอีกทาง ว่ามีใครแอบเอาข้อมูลไปอัพโหลดภายนอกไหม
ข้อมูลเพิ่มเติม:
8 Top Threat Intelligence Platforms , Cyber Threat Intelligence Feeds
สามารถดาว์นโหลดรายงานตัวเต็มได้ที่ http://go.paloaltonetworks.com/cloudthreatreport
ที่มา: https://unit42.paloaltonetworks.com/github-data-exposed/