Curl-ийн тохиргооны файлууд санамсаргүйгээр Turing-ээр дууссан байна.

Curl тохиргооны файлууд дахь бүтцийг ашиглан ямар ч тооцоолж болох функцийг үүсгэж болохыг олж мэдсэн. Энэ асуудал нь зөвхөн Curl 8.12–8.16 хувилбаруудад тохиолддог бөгөөд Turing-ийн бүрэн бүтэн байдлын санамсаргүй хэрэгжилтээс үүдэлтэй бөгөөд энэ нь хувьсах утгуудаас байтын хүрээг гаргаж авах чадвар болон гадаад тохиргооны файлуудыг оруулах үед хязгааргүй үүрлэх гүнийг ашиглан Turing машинуудыг үүсгэх боломжийг олгодог.

Жишээлбэл, Curl нь тоонуудыг нэмэх болон давталт заахад ашигладаг "99 шил шар айраг" програмыг хэрэгжүүлэх зориулалттай хоёр тоолууртай регистрийн машин (Минский машин)-ыг дуурайлган ашигладаг. Curl тохиргооны файлуудыг ашиглан програмчилсан програмыг ажиллуулахын тулд архивыг задлаад "curl -q -s -K 99_bottles/main.conf" командыг ажиллуулна уу.

Регистрийн машиныг тоолуурын утгыг n x тэмдэгтийн мөр болгон дүрслэх замаар симуляци хийдэг. Нэмэлт болон бууралтын үйлдлүүдийг мөрийн нэгтгэл болон таслалт (эхний байтыг хадгалахын тулд "[0-0]" синтакс, эхний байтаас бусад бүх агуулгыг хадгалахын тулд "[1-]" синтакс) ашиглан хэрэгжүүлдэг бөгөөд төлөвийн шилжилтийг "expand-config" директивээр хянадаг бөгөөд энэ нь дараагийн тохиргооны файлыг үсрэлтийн шошго болгон нэрээр нь динамикаар ачаалдаг. Регистрийн машин дахь INC(R) үйлдлийг Curl тохиргооны файлд 'expand-variable = "r={{r}}x"', DEC(R)-ийг 'expand-variable = "r[1-]={{r}}"', JMP(S)-ийг 'expand-config = "S.conf"' гэж хэрэгжүүлдэг. Жишээлбэл, 2 + 3-г тооцоолох код:

Практикт тохиргооны файлуудаар дамжуулан хэрэгждэг тооцооллын чадварууд нь стекийн хэмжээгээр хязгаарлагддаг, учир нь програмын гүйцэтгэлийн алхам бүр шинэ үүрлэсэн тохиргооны файлыг ачаалахыг шаарддаг. 8 MB стектэй үед ойролцоогоор 922 алхамын дараа халих тохиолдол гардаг. Мөн чадавхид өргөтгөсөн хувьсагчдын хэмжээний хязгаарлалт (MAX_EXPAND_CONTENT параметрийг 10 MB гэж тохируулсан) болон бүх хуучин хувилбаруудыг хадгалахтай холбоотой өндөр санах ойн хэрэглээ нөлөөлдөг.

Хэдийгээр тодорхойлогдсон онцлог нь эмзэг байдал биш боловч curl 8.17-оос эхэлсэн хувилбаруудад хязгааргүй рекурсиос хамгаалахын тулд тохиргооны файлуудын үүрлэх гүнийг 5 түвшинд хязгаарласан тул уг заль мэх ажиллахаа болино.

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

DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster