ลอส นักวิจัย Check Point เพิ่งเปิดเผย ในการประชุม DEF พร้อมรายละเอียด ของเทคนิคใหม่ที่ถูกค้นพบใช้ pเพื่อโจมตีแอปพลิเคชันที่ใช้ SQLite เวอร์ชันที่มีช่องโหว่
วิธีการ Check Point มองว่าไฟล์ฐานข้อมูลเป็นโอกาสในการรวมสถานการณ์การใช้ประโยชน์จากช่องโหว่ ในระบบย่อย SQLite ภายในต่างๆที่ไม่สามารถเข้าถึงได้สำหรับการหาประโยชน์จากหน้าผาก นักวิจัยยังพัฒนาเทคนิคในการใช้ประโยชน์จากช่องโหว่ด้วยการเข้ารหัสช่องโหว่ในรูปแบบของสตริงการสืบค้น SELECT ในฐานข้อมูล SQLite ซึ่งช่วยให้สามารถหลีกเลี่ยง ASLR ได้
เกี่ยวกับช่องโหว่
นักวิจัย Check Point ให้รายละเอียดว่า สำหรับการโจมตีที่ประสบความสำเร็จผู้โจมตีต้องสามารถแก้ไขไฟล์ฐานข้อมูลของแอปพลิเคชันที่ถูกโจมตีได้ซึ่ง จำกัด วิธีการโจมตีแอปพลิเคชันที่ใช้ฐานข้อมูล SQLite เป็นรูปแบบสำหรับการส่งผ่านข้อมูลและอินพุต
แม้ว่า พวกเขายังเปิดเผยว่าวิธีนี้ยังสามารถใช้เพื่อขยายการเข้าถึงในท้องถิ่นที่ได้รับมาแล้ว ตัวอย่างเช่นเพื่อรวมประตูหลังที่ซ่อนอยู่ในแอปพลิเคชันที่ใช้รวมถึงหลีกเลี่ยงนักวิจัยด้านความปลอดภัยเมื่อวิเคราะห์มัลแวร์
การดำเนินการหลังจากการเลียนแบบไฟล์จะดำเนินการในขณะที่แอปพลิเคชันเรียกใช้คำร้องขอ SELECT แรกไปยังตารางในฐานข้อมูลที่แก้ไข
ตัวอย่างเช่นความสามารถในการรันโค้ดบน iOS เมื่อเปิดสมุดที่อยู่ได้แสดงให้เห็น ไฟล์ที่มีฐานข้อมูล«AddressBook.sqlitedb»ซึ่งได้รับการแก้ไขโดยใช้วิธีการที่เสนอ
สำหรับการโจมตี มีการใช้ช่องโหว่ในฟังก์ชัน fts3_tokenizer (CVE-2019-8602 ความสามารถในการยกเลิกการอ้างอิงตัวชี้) ได้รับการแก้ไขในการอัปเดต SQLite 2.28 เดือนเมษายนพร้อมกับช่องโหว่อื่นในการใช้งานฟังก์ชันหน้าต่าง
นอกจากนี้ แสดงให้เห็นถึงการใช้วิธีการควบคุมระยะไกลของเซิร์ฟเวอร์แบ็กเอนด์จากผู้โจมตีที่เขียนด้วย PHPซึ่งสะสมรหัสผ่านที่ถูกดักจับระหว่างการทำงานของรหัสที่เป็นอันตราย (รหัสผ่านที่ถูกดักจับจะถูกถ่ายโอนในรูปแบบของฐานข้อมูล SQLite)
วิธีการโจมตีนั้นขึ้นอยู่กับการใช้เทคนิคสองอย่างคือ Query Hijacking และ Query Oriented Programming ซึ่งทำให้เกิดปัญหาตามอำเภอใจที่นำไปสู่ความเสียหายของหน่วยความจำในโปรแกรม SQLite ที่จะถูกใช้ประโยชน์
สาระสำคัญของ "การจี้ข้อความค้นหา" คือการแทนที่เนื้อหาของฟิลด์ "sql" ในตารางบริการ sqlite_master ที่กำหนดโครงสร้างฐานข้อมูล ฟิลด์ที่ระบุมีบล็อก DDL (Data Definition Language) ที่ใช้เพื่ออธิบายโครงสร้างของอ็อบเจ็กต์ในฐานข้อมูล
คำอธิบายถูกตั้งค่าโดยใช้ไวยากรณ์ SQL ปกติเช่น โครงสร้าง "CREATE TABLE" ซึ่งดำเนินการระหว่างการเตรียมใช้งานฐานข้อมูล (ระหว่างการเรียกใช้ฟังก์ชัน sqlite3LocateTable ครั้งแรก) ใช้เพื่อสร้างโครงสร้างภายในที่เกี่ยวข้องกับตารางในหน่วยความจำ
แนวคิดนี้เป็นผลมาจากการแทนที่ "CREATE TABLE" และ "CREATE VIEWเป็นไปได้ที่จะควบคุมการเข้าถึงฐานข้อมูลใด ๆ ผ่านคำจำกัดความของมุมมอง
ในทางกลับกันการใช้คำสั่ง "CREATE VIEW" การดำเนินการ "SELECT" จะถูกแนบไปกับตารางซึ่งจะถูกเรียกแทน "CREATE TABLE" และอนุญาตให้ผู้โจมตีเข้าถึงส่วนต่างๆของตัวแปล SQLite
นอกจากนี้วิธีที่ง่ายที่สุดในการโจมตีคือการเรียกใช้ฟังก์ชัน "load_extension" ซึ่งช่วยให้ผู้โจมตีสามารถโหลดไลบรารีโดยพลการพร้อมกับส่วนขยายได้ แต่ฟังก์ชันนี้จะถูกปิดใช้งานโดยค่าเริ่มต้น
ในการดำเนินการโจมตีภายใต้เงื่อนไขของความสามารถในการดำเนินการ SELECT จึงมีการเสนอเทคนิคการเขียนโปรแกรมเชิงสืบค้นซึ่งช่วยให้สามารถใช้ประโยชน์จากปัญหาใน SQLite ที่นำไปสู่ความเสียหายของหน่วยความจำได้
เทคนิคนี้ชวนให้นึกถึง Return Oriented Programming (ROP) แต่ใช้ข้อมูลโค้ดเครื่องที่ไม่มีอยู่จริง แต่ถูกแทรกลงในชุดของแบบสอบถามย่อยภายใน SELECT เพื่อสร้างสายการโทร ("แกดเจ็ต")
Fuente: https://threatpost.com/