విఫలమైన VPN హ్యాండ్షేక్ నిజంగా డౌన్గ్రేడ్ దాడేనా?
డౌన్గ్రేడ్ దాడులు ఉన్నాయి, కానీ చాలా విఫలమైన హ్యాండ్షేక్లు ప్రతిపాదన అసమతుల్యత, చెడు మార్గం లేదా గడువు ముగిసిన ప్రొఫైల్. మొదట ఏమి సంధి జరిగిందో చూడండి.
లోపంతో ముగిసే హ్యాండ్షేక్ సందేశాన్ని చూసే వరకు దాడిలా అనిపిస్తుంది, చాలాసార్లు అది గణితం: ఉమ్మడి ప్రతిపాదన లేదు, గడువు ముగిసిన ధృవపత్రం, లేదా ఎప్పుడూ రాని ప్యాకెట్. డౌన్గ్రేడ్ దాడి ఒక నిర్దిష్ట విషయం: ప్రత్యర్థి రెండు చివరలను వారు ఎంచుకున్నదానికంటే బలహీన ప్రవర్తన వైపు నెట్టుతాడు, అది వేరే సాక్ష్యాలను మిగులుస్తుంది. ప్రతి వైఫల్యాన్ని దురుద్దేశంగా భావిస్తే ఉనికిలో లేని బాధితుడిని వెతుకుతారు, కానీ నిజమైన డౌన్గ్రేడ్ను కాన్ఫిగరేషన్ బగ్గా భావిస్తే బలహీన ఫలితం అలాగే ఉంటుంది. రెండు తప్పుల ఖర్చు వేరు, ఒకటి మాత్రమే చవకగా సరిదిద్దగలం.
డౌన్గ్రేడ్ దాడి నిజంగా ఏమి మారుస్తుంది
లక్ష్యం సైఫర్ను బద్దలు కొట్టడం కాదు, కీని ఊహించడం కాదు. లక్ష్యం చర్చలపై ప్రభావం చూపి, రెండు పక్షాలు దాడికారుడు ఎదుర్కోగల పాత వెర్షన్ లేదా బలహీన అల్గోరిథంపై ఆగేలా చేయడం, లేదా ఒక పక్షం మరొకటి దానిని మాత్రమే మద్దతిస్తుందని నమ్మేలా చేయడం.
మారేది ఒప్పందం, ప్రామాణీకరణ కాదు. దాడికారుడు గుర్తించబడకుండా ఆఫర్ను మార్చగలిగితే, పక్షాలు ఇప్పటికీ హ్యాండ్షేక్ పూర్తి చేసి ఒకరినొకరు ప్రామాణీకరించుకోగలవు, కానీ దాడికారుడు ఇష్టపడే పారామితులతో. అందుకే చర్చలే సమగ్రత రక్షణలో ఉందా అనేది ఆసక్తికరమైన ప్రశ్న.
చర్చలే ప్రామాణీకరించబడాల్సిన కారణం
TLS 1.3 ఆ రక్షణను స్పష్టం చేస్తుంది. కొత్త వెర్షన్ను ప్రతిపాదించిన క్లయింట్ నిశ్శబ్దంగా వెనక్కి తగ్గిన సర్వర్ను గుర్తించగలదు, ఎందుకంటే సర్వర్ యాదృచ్ఛిక విలువ 1.2 లేదా అంతకంటే తక్కువతో చర్చలు జరిపినప్పుడు స్థిర నమూనాను కలిగి ఉంటుంది, క్లయింట్ దాన్ని చూసినప్పుడు ఆపాలి. పూర్తి ట్రాన్స్క్రిప్ట్ కూడా చివరి సందేశాలతో కప్పబడి ఉంటుంది, కాబట్టి చర్చల్లో ఎక్కడైనా మార్పు తర్వాత విఫలమవుతుంది, నిశ్శబ్దంగా దాటిపోదు.
పాత ప్రోటోకాల్ వెర్షన్ల కథలు బలహీనంగా ఉండేవి, అందుకే ఫాల్బ్యాక్ నియమాలు ముఖ్యం. అదే కాన్ఫిగరేషన్లోని TLS 1.0 ఎండ్పాయింట్ డౌన్గ్రేడ్ దాడి కాదు; అది మీరే అనుమతించాలని ఎంచుకున్న అనుమత ఫలితం. భేదం ఏమిటంటే బలహీన ఫలితం రక్షిత నిర్ణయం నుండి వచ్చిందా లేక మధ్యవర్తి ప్రభావితం చేయగల అరక్షిత మార్గం నుండి వచ్చిందా అనేది. అలా చెప్పగానే చాలా సంఘటనలు కాన్ఫిగరేషన్ ప్రశ్నగా మారుతాయి.
IKEv2 భిన్నంగా ప్రవర్తిస్తుంది కానీ అదే ఆలోచనపై నిలిచి ఉంది. ప్రతిపాదన తర్వాత రెండు పక్షాలను ప్రామాణీకరించే మార్పిడిలో తీసుకెళ్లబడుతుంది, కాబట్టి అల్గోరిథంలను తిరిగి రాసే మధ్య పెట్టె ప్రామాణీకరణను దిశానిర్దేశం చేయడం బదులు బద్దలు కొడుతుంది. OpenVPN నియంత్రణ ఛానెల్ తన చర్చలను TLS తో రక్షించి, తర్వాత ఆ ఛానెల్తో డేటా ఛానెల్ సైఫర్లను అంగీకరిస్తుంది, అందుకే నియంత్రణ ఛానెల్ లాగ్ లైన్ ఆసక్తికరం.
కాన్ఫిగర్ చేసిన అనుకూలత దాడి కాదు
నిర్వాహకుడు డాక్యుమెంట్ చేసిన క్లయింట్కు మద్దతివ్వడానికి ఉద్దేశపూర్వకంగా పాత ఎంపికలను అనుమతించవచ్చు, ఆ నిర్ణయం కాన్ఫిగరేషన్లో కనిపిస్తుంది. దాడికారుడు ఆ కాన్ఫిగరేషన్ను సృష్టించలేడు; ఆఫర్పై ప్రభావం చూపే మార్గాన్ని మాత్రమే ఉపయోగించగలడు.
ప్రమాదకర మరమ్మతు భేదానికి సాక్ష్యాన్ని తొలగించేది. ప్రతి పాత ఎంపికను ప్రారంభించడం, ధృవపత్ర ధృవీకరణను నిలిపివేయడం లేదా లోపం మాయమయ్యేందుకు ఏదైనా సైఫర్ను అంగీకరించడం ఎండ్పాయింట్ అంగీకరించే పరిధిని విస్తరిస్తుంది, బలహీన ఫలితాన్ని నివేదించే తనిఖీలను తొలగిస్తుంది.
ఒక పాత ఎంపికను ఉంచాల్సి వస్తే, కారణం మరియు క్లయింట్ను కాన్ఫిగరేషన్ వ్యాఖ్యలో పేర్కొని, తర్వాత ఆ ఎంపికను దాని అవసరమున్న ప్రొఫైల్కు పరిమితం చేయండి. ఒక శ్రోతకు పరిమితమైన అనుకూలత మినహాయింపు ఆడిట్ చేయదగినది; సర్వత్రా వర్తింపజేసినది ఎవరూ ఎంచుకున్నట్టు గుర్తులేని బలహీన డిఫాల్ట్ మాత్రమే.
కారణాన్ని పేర్కొనే ముందు వైఫల్యాన్ని చదవండి
ఏ మార్పుకు ముందైనా ఖచ్చితమైన లోప స్ట్రింగ్, క్లయింట్ మరియు సర్వర్ వెర్షన్లు, సమయాన్ని భద్రపరచండి. తర్వాత వర్గీకరించండి: పక్షాలు ప్రతిపాదనపై ఏకీభవించలేదా, ప్యాకెట్ మార్గం విఫలమైందా, లేక ఒక పక్షం గతంలో అంగీకరించిన పారామితిని తిరస్కరించిందా?
ప్రతిపాదన అసమతుల్యత సాధారణంగా దోష వెర్షన్లు లేదా అల్గోరిథంలను పేర్కొని ప్రతిసారీ అదే బిందువు వద్ద విఫలమవుతుంది. రూటింగ్ లేదా MTU సమస్య ఆగిపోతుంది లేదా సమయం ముగుస్తుంది, అది నెట్వర్క్ను బట్టి మారుతుంది. గడువు ముగిసిన ధృవపత్రం చర్చల లోపం కాకుండా ధృవీకరణ లోపాన్ని ఇస్తుంది.
వీటిలో ఏదీ దాడికారుడికి సాక్ష్యం కాదు. మొదటి వైఫల్యం వద్దే దురుద్దేశపూర్వక కారణాన్ని ఆపాదించడమే తప్పు, ఎందుకంటే అది రేపు మళ్లీ విఫలమయ్యే నిర్ణాయక బగ్ను దాచుతుంది.
నిజంగా ఏమి ఎంచుకోబడిందో నిర్ధారించండి
ఏ సవరణ తర్వాతైనా కనెక్షన్ వచ్చిందని నమ్మడం బదులు చర్చించిన ఫలితాన్ని చదవండి. ధృవీకరణ తొలగించినందుకు విజయవంతమైన కనెక్షన్ మీరు నివారించాలనుకున్న ఫలితమే. కింది రెండు ఆదేశాలు TLS ముందున్న ఎండ్పాయింట్కు ఎంచుకున్న వెర్షన్ మరియు సైఫర్, అలాగే OpenVPN సర్వర్ లాగ్ నుండి నియంత్రణ ఛానెల్ లైన్ను చూపుతాయి.
openssl s_client -connect 198.51.100.30:443 -servername vpn.example.net -brief </dev/null
grep -iE 'Control Channel|Data Channel' /var/log/openvpn.log | tail -5ఫలితాన్ని మీరు ఉద్దేశించిన కాన్ఫిగరేషన్తో పోల్చండి, ఇప్పుడు కనెక్ట్ అవుతున్నదానితో కాదు. ఎంచుకున్న వెర్షన్ అనుమతించిన కనిష్ఠం కంటే పాతదైతే, ప్రొఫైల్ లేదా ఫాల్బ్యాక్ జాబితా చూడాల్సిన చోటు, సమాధానం ఆ జాబితాను సరిదిద్దడం, దాడిని ప్రకటించి చుట్టూ ఉన్నదంతా మళ్లీ నిర్మించడం కాదు.