Mae bygiau llygru cof yn parhau i fod yn un o'r dosbarthiadau mwyaf parhaus o frianta mewn meddalwedd systemau, ac mae deall y mecaneg y tu ôl iddynt yn hanfodol i unrhyw un sy'n gweithio mewn ymchwil frianta, codio diogel, neu liniaru dryllio. "PUDA" yw term a ddefnyddir yn anffurfiol mewn rhai cymunedau diogelwch i ddisgrifio Defnyddio Cynamserol o Fynediad Crwydro — categori o fygiau lle mae rhaglen yn cyfeirio at gof (pwyntiwr, handl, neu gyfeiriad gwrthrych) ar ôl i'r cof hwnnw gael ei ryddhau, ei ddylrannu eto, neu gael ei ddirymu mewn ffordd arall. Mae hyn yn agos iawn i, ac yn aml yn cael ei ddefnyddio fel arall yn lle, materynoedd use-after-free (UAF) a phwyntiwr crwydro. Ni waeth ai ydych yn dod ar draws y term PUDA mewn ysgrifennu CTF, papur ymchwil, neu wneuthuriad byg mewnol, mae'r cysyniad sylfaenol yr un peth: cyfeiriad sydd wedi mynd yn hen yn cael ei ddefnyddio fel petai'n dal i fod yn ddilys.
Beth sy'n Achosi Cyflwr PUDA
Yn ei hanfod, mae byg PUDA yn deillio o anghydbwysedd rhwng oes gwirioneddol gwrthrych ac oes yr hyn a dybir gan y cod sy'n cyfeirio ato. Mae achosion gwreiddiol cyffredin yn cynnwys:
- Null-out ar goll ar ôl rhyddhau: mae pwyntiwr yn cael ei ryddhau ond nid yw wedi'i osod i
NULL, gan ei adael yn crwydro ac yn ailaddefnyddiadwy trwy ddamwain. - Amodau hiliogaeth: mewn cod amliedredig, mae un edafedd yn rhyddhau gwrthrych tra bo edafedd arall yn dal i ddal ac yn defnyddio cyfeiriad ato (senario TOCTOU-gyfagos clasurol).
- Rhesymeg alw-yn-ôl a thdigwyddiad-dreifiol: mae gwrthrych yn cael ei ddinistrio yn ystod alw-yn-ôl, ond mae'r cod galwadwy yn parhau i weithredu arno ar ôl i'r alw-yn-ôl ddychwelyd.
- Gwallau cyfrif cyfeirio: mae cyfrif cyfeirio gwrthrych yn cael ei leihau yn anghywir, gan achosi iddo gael ei ryddhau tra'n dal yn