దాచడం అంటే భద్రపరచడం కాదు
ఇంజనీర్ కాని ఒక ఎగ్జిక్యూటివ్ ఇటీవల రెండు రోజుల్లో ఒక B2B SaaSని రూపొందించారు. వారు ప్రతిదీ రాయడానికి AIని ఉపయోగించారు. ఆ ఉత్పత్తి పనిచేస్తుంది. కస్టమర్లు దానిని ఉపయోగిస్తున్నారు. ఫీచర్లు వేగంగా అందుబాటులోకి వస్తున్నాయి.
ఆ తర్వాత ఆ ఇన్ఫ్రాస్ట్రక్చర్ను నేను చూసుకోవాల్సి వచ్చింది. ప్రొడక్షన్లో ఇప్పటికే నడుస్తున్న కోడ్లోని రిస్క్లను కనుగొనడమే నా పని.
నాకు ఒక పెద్ద సెక్యూరిటీ లోపం కనిపించింది. API కీ నేరుగా సోర్స్ కోడ్లోనే హార్డ్కోడ్ చేయబడింది.
ఇది ప్రమాదకరమని నేను ఎగ్జిక్యూటివ్కు చెప్పాను. వారు వెంటనే దానిని సరిచేశారు.
కీ కోడ్ నుండి తొలగించబడింది, కానీ ఇప్పుడు సెటప్ స్టెప్గా README ఫైల్లో ఉంది. ఆ సీక్రెట్ కోడ్ నుండి డాక్యుమెంటేషన్కు మారింది. అది ఇంకా రిపోజిటరీలోనే ఉంది. నిజానికి ఇప్పుడు దానిని కనుగొనడం మరింత సులభమైంది.
నేను సమస్యను మళ్ళీ వివరించాను. ఈసారి, వారు కీని డేటాబేస్కు మార్చారు.
అది పురోగతిలా అనిపించింది. కీ రిపోజిటరీ నుండి బయటకు వచ్చింది. కానీ నేను డేటాబేస్ను తనిఖీ చేసినప్పుడు, కీ అక్కడ ప్లెయిన్ టెక్స్ట్గా (plaintext) ఉంది. ఎటువంటి ఎన్క్రిప్షన్ లేదు. డేటాబేస్ యాక్సెస్ ఉన్న ఎవరైనా దానిని చదవగలరు.
కీ మూడుసార్లు మారింది:
- సోర్స్ కోడ్ నుండి
- README కి
- డేటాబేస్ కి
స్థానం మారింది కానీ భద్రత మెరుగుపడలేదు. వారు సీక్రెట్ను దాస్తున్నారు (hiding), కానీ దానిని రహస్యంగా ఉంచడం (concealing) లేదు.
దాచడం (Hiding) అంటే ఏదైనా ఒక వస్తువు కంటికి కనిపించకుండా పెట్టడం. రహస్యంగా ఉంచడం (Concealing) అంటే దానిని దాడి చేసే వ్యక్తికి (attacker) ఉపయోగపడకుండా చేయడం.
సాఫ్ట్వేర్లో, మీరు ఈ నియమాలను పాటించాలి:
- మీ రిపోజిటరీలో ఎప్పుడూ సీక్రెట్లను ఉంచకండి. ఇందులో కోడ్, README ఫైల్లు లేదా కాన్ఫిగ్ ఫైల్లు కూడా ఉంటాయి.
- ఎన్విరాన్మెంట్ వేరియబుల్స్ లేదా సీక్రెట్ మేనేజర్ ఉపయోగించి రన్టైమ్ వెలుపల నుండి విలువలను ఇంజెక్ట్ చేయండి.
- మీరు డేటాబేస్ను ఉపయోగిస్తే, ఆ విలువను ఎన్క్రిప్ట్ చేయండి. ప్లెయిన్ టెక్స్ట్ అనేది ఒక రిస్క్ (liability).
- ప్లెయిన్ టెక్స్ట్లో ఎప్పుడైనా బయటపడిన ఏ కీనైనా రోటేట్ (rotate) చేయండి.
ఎగ్జిక్యూటివ్ అందుబాటులో ఉన్న అత్యంత అధునాతన AI మోడల్లను ఉపయోగించినప్పటికీ ఇది జరిగింది.
AI మీకు పనిచేసే కోడ్ను ఇవ్వడానికి రూపొందించబడింది. మీరు లేదంటే చెప్పకపోతే, అది ప్లెయిన్ టెక్స్ట్ సీక్రెట్ను కలిగి ఉన్న కోడ్ను సంతోషంగా రాస్తుంది. AI సామర్థ్యాన్ని (capability) అందిస్తుంది, కానీ అది ఆటోమేటిక్గా భద్రతను (safety) అందించదు.
దేనిని రక్షించాలో మీకు తెలిసినప్పుడు మాత్రమే తెలివితేటలు (Intelligence) భద్రతగా మారుతాయి.
మీరు ఒక సెక్యూరిటీ హోల్ను కేవలం దాని స్థానాన్ని మార్చడం ద్వారా సరిచేసేశారని అనుకుంటే, ఆపండి. మిమ్మల్ని మీరు ఇలా ప్రశ్నించుకోండి:
- అది ఇంకా రిపోజిటరీలోనే ఉందా?
- యాక్సెస్ అవసరమైన వ్యక్తులకు మాత్రమే పరిమితం చేయబడిందా?
- డేటా ఎన్క్రిప్ట్ చేయబడిందా?
సీక్రెట్ అనేది కేవలం కంటికి కనిపించని చోట మాత్రమే కాదు, సరైన చోట ఉండాలి.
Source: https://dev.to/jun_uen0/playing-hide-and-seek-with-an-api-key-our-cfos-claude-code-kept-hiding-job
Optional learning community: https://t.me/GyaanSetuAi