Ailagbara ni Python ti o fun laaye awọn aṣẹ eto pipe lati awọn iwe afọwọkọ iyanrin

Ọna kan ti ṣe atẹjade lati fori awọn eto ipaniyan koodu ti o ya sọtọ ni Python, ti o da lori lilo kokoro ti a mọ ni pipẹ ti o han ni Python 2.7, ti ṣe idanimọ ni ọdun 2012 ati pe ko tii ṣe atunṣe ni Python 3. Kokoro naa ngbanilaaye lilo awọn ọna asopọ pataki. Python koodu lati pilẹ ipe kan si tẹlẹ ominira iranti (Lo-Lẹhin-Ọfẹ) ni Python. Ni ibẹrẹ, o ti ro pe aṣiṣe naa ko ṣe irokeke aabo ati pe nikan ni awọn iṣẹlẹ ti o ṣọwọn pupọ, ti a ṣẹda ni atọwọda, le ja si ifopinsi ajeji ti iwe afọwọkọ naa.

Oluwadi aabo labẹ pseudonym kn32 ti nifẹ ninu iṣoro naa ati ṣakoso lati mura ilokulo ṣiṣẹ ti o jẹ ki o ṣee ṣe lati pe eyikeyi aṣẹ eto laisi wiwọle taara si awọn ọna bii os.system. Awọn ilokulo naa ni imuse ni Python mimọ ati pe o ṣiṣẹ laisi agbewọle awọn ile-ikawe itagbangba ati laisi fifi sori ẹrọ oluṣakoso “koodu.__new__”. Ninu awọn kio, "builtin.__id__" nikan ni a lo, eyiti a ko ni idinamọ nigbagbogbo. Ni ẹgbẹ ti o wulo, koodu ti a dabaa le ṣee lo lati fori awọn ọna ipinya ni ọpọlọpọ awọn iṣẹ ati awọn agbegbe (fun apẹẹrẹ, ni awọn agbegbe ikẹkọ, awọn ikarahun ori ayelujara, awọn oluṣakoso ti a ṣe sinu, ati bẹbẹ lọ), eyiti o gba laaye ipaniyan ti koodu Python, ṣugbọn diwọn awọn ipe to wa ko si gba awọn ọna ipe laaye gẹgẹbi os.system.

Koodu ti a dabaa jẹ afọwọṣe ti ipe os.system, eyiti o ṣiṣẹ nipa lilo ailagbara ni CPython. Iwa nilokulo naa n ṣiṣẹ pẹlu gbogbo awọn ẹya ti Python 3 lori awọn eto pẹlu faaji x86-64 ati ṣafihan iṣẹ iduroṣinṣin lori Ubuntu 22.04, paapaa nigbati awọn ipo aabo PIE, RELRO ati CET ṣiṣẹ. Iṣẹ naa wa ni isalẹ lati gba alaye lati koodu Python nipa adirẹsi ti ọkan ninu awọn iṣẹ ni koodu CPython ti o ṣiṣẹ. Da lori adirẹsi yii, adirẹsi ipilẹ ti CPython ni iranti ati adirẹsi ti eto () iṣẹ ni apẹẹrẹ libc ti kojọpọ ni iranti jẹ iṣiro. Ni ipari, iyipada taara si adiresi eto kan pato ti bẹrẹ pẹlu iyipada ti ijuboluwole ti ariyanjiyan akọkọ si laini "/ bin / sh".

Ailagbara ni Python ti o fun laaye awọn aṣẹ eto pipe lati awọn iwe afọwọkọ iyanrin


orisun: opennet.ru

Fi ọrọìwòye kun