SQLite-ийн эмзэг байдлыг ашиглах шинэ техникийг нэвтрүүлсэн.

Check Point-ийн судлаачид илэрсэн DEF CON бага хурал дээр SQLite-ийн эмзэг хувилбаруудыг ашиглан програмууд руу халдах шинэ аргын талаар дэлгэрэнгүй танилцуулав. Check Point арга нь мэдээллийн сангийн файлуудыг шууд ашиглах боломжгүй янз бүрийн дотоод SQLite дэд системүүдийн эмзэг байдлыг ашиглах хувилбаруудыг нэгтгэх боломж гэж үздэг. Судлаачид мөн SQLite мэдээллийн санд ASLR-ийг тойрч гарах боломжийг олгодог SELECT асуулгын гинжин хэлхээний хэлбэрээр exploit-ийг кодлох замаар эмзэг байдлыг ашиглах аргыг бэлтгэсэн.

Амжилттай халдлага хийхийн тулд халдлагад өртсөн програмуудын өгөгдлийн сангийн файлуудыг өөрчлөх чадвартай байх шаардлагатай бөгөөд энэ нь SQLite мэдээллийн баазыг дамжуулж, өгөгдөл оруулах формат болгон ашигладаг програмууд руу халдах аргыг хязгаарладаг. Энэ аргыг одоо байгаа орон нутгийн хандалтыг өргөжүүлэх, жишээлбэл, далд арын хаалгыг ашигласан програмуудад нэгтгэх, түүнчлэн аюулгүй байдлын судлаачид хортой програмыг шинжлэх үед аюулгүй байдлын механизмыг тойрч гарахад ашиглаж болно. Файлыг орлуулсны дараах үйлдлийг програм нь өөрчилсөн мэдээллийн сан дахь хүснэгтийн эсрэг эхний SELECT хайлтыг гүйцэтгэх үед хийгддэг.

Жишээлбэл, бид хаягийн дэвтэр нээхдээ iOS дээр код ажиллуулах чадварыг харуулсан бөгөөд "AddressBook.sqlitedb" мэдээллийн сантай файлыг санал болгож буй аргыг ашиглан өөрчилсөн. Энэхүү халдлага нь 3-р сарын SQLite 2019 шинэчлэлт дээр зассан fts8602_tokenizer функцийн (CVE-2.28-XNUMX, заагчийг хайх чадвар) сул талыг ашигласан бөгөөд өөр нэг эмзэг байдал цонхны функцийг хэрэгжүүлэхэд. Нэмж дурдахад, PHP хэл дээр бичигдсэн халдагчийн backend серверийн хяналтыг алсаас ашиглах аргыг ашигласан бөгөөд энэ нь хортой кодыг ажиллуулах явцад тасалдсан нууц үгийг хуримтлуулдаг (сагсан нууц үгийг SQLite мэдээллийн сан хэлбэрээр дамжуулсан).

Халдлагын арга нь SQLite хөдөлгүүрт санах ойн эвдрэлд хүргэдэг дур зоргоороо асуудлыг ашиглах боломжийг олгодог "Асуулга хулгайлах" ба "Асуулгад чиглэсэн програмчлал" гэсэн хоёр аргыг ашиглахад суурилдаг. "Query Hijacking"-ийн мөн чанар нь мэдээллийн сангийн бүтцийг тодорхойлдог sqlite_master үйлчилгээний хүснэгт дэх "sql" талбарын агуулгыг орлуулах явдал юм. Заасан талбар нь өгөгдлийн сангийн объектын бүтцийг тодорхойлоход хэрэглэгддэг DDL (Data Definition Language) блокыг агуулна. Тайлбарыг стандарт SQL синтакс ашиглан зааж өгсөн болно, i.e. "CREATE TABLE" бүтцийг ашигласан,
Энэ нь мэдээллийн баазыг эхлүүлэх явцад (эхний эхлүүлэх үед
sqlite3LocateTable нь санах ойд хүснэгттэй холбоотой дотоод бүтцийг үүсгэх функцууд юм.

"ХҮСНЭГТ ҮЗҮҮЛЭХ" гэснийг "ХҮСНЭГТ ҮЗҮҮЛЭХ"-ээр сольсны үр дүнд мэдээллийн санд хандах хандалтыг өөрийн үзэмжээр тодорхойлон удирдах боломжтой болно гэсэн санаа юм. "CREATE VIEW"-ийг ашигласнаар "СОНГОХ" үйлдлийг хүснэгтэд холбох бөгөөд энэ нь "CREATE TABLE"-ын оронд дуудагдах бөгөөд SQLite орчуулагчийн өөр өөр хэсгүүдэд хандах боломжийг олгоно. Дараа нь халдлагын хамгийн энгийн арга бол "load_extension" функцийг дуудах бөгөөд энэ нь танд өргөтгөл бүхий дурын номын санг ачаалах боломжийг олгодог боловч энэ функц анхдагчаар идэвхгүй байдаг.

"СОНГОХ" үйлдлийг гүйцэтгэх боломжтой үед халдлага хийхийн тулд SQLite-д санах ойн эвдрэлд хүргэдэг асуудлуудыг ашиглах боломжийг олгодог "Асуулгад чиглэсэн програмчлал" техникийг санал болгож байна. Энэхүү техник нь буцах хандлагатай програмчлалыг санагдуулдаг (ROP, Буцах чиг баримжаатай програмчлал), гэхдээ дуудлагын гинжин хэлхээг (“гаджетууд”) бүтээхэд одоо байгаа машины кодын хэсгүүдийг ашигладаггүй, харин SELECT доторх дэд асуулгад оруулдаг.

SQLite-ийн эмзэг байдлыг ашиглах шинэ техникийг нэвтрүүлсэн.

SQLite-ийн эмзэг байдлыг ашиглах шинэ техникийг нэвтрүүлсэн.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх