OpenBSDలో IPv6 అడ్రస్ ఆటోకాన్ఫిగరేషన్ (IPv6 స్టేట్లెస్ అడ్రస్ ఆటోకాన్ఫిగరేషన్, RFC 4862)కి బాధ్యత వహించే బ్యాక్గ్రౌండ్ ప్రాసెస్ slaacdలో, ప్రత్యేకంగా రూపొందించిన IPv6 రూటర్ ప్రకటన (RA, రూటర్ అడ్వర్టైజ్మెంట్) అందుకున్నప్పుడు బఫర్ ఓవర్ఫ్లోకి దారితీసే దుర్బలత్వం గుర్తించబడింది. .
ప్రారంభంలో, IPv6 అడ్రస్ ఆటోకాన్ఫిగరేషన్ ఫంక్షనాలిటీ కెర్నల్ స్థాయిలో అమలు చేయబడింది, కానీ OpenBSD 6.2తో ప్రారంభించి అది ప్రత్యేక అన్ప్రివిలేజ్డ్ స్లాక్డ్ ప్రక్రియకు తరలించబడింది. రూటర్ మరియు నెట్వర్క్ కనెక్షన్ పారామితుల గురించిన సమాచారంతో RS (రూటర్ విన్నపం) సందేశాలను పంపడం మరియు RA (రూటర్ అడ్వర్టైజ్మెంట్) ప్రతిస్పందనలను అన్వయించడం కోసం ఈ ప్రక్రియ బాధ్యత వహిస్తుంది.
ఫిబ్రవరిలో, RDNSS (పునరావృత DNS సర్వర్లు) జాబితాలో 7 సర్వర్లు పేర్కొనబడితే అది క్రాష్ అయ్యే బగ్ను slaacd పరిష్కరించింది. ఈ పర్యవేక్షణ స్వతంత్ర పరిశోధకుల దృష్టిని ఆకర్షించింది, వారు RA సందేశాలలో ఫీల్డ్లను అన్వయించేటప్పుడు సంభవించే ఇతర లోపాల కోసం స్లాక్డ్ కోడ్ను పరిశీలించడానికి ప్రయత్నించారు. విశ్లేషణ కోడ్లో మరొక సమస్య ఉందని చూపించింది, ఇది DNSSL (DNS శోధన జాబితా) ఫీల్డ్ను ప్రాసెస్ చేస్తున్నప్పుడు వ్యక్తమవుతుంది, ఇందులో DNS కోసం డొమైన్ పేర్లు మరియు హోస్ట్ టెంప్లేట్ల జాబితాలు ఉంటాయి.
DNSSL జాబితాలోని ప్రతి పేరు శూన్య డీలిమిటర్ను ఉపయోగించి ఎన్కోడ్ చేయబడింది మరియు అనుసరించే డేటా పరిమాణాన్ని నిర్ణయించే ఒక-బైట్ ట్యాగ్లను జోక్యం చేసుకుంటుంది. జాబితా అన్వయించే కోడ్లో, సైజుతో కూడిన ఫీల్డ్ సంతకం చేయబడిన పూర్ణాంకం రకం (“len = డేటా[pos]”)తో వేరియబుల్లోకి కాపీ చేయబడి ఉండటం వలన దుర్బలత్వం ఏర్పడుతుంది. దీని ప్రకారం, ఫీల్డ్లో అత్యంత ముఖ్యమైన బిట్ సెట్తో విలువ పేర్కొనబడితే, ఈ విలువ షరతులతో కూడిన ఆపరేటర్లో ప్రతికూల సంఖ్యగా గుర్తించబడుతుంది మరియు గరిష్టంగా అనుమతించదగిన పరిమాణాన్ని తనిఖీ చేస్తుంది (“అయితే (len > 63 || len + pos) + 1 > datalen) {“) పని చేయదు, ఇది కాపీ చేయబడిన డేటా యొక్క పరిమాణం బఫర్ పరిమాణాన్ని మించిన పారామీటర్తో memcpyకి కాల్కి దారి తీస్తుంది.
మూలం: opennet.ru