వివిక్త కంటైనర్ నుండి తప్పించుకోవడానికి అనుమతించే cgroups v1లో దుర్బలత్వం

Linux కెర్నల్‌లోని cgroups v2022 రిసోర్స్ లిమిటేషన్ మెకానిజం అమలులో ఒక దుర్బలత్వం (CVE-0492-1) యొక్క వివరాలు బహిర్గతం చేయబడ్డాయి, ఇది వివిక్త కంటైనర్‌లను తప్పించుకోవడానికి ఉపయోగించబడుతుంది. సమస్య Linux కెర్నల్ 2.6.24 నుండి ఉంది మరియు 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 మరియు 4.9.301 కెర్నల్ విడుదలలలో పరిష్కరించబడింది. మీరు ఈ పేజీలలో పంపిణీలలో ప్యాకేజీ నవీకరణల ప్రచురణలను అనుసరించవచ్చు: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.

హ్యాండ్లర్‌ను పూర్తి అధికారాలతో రన్ చేస్తున్నప్పుడు సరైన తనిఖీలు చేయడంలో విఫలమైన రిలీజ్_ఏజెంట్ ఫైల్ హ్యాండ్లర్‌లో లాజిక్ లోపం కారణంగా దుర్బలత్వం ఏర్పడింది. Cgroupలో ప్రక్రియ ముగించబడినప్పుడు కెర్నల్ ద్వారా అమలు చేయబడే ప్రోగ్రామ్‌ను నిర్వచించడానికి release_agent ఫైల్ ఉపయోగించబడుతుంది. ఈ ప్రోగ్రామ్ రూట్‌గా మరియు రూట్ నేమ్‌స్పేస్‌లోని అన్ని “సామర్థ్యాలతో” నడుస్తుంది. విడుదల_ఏజెంట్ సెట్టింగ్‌కు నిర్వాహకుడు మాత్రమే ప్రాప్యత కలిగి ఉంటారని భావించబడింది, అయితే వాస్తవానికి తనిఖీలు రూట్ వినియోగదారుకు ప్రాప్యతను మంజూరు చేయడానికి పరిమితం చేయబడ్డాయి, ఇది కంటైనర్ నుండి లేదా నిర్వాహక హక్కులు లేకుండా రూట్ వినియోగదారు ద్వారా సెట్టింగ్‌ను మార్చడాన్ని మినహాయించలేదు (CAP_SYS_ADMIN )

ఇంతకుముందు, అటువంటి లక్షణం దుర్బలత్వంగా భావించబడదు, అయితే వినియోగదారు నేమ్‌స్పేస్‌లు (యూజర్ నేమ్‌స్పేసులు) రావడంతో పరిస్థితి మారిపోయింది, ఇది రూట్ యూజర్‌తో అతివ్యాప్తి చెందని కంటైనర్‌లలో ప్రత్యేక రూట్ వినియోగదారులను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది. ప్రధాన పర్యావరణం. దీని ప్రకారం, దాడి కోసం, మీ రిలీజ్_ఏజెంట్ హ్యాండ్లర్‌ను ప్రత్యేక వినియోగదారు ID స్థలంలో దాని స్వంత రూట్ వినియోగదారుని కలిగి ఉన్న కంటైనర్‌లో కనెక్ట్ చేయడం సరిపోతుంది, ఇది ప్రక్రియను పూర్తి చేసిన తర్వాత, ప్రధాన పర్యావరణం యొక్క పూర్తి అధికారాలతో అమలు చేయబడుతుంది.

డిఫాల్ట్‌గా, cgroupfs ఒక కంటైనర్‌లో రీడ్-ఓన్లీ మోడ్‌లో మౌంట్ చేయబడింది, అయితే మీకు CAP_SYS_ADMIN హక్కులు ఉంటే లేదా అన్‌షేర్ సిస్టమ్ కాల్‌ని ఉపయోగించి ప్రత్యేక వినియోగదారు నేమ్‌స్పేస్‌తో సమూహ కంటైనర్‌ను సృష్టించడం ద్వారా ఈ సూడాఫ్‌లను రైట్ మోడ్‌లో రీమౌంట్ చేయడంలో సమస్య లేదు. సృష్టించబడిన కంటైనర్ కోసం CAP_SYS_ADMIN హక్కులు అందుబాటులో ఉన్నాయి.

వివిక్త కంటైనర్ నుండి తప్పించుకోవడానికి అనుమతించే cgroups v1లో దుర్బలత్వం

మీరు వివిక్త కంటైనర్‌లో రూట్ అధికారాలను కలిగి ఉంటే లేదా no_new_privs ఫ్లాగ్ లేకుండా కంటైనర్‌ను నడుపుతున్నప్పుడు దాడి చేయవచ్చు, ఇది అదనపు అధికారాలను పొందడాన్ని నిషేధిస్తుంది. సిస్టమ్ తప్పనిసరిగా ఎనేబుల్ చేయబడిన వినియోగదారు నేమ్‌స్పేస్‌లకు మద్దతుని కలిగి ఉండాలి (ఉబుంటు మరియు ఫెడోరాలో డిఫాల్ట్‌గా ప్రారంభించబడింది, కానీ డెబియన్ మరియు RHELలో యాక్టివేట్ చేయబడదు) మరియు రూట్ cgroup v1కి ప్రాప్యత కలిగి ఉండాలి (ఉదాహరణకు, రూట్ RDMA cgroupలో డాకర్ కంటైనర్‌లను నడుపుతుంది). మీరు CAP_SYS_ADMIN అధికారాలను కలిగి ఉంటే కూడా దాడి సాధ్యమవుతుంది, ఈ సందర్భంలో వినియోగదారు నేమ్‌స్పేస్‌లకు మద్దతు మరియు cgroup v1 రూట్ సోపానక్రమానికి ప్రాప్యత అవసరం లేదు.

వివిక్త కంటైనర్ నుండి తప్పించుకోవడంతో పాటు, దుర్బలత్వం అనేది "సామర్థ్యాలు" లేకుండా రూట్ వినియోగదారు లేదా CAP_DAC_OVERRIDE హక్కులతో ఏ వినియోగదారు ప్రారంభించిన ప్రక్రియలను కూడా అనుమతిస్తుంది (దాడికి ఫైల్ /sys/fs/cgroup/*/release_agent యాక్సెస్ అవసరం, ఇది రూట్ స్వంతం) అన్ని దైహిక "సామర్థ్యాలకు" యాక్సెస్ పొందేందుకు.

కంటైనర్‌ల అదనపు ఐసోలేషన్ కోసం Seccomp, AppArmor లేదా SELinux ప్రొటెక్షన్ మెకానిజమ్‌లను ఉపయోగిస్తున్నప్పుడు దుర్బలత్వం ఉపయోగించబడదని గుర్తించబడింది, ఎందుకంటే Seccomp unshare() సిస్టమ్ కాల్‌కు యాక్సెస్‌ను బ్లాక్ చేస్తుంది మరియు AppArmor మరియు SELinux cgroupfలను రైట్ మోడ్‌లో మౌంట్ చేయడానికి అనుమతించవు.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి