𝗖𝗼𝗻𝗰𝘂𝗿𝗿𝗲𝗻𝘁 𝗟𝗼𝗴𝗶𝗻 𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆
అపరిమితమైన లాగిన్లు తీవ్రమైన బిజినెస్ లాజిక్ లోపాలను దాచగలవు.
ఒక వినియోగదారు ల్యాప్టాప్లో లాగిన్ అవుతారు. కొన్ని సెకన్ల తర్వాత, అదే ఖాతా వేరొక బ్రౌజర్లో లాగిన్ అవుతుంది. ఆ తర్వాత ఒక మొబైల్ పరికరం, ఆపై ఒక API క్లయింట్. అంతా సవ్యంగానే జరుగుతుంది.
చాలా యాప్లు బహుళ పరికరాలను (multiple devices) సపోర్ట్ చేస్తాయి కాబట్టి ఇది బాగున్నట్లు అనిపిస్తుంది. కానీ మీరు ఇలా ప్రశ్నించుకోవాలి: ప్రతి అప్లికేషన్ అపరిమితమైన సెషన్లను అనుమతించాలా?
కొన్ని వ్యవస్థలలో, బహుళ సెషన్లు ఒక ఫీచర్గా ఉంటాయి. మరికొన్నింటిలో, ఇది దాగి ఉండాలనుకునే అటాకర్లు ఉపయోగించుకునే ఒక లోపం. ఇది ఒక బిజినెస్ లాజిక్ వల్నరబిలిటీ (business logic vulnerability). కోడ్ డిజైన్ చేసిన విధంగానే పనిచేస్తుంది, కానీ ఆ డిజైన్ స్వయంగా బలహీనంగా ఉంటుంది.
తేడా ఏమిటంటే: • సాంప్రదాయ బగ్లు కోడింగ్ తప్పులను వాడుకుంటాయి. • బిజినెస్ లాజిక్ బగ్లు డిజైన్ నిర్ణయాలను వాడుకుంటాయి.
ఒక మూవీ స్ట్రీమింగ్ సర్వీస్ను ఊహించుకోండి. ఒకే సబ్స్క్రిప్షన్ పది మందికి ఒకేసారి చూడటానికి అనుమతిస్తే, లాగిన్ సిస్టమ్ సరిగ్గా పనిచేస్తున్నట్లే, కానీ బిజినెస్ రూల్ విఫలమవుతుంది.
ఇది బ్యాంకింగ్, అడ్మిన్ ప్యానెల్స్ మరియు SaaS ఉత్పత్తులకు వర్తిస్తుంది.
దీనిని ఎలా పరీక్షించాలి:
- బ్రౌజర్ A ద్వారా లాగిన్ అయ్యి దానిని యాక్టివ్గా ఉంచండి.
- బ్రౌజర్ Bలో ఒక ఇంకోగ్నిటో (incognito) విండోను తెరవండి.
- అదే క్రెడెన్షియల్స్తో లాగిన్ అవ్వండి.
- మొదటి సెషన్ ఇంకా పనిచేస్తుందో లేదో తనిఖీ చేయండి.
- రెండింటిలోనూ మీరు సెన్సిటివ్ చర్యలను (sensitive actions) చేయగలరో లేదో చూడండి.
అధిక భద్రత కలిగిన యాప్లు తరచుగా ఈ నియమాలను అమలు చేస్తాయి:
- ప్రతి ఖాతాకు ఒకే ఒక యాక్టివ్ సెషన్.
- కొత్త లాగిన్ జరిగినప్పుడు పాత సెషన్లను లాగ్ అవుట్ చేయడం.
- పరికరాలను నిర్వహించడానికి నియంత్రణలు (controls).
- కొత్త లాగిన్ల కోసం అలర్ట్లు.
ఒకవేళ అటాకర్ క్రెడెన్షియల్స్ను దొంగిలిస్తే, మీరు అపరిమిత సెషన్లను అనుమతిస్తే వారు ఎప్పటికీ లాగిన్ అయి ఉండగలరు. అసలు వినియోగదారు యాక్టివ్గా ఉన్నంత సేపు వారు కూడా యాక్టివ్గా ఉంటారు. ఇద్దరిలో ఎవరికీ ఆ చొరబాటుదారు (intruder) గురించి తెలియదు.
సందర్భమే అంతా. ఎక్కువ సెషన్లు అవసరమయ్యే యాప్లు:
- మెసేజింగ్ యాప్లు.
- సోషల్ మీడియా.
- ఈమెయిల్ సర్వీసులు.
కఠినమైన నియంత్రణ అవసరమయ్యే యాప్లు:
- బ్యాంకింగ్ వ్యవస్థలు.
- అడ్మిన్ డ్యాష్బోర్డ్లు.
- హెల్త్కేర్ ప్లాట్ఫారమ్లు.
దీనిని ఎలా పరిష్కరించాలి:
- యాక్టివ్ సెషన్ ఐడిలను (session IDs) డేటాబేస్లో నిల్వ చేయండి.
- కొత్త లాగిన్ జరిగినప్పుడు, పాత సెషన్ను ముగించండి (kill).
- వినియోగదారులు యాక్టివ్గా ఉన్న పరికరాలు మరియు లొకేషన్లను చూసేలా చేయండి.
- "Log out from all devices" బటన్ను జోడించండి.
- కొత్త లాగిన్ల కోసం ఈమెయిల్ లేదా SMS అలర్ట్లను పంపండి.
కేవలం SQL injection వంటి కోడ్ బగ్ల కోసం మాత్రమే చూడకండి. మీ యాప్ చేసే పనికి మరియు మీ వ్యాపార అవసరాలకు మధ్య ఉన్న అంతరాలను (gaps) గమనించండి.
ఈరోజే మీ సెషన్ పాలసీని సమీక్షించండి. మీ అతిపెద్ద ప్రమాదం విచ్ఛిన్నమైన కోడ్ కాకపోవచ్చు, అది విచ్ఛిన్నమైన లాజిక్ కావచ్చు.