มีการค้นพบเทคนิคใหม่เพื่อใช้ประโยชน์จากช่องโหว่ใน SQLite

SQLite เวอร์ชันที่มีช่องโหว่

ลอส นักวิจัย 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/


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. รับผิดชอบข้อมูล: AB Internet Networks 2008 SL
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา