SQLite හි දුර්වලතා උපයෝගී කර ගැනීම සඳහා නව තාක්ෂණයක් හඳුන්වා දී ඇත.

චෙක් පොයින්ට් වෙතින් පර්යේෂකයන් අනාවරණය කර ඇත DEF CON සම්මන්ත්‍රණයේදී, SQLite හි අවදානමට ලක්විය හැකි අනුවාද භාවිතයෙන් යෙදුම් වලට පහර දීම සඳහා නව තාක්‍ෂණයක් පිළිබඳ විස්තර. චෙක් පොයින්ට් ක්‍රමය මඟින් දත්ත සමුදා ගොනු සෘජුවම සූරාකෑමට ලක් නොවන විවිධ අභ්‍යන්තර SQLite උප පද්ධතිවල දුර්වලතා සූරාකෑමේ අවස්ථා ඒකාබද්ධ කිරීමට අවස්ථාවක් ලෙස සලකයි. පර්යේෂකයන් විසින් SQLite දත්ත ගබඩාවේ ඇති SELECT විමසුම් දාමයක් ආකාරයෙන් සූරාකෑම කේතනය කිරීමෙන් අවදානම් සූරාකෑමේ තාක්ෂණයක් ද සූදානම් කර ඇත, එය ඔබට ASLR මඟ හැරීමට ඉඩ සලසයි.

සාර්ථක ප්‍රහාරයක් සඳහා, ප්‍රහාරයට ලක් වූ යෙදුම්වල දත්ත සමුදා ගොනු වෙනස් කිරීමට හැකි වීම අවශ්‍ය වේ, එමඟින් සංක්‍රමණ සහ ආදාන දත්ත සඳහා ආකෘතියක් ලෙස SQLite දත්ත සමුදාය භාවිතා කරන යෙදුම්වලට පහර දීම සඳහා ක්‍රමය සීමා කරයි. මෙම ක්‍රමය දැනට පවතින දේශීය ප්‍රවේශය පුළුල් කිරීමට ද භාවිතා කළ හැක, නිදසුනක් ලෙස, සැඟවුණු පසු දොර භාවිතා කරන ලද යෙදුම් වලට ඒකාබද්ධ කිරීමට මෙන්ම ආරක්ෂක පර්යේෂකයන් විසින් අනිෂ්ට මෘදුකාංග විශ්ලේෂණය කිරීමේදී ආරක්ෂක යාන්ත්‍රණ මඟ හැරීමට ද භාවිතා කළ හැක. ගොනු ආදේශනයෙන් පසු මෙහෙයුම සිදු කරනු ලබන්නේ යෙදුම වෙනස් කරන ලද දත්ත සමුදායේ වගුවකට එරෙහිව පළමු SELECT විමසුම ක්‍රියාත්මක කරන මොහොතේ ය.

උදාහරණයක් ලෙස, ලිපින පොතක් විවෘත කිරීමේදී iOS හි කේතය ධාවනය කිරීමේ හැකියාව අපි පෙන්නුම් කළෙමු, "AddressBook.sqlitedb" දත්ත සමුදාය සහිත ගොනුව යෝජිත ක්‍රමය භාවිතයෙන් වෙනස් කරන ලදී. ප්‍රහාරය අප්‍රේල් SQLite 3 යාවත්කාලීනයේ සවි කර ඇති fts2019_tokenizer ශ්‍රිතයේ (CVE-8602-2.28, pointer dereference හැකියාව) අවදානමක් භාවිතා කළේය. අවදානම කවුළු කාර්යයන් ක්රියාත්මක කිරීමේදී. මීට අමතරව, PHP හි ලියා ඇති ප්‍රහාරකයාගේ පසුපෙළ සේවාදායකයක් දුරස්ථව පාලනය කිරීම සඳහා ක්‍රමයක් භාවිතා කිරීම, එය අනිෂ්ට කේතය ක්‍රියාත්මක කිරීමේදී බාධා කරන ලද මුරපද එකතු කරයි (අත්හිටු වූ මුරපද SQLite දත්ත සමුදායක් ආකාරයෙන් සම්ප්‍රේෂණය කර ඇත),

ප්‍රහාරක ක්‍රමය පදනම් වී ඇත්තේ "Query Hijacking" සහ "Query Oriented Programming" යන ශිල්පීය ක්‍රම දෙකක් භාවිතා කිරීම මත වන අතර එමඟින් SQLite එන්ජිමේ මතක දූෂණයට තුඩු දෙන අත්තනෝමතික ගැටළු උපයෝගී කර ගැනීමට ඉඩ සලසයි. "Query Hijacking" හි සාරය වන්නේ දත්ත සමුදායේ ව්යුහය තීරණය කරන sqlite_master සේවා වගුවේ "sql" ක්ෂේත්රයේ අන්තර්ගතය ප්රතිස්ථාපනය කිරීමයි. දත්ත සමුදායේ ඇති වස්තූන්ගේ ව්‍යුහය විස්තර කිරීමට භාවිතා කරන DDL (Data Definition Language) බ්ලොක් එකක් නිශ්චිත ක්ෂේත්‍රයේ අඩංගු වේ. විස්තරය සම්මත SQL වාක්‍ය ඛණ්ඩය භාවිතයෙන් නියම කර ඇත, i.e. "CREATE TABLE" ඉදිකිරීම භාවිතා වේ,
දත්ත සමුදාය ආරම්භ කිරීමේ ක්‍රියාවලියේදී (පළමු දියත් කිරීමේදී) ක්‍රියාත්මක වේ
sqlite3LocateTable මතකයේ වගු ආශ්‍රිත අභ්‍යන්තර ව්‍යුහයන් නිර්මාණය කිරීමට ක්‍රියා කරයි.

අදහස නම්, "CREATE TABLE" වෙනුවට "CREAT VIEW" ආදේශ කිරීමේ ප්‍රතිඵලයක් ලෙස, ඔබගේම දර්ශනය නිර්වචනය කිරීමෙන් දත්ත සමුදායට ඕනෑම ප්‍රවේශයක් පාලනය කිරීමට හැකි වේ. "CREATE VIEW" භාවිතයෙන් "SELECT" මෙහෙයුමක් වගුවට බැඳී ඇත, එය "CREAT TABLE" වෙනුවට හඳුන්වනු ලබන අතර SQLite පරිවර්තකයේ විවිධ කොටස් වෙත ප්‍රවේශ වීමට ඔබට ඉඩ සලසයි. ඊළඟට, ප්‍රහාරයේ සරලම ක්‍රමය වනුයේ “load_extension” ශ්‍රිතය ඇමතීමටයි, එමඟින් ඔබට දිගුවක් සහිත අත්තනෝමතික පුස්තකාලයක් පැටවීමට ඉඩ සලසයි, නමුත් මෙම කාර්යය පෙරනිමියෙන් අක්‍රීය කර ඇත.

“SELECT” මෙහෙයුම සිදු කිරීමට හැකි වූ විට ප්‍රහාරයක් සිදු කිරීම සඳහා, “Query Oriented Programming” තාක්‍ෂණය යෝජනා කර ඇති අතර, එමඟින් මතක දූෂණයට තුඩු දෙන SQLite හි ගැටලු උපයෝගී කර ගැනීමට හැකි වේ. තාක්‍ෂණය නැවත-නැඹුරු ක්‍රමලේඛනය සිහිගන්වයි (ROP, ආපසු-නැඹුරු ක්‍රමලේඛනය), නමුත් ඇමතුම් දාමයක් ("ගැජට්") ගොඩනැගීමට යන්ත්‍ර කේතවල පවතින ස්නිපට් භාවිතා නොකරන නමුත් SELECT ඇතුළත උප විමසුම් කට්ටලයක් ඇතුළත් කරයි.

SQLite හි දුර්වලතා උපයෝගී කර ගැනීම සඳහා නව තාක්ෂණයක් හඳුන්වා දී ඇත.

SQLite හි දුර්වලතා උපයෝගී කර ගැනීම සඳහා නව තාක්ෂණයක් හඳුන්වා දී ඇත.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න