Relro

Support HackTricks

Relro

RELRO inasimama kwa Relocation Read-Only, na ni kipengele cha usalama kinachotumiwa katika binaries kudhibiti hatari zinazohusiana na GOT (Global Offset Table) overwrites. Hebu tuchambue dhana hii katika aina zake mbili tofauti kwa uwazi: Partial RELRO na Full RELRO.

Partial RELRO

Partial RELRO inachukua njia rahisi kuongeza usalama bila kuathiri sana utendaji wa binary. Kwa kuweka GOT juu ya variables za programu kumbukumbu, Partial RELRO inalenga kuzuia buffer overflows kufikia na kuharibu GOT.

Hii haizuii GOT kutumiwe kutoka kwa vulnerabilities za kuandika kwa ujanja.

Full RELRO

Full RELRO inaimarisha ulinzi kwa kufanya GOT na sehemu ya .fini_array kuwa kabisa soma-pekee. Mara tu binary inapoanza, anwani zote za kazi zinafumbuliwa na kupakiwa kwenye GOT, kisha, GOT inaashiria kama soma-pekee, ikizuia uhariri wowote wakati wa muda wa uendeshaji.

Hata hivyo, kubadilishana na Full RELRO ni kuhusu utendaji na wakati wa kuanza. Kwa sababu inahitaji kutatua alama zote za kudumu wakati wa kuanza kabla ya kuashiria GOT kama soma-pekee, binaries zenye Full RELRO iliyowezeshwa zinaweza kupata nyakati ndefu za kupakia. Gharama ya ziada ya kuanza hii ndio sababu Full RELRO haiko kuwezeshwa kwa chaguo-msingi katika binaries zote.

Inawezekana kuona ikiwa Full RELRO imewezeshwa katika binary na:

readelf -l /proc/ID_PROC/exe | grep BIND_NOW

Kupita

Ikiwa Full RELRO imewezeshwa, njia pekee ya kuipita ni kupata njia nyingine ambayo haitaji kuandika kwenye jedwali la GOT ili kupata utekelezaji wa kupindukia.

Tafadhali kumbuka kwamba GOT ya LIBC kawaida ni Partial RELRO, hivyo inaweza kuhaririwa kwa kuandika kwa hiari. Taarifa zaidi katika Kulenga viingilio vya GOT vya libc.

Last updated