pienoiskuva|Tyypillinen pinon rakenne, jossa on paluuosoitteita. ROP () on tietoturvahyökkäystekniikka, joka pyrkii hyödyntämään ohjelmassa olevia pätkiä hyökkäämiseen. Hyökkääjä pyrkii ohjaamaan ohjelman suoritusta päästäkseen suorittamaan omaa koodiaan kohdejärjestelmässä. ROP on kehittyneempi versio pinon ylikirjoittamiseen tähtäävästä menetelmästä (stack smashing). Hyökkääjä analysoi kohdejärjestelmässä ajettavia ohjelmia ja etsii hyödynnettäviä paikkoja, joissa on tyypillisesti aliohjelmasta paluu. Nämä ovat tavallisia ja sallittuja ohjelmakohtia, joita hyökkääjä yhdistelee ketjuina. Koska hyödynnettävät pätkät (gadget) ovat sallittua koodia niiden erottaminen mahdollisesta haittaohjelmasta on vaikeaa. Aliohjelmien kutsuille annettavat parametrit ovat tyypillisesti olleet sijoitettuna ohjelman pinoon, mutta 64-bittisten järjestelmien kutsukäytännöissä tiedot usein sijoitetaan rekistereihin, joka vaikeuttaa hyökkäyksen muodostamista.

Esimerkki hyödynnettävästä ohjelmakohdasta on tavallinen kahden luvun yhteenlasku ja aliohjelmasta paluu: ADD x0, x1, x2 RET

ROP-tekniikkaa vastaan on kehitetty muun muassa ASLR-tekniikka ja Stack Smashing Protection (SSP). Varjopino (shadow stack) on kopio paluuosoitteista, johon paluuosoitteita verrataan aliohjelmasta palattaessa. Jos varsinaisen pinon ja varjopinon sisältämät paluuosoitteet eivät täsmää järjestelmä nostaa virheen.

Lähteet

Luokka:Turvallisuushaavoittuvuudet