Curl konfigurācijas failos nejauŔi īstenota Tjūringas pilnība

AizsardzÄ«bas ļauj veidot jebkuras aprēķināmas funkcijas, izmantojot konstrukcijas konfigurācijas failos ar Curl utilÄ«tu. Å Ä« Ä«paŔība izpaužas tikai Curl versijās no 8.12 lÄ«dz 8.16, un tā ir nenojauÅ”ināta TjÅ«ringa pilnÄ«bas realizācija, kas ļauj izveidot TjÅ«ringa maŔīnas, izmantojot iespēju izvilkt byte diapazonus no mainÄ«go vērtÄ«bām un neierobežotu ielādes dziļumu, izmantojot ārējos konfigurācijas failus.

Kā piemēru ar Curl ir organizēta divskaitlÄ«ga reÄ£istru maŔīnas (Minska maŔīnas) simulācija skaitļu saskaitīŔanai un programmas "99 pudeles alus" Ä«stenoÅ”anai, ko izmanto apmācÄ«bā darbā ar cikliem. Lai palaistu programmu, kas ir ieprogrammēta, izmantojot curl konfigurācijas failus, pietiek izsist arhÄ«vu un izpildÄ«t komandu "curl -q -s -K 99_bottles/main.conf".

ReÄ£istru maŔīna tiek simulēta, izmantojot skaitÄ«tāja vērtÄ«bas attēloÅ”anu kā virkni no "n" simboliem "x". Inkrementācijas un dekrementācijas operācijas ir realizētas caur virkņu concatenāciju un apgrieÅ”anu (sintakse "[0-0]" pirmajam byte saglabāŔanai un "[1-]" visa satura saglabāŔanai, izņemot pirmo byte), un pārejas starp stāvokļiem tiek kontrolētas ar direktÄ«vu "expand-config", kas dinamiski ielādē nākamo konfigurācijas failu, izmantojot tā nosaukumu kā pārejas etiÄ·eti. Operācija INC(R) reÄ£istru maŔīnā tiek realizēta kā 'expand-variable = "r={{r}}x"' konfigurācijas failā Curl, DEC(R) — kā 'expand-variable = "r[1-]={{r}}"', un JMP(S) — kā 'expand-config = "S.conf"'. Piemēram, kods skaitīŔanai 2 + 3:

Praksē, realizētās caur konfigurācijas failiem aprēķināŔanas iespējas ir ierobežotas ar steka lielumu, jo katrs programmas izpildes solis prasa jaunā iekļautā konfigurācijas faila iekrauÅ”anu. Ar 8 MB staku pārplÅ«de notiek aptuveni pēc 922 soļiem. Uz iespējām ietekmē arÄ« ierobežojums uz atklāto mainÄ«go lielumu (parametrs MAX_EXPAND_CONTENT ir iestatÄ«ts uz 10 MB) un liels atmiņas patēriņŔ, jo tiek saglabātas visas vecās mainÄ«go versijas.

Lai gan atklātā iespēja nav ievainojamība versijās no curl 8.17, apskatītais triks vairs nedarbosies, jo konfigurācijas failu ielādes dziļuma ierobežojums ir 5 līmeņi, lai pasargātu no bezgalīgas rekursijas.

Avots: opennet.lv

Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa hostingu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster