Kiber Howpsuzlyk gündeligi, Gün 2: IDOR (Insecure Direct Object Reference)
IDOR (Insecure Direct Object Reference) — bu web programma üpjünçiliklerinde ýüze çykýan howpsuzlyk meselesidir. Bu howpsuzlyk, ulanyjylaryň sistemadaky maglumatlara (meselem: faýllar, profiller) gözegçiliksiz giriş gazanmagyna mümkinçilik berýär. Esasan, bu ýagdaý, programma kodynda ulanyjylaryň giriş hukugyny doly barlamazlygy sebäpli ýüze çykýar.
Salam hemmä! Cyber Security öwrenmäge dowam. Bu gün öň hiç eşitmedigim bir tema bilen garşylaşdym, bu hem IDOR. Köp web sahypalarda garşylaşylýan bu näsazlyk sebäpli web sahypalara erbet uly şikesler ýetirip biljegine göz ýetirdim.
IDOR näme zat?
IDOR bu web sahypada öz akkaundyňa degişli däl informasiýalary görmäge sebäp bolýan bir näzaslygyň bir görnüşidir. Meselem: Ynamdar.com - da bir akkaunt döredeliň we akkaundyň adyna “Plany1” diýp at bereliň. Soňra ýene bir akkount döredip adyna hem “Plany2” diýp at bersek. Indi biz “Plany1” akkoundy bilen “Plany2” akkoundynyň informasiýalaryny öwrenip bilsek IDOR näzaslygy ýüze çykýar. Biz bu informasiýalar bilen ähli ulanyjylaryň informasiýalaryna el ýetirip bilýäris.
Tehniki tarapadan seredenimizde IDOR haçanda ulanyjynyň informasiýalaryny authorization barlagyndan geçirman görkezse ýüze çykýar, meselem:
- Şeýlerak bir url bolsun:
https://example.com/profile?user_id=123, bu url bize 123 ID-ly bir ulanyjynyň informasiýalaryny görkezer. Eger-de biz123-i,456-açalyşsak, başga bir ulanyjynyň informasiýalaryny görüp bileris.
Hüjümçiler bular ýaly zady ulanyp, möhüm maglumatlary ogurlap, ýa-da bu informasiýalary pozmak ýaly zatlary edip bilerler.
IDOR näsazlygy nädip döreýär?
IDOR näsazlygy esasan programistlaryň kodunda ýalňyş logika ulansa ýüze çykýar. Meselem:
@app.route('/view_document/')
def view_document(doc_id):
document = Document.query.get(doc_id)
return render_template('document.html', document=document)
Ýokardaky görýän kodumyzda programist bir dokumenti ulanyjynyň ID-syna göra alýar. Emma bir ýatdan çykarýan ýeri bar, programmist çekýän dokumentini berilen ID-daky ulanyja degişlidigini barlanok. Bular ýaly ýagdaý hem IDOR-y döretýär.
Nädip düzedip biler? Her informasiýa çekilen ýa-da ýazylan ýerde hökman authorization barlagyny geçiriň:
if current_user != document.owner: raise PermissionDeniedError
Gysgaça jemlänimde, programistlaryň kod ýazanda kiçijik ünsizlikeri bir web sahypa ençeme uly meseleler döredip bilýär.