కెర్నల్ లోపల హ్యాండ్లర్లను అమలు చేయడానికి అనుమతించే eBPF సబ్ సిస్టమ్లో రెండు కొత్త బలహీనతలు కనుగొనబడ్డాయి. Linux JITతో కూడిన ఒక ప్రత్యేక వర్చువల్ మెషీన్లో. ఈ రెండు బలహీనతలు, ఐసోలేటెడ్ eBPF వర్చువల్ మెషీన్ వెలుపల, కెర్నల్ ప్రివిలేజ్లతో కోడ్ ఎగ్జిక్యూషన్కు అనుమతిస్తాయి. ఈ సంవత్సరం మూడు దాడులను ప్రదర్శించిన Pwn2Own పోటీని నిర్వహించే జీరో డే ఇనిషియేటివ్ బృందం ఈ సమస్యల గురించిన సమాచారాన్ని ప్రచురించింది. Ubuntu Linuxఇది ఇంతకుముందు తెలియని బలహీనతలను ఉపయోగించుకుంది (eBPFలోని బలహీనతలు ఈ దాడులకు సంబంధించినవా కాదా అనేది నివేదించబడలేదు).
- eBPF ALU32లో బిట్వైస్ AND, OR, మరియు XOR ఆపరేషన్లను అమలు చేస్తున్నప్పుడు 32-బిట్ విలువల కోసం అవుట్-ఆఫ్-బౌండ్స్ తనిఖీ లేకపోవడం వల్ల CVE-2021-3490 అనే దుర్బలత్వం ఏర్పడుతుంది. ఒక దాడి చేసేవాడు ఈ లోపాన్ని ఉపయోగించుకుని, కేటాయించిన బఫర్ యొక్క పరిమితుల వెలుపల డేటాను చదవగలడు మరియు వ్రాయగలడు. XOR ఆపరేషన్లతో ఈ సమస్య కెర్నల్ వెర్షన్ 5.7-rc1 నుండి, మరియు AND మరియు OR ఆపరేషన్లతో 5.10-rc1 విడుదల నుండి ఉంది.
- CVE-2021-3489 — ఈ దుర్బలత్వం రింగ్ బఫర్ ఇంప్లిమెంటేషన్లోని ఒక పొరపాటు వల్ల ఏర్పడింది. కేటాయించబడిన మెమరీ పరిమాణం, వాస్తవ రింగ్ బఫర్ పరిమాణం కంటే తక్కువగా ఉండే అవకాశం ఉందని bpf_ringbuf_reserve ఫంక్షన్ తనిఖీ చేయకపోవడంతో ఇది సంబంధం కలిగి ఉంది. ఈ సమస్య 5.8-rc1 విడుదల నుండి ఉంది.
డిస్ట్రిబ్యూషన్లలోని లోపాల పరిష్కారాల స్థితిని ఈ పేజీలలో ట్రాక్ చేయవచ్చు: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). పరిష్కారాలు ప్యాచ్లుగా కూడా అందుబాటులో ఉన్నాయి (CVE-2021-3489, CVE-2021-3490). దీనిని దుర్వినియోగం చేయడానికి వినియోగదారుకు eBPF సిస్టమ్ కాల్కు యాక్సెస్ ఉండాలి. ఉదాహరణకు, RHELలోని డిఫాల్ట్ కాన్ఫిగరేషన్లో, ఈ దుర్బలత్వాన్ని దుర్వినియోగం చేయడానికి వినియోగదారుకు CAP_SYS_ADMIN అధికారాలు ఉండాలి.
కెర్నల్లోని మరో బలహీనతను విడిగా గమనించాలి. Linux — CVE-2021-32606, ఇది ఒక స్థానిక వినియోగదారుడు తన అధికారాలను రూట్ స్థాయికి పెంచుకోవడానికి అనుమతిస్తుంది. ఈ సమస్య కెర్నల్లో మొదలవుతుంది. Linux 5.11 మరియు ఇది CAN ISOTP ప్రోటోకాల్ అమలులో రేస్ కండిషన్ వలన సంభవిస్తుంది, ఇది CAN_ISOTP_SF_BROADCAST ఫ్లాగ్ను ప్రాసెస్ చేస్తున్నప్పుడు isotp_setsockopt() ఫంక్షన్లో సరైన లాక్లు సెట్ చేయకపోవడం వలన సాకెట్ బైండింగ్ పారామీటర్లను మార్చడానికి అనుమతిస్తుంది.
ISOTP సాకెట్ మూసివేయబడిన తర్వాత, గ్రహీత యొక్క సాకెట్ బైండింగ్ అమలులో ఉంటుంది, మరియు అనుబంధిత మెమరీ విడుదల చేయబడిన తర్వాత గ్రహీత సాకెట్-సంబంధిత నిర్మాణాలను ఉపయోగించడం కొనసాగించవచ్చు (isotp_rcv() ను పిలిచేటప్పుడు isotp_sock నిర్మాణం యాక్సెస్ చేయబడటం వలన యూజ్-ఆఫ్టర్-ఫ్రీ జరుగుతుంది). డేటాను మార్చడం ద్వారా, sk_error_report() ఫంక్షన్ పాయింటర్ను ఓవర్రైడ్ చేసి, కెర్నల్ స్థాయిలో కస్టమ్ కోడ్ను అమలు చేయడం సాధ్యమవుతుంది.
మూలం: opennet.ru
