తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడిందిTL; DR. ఈ ఆర్టికల్‌లో, ఐదు ప్రముఖ Linux డిస్ట్రిబ్యూషన్‌లలో పెట్టె వెలుపల పని చేసే గట్టిపడే పథకాలను మేము విశ్లేషిస్తాము. ప్రతిదానికీ, మేము డిఫాల్ట్ కెర్నల్ కాన్ఫిగరేషన్‌ని తీసుకున్నాము, అన్ని ప్యాకేజీలను లోడ్ చేసాము మరియు జోడించిన బైనరీలలోని భద్రతా స్కీమ్‌లను విశ్లేషించాము. పరిగణించబడిన పంపిణీలు OpenSUSE 12.4, Debian 9, CentOS, RHEL 6.10 మరియు 7, అలాగే ఉబుంటు 14.04, 12.04 మరియు 18.04 LTS.

స్టాకింగ్ కానరీలు మరియు పొజిషన్-ఇండిపెండెంట్ కోడ్ వంటి ప్రాథమిక స్కీమ్‌లను కూడా అందరూ ఇంకా ఆమోదించలేదని ఫలితాలు నిర్ధారిస్తాయి. ప్రచురణ తర్వాత జనవరిలో వెలుగులోకి వచ్చిన స్టాక్ క్లాష్ వంటి దుర్బలత్వాల నుండి రక్షించే విషయానికి వస్తే కంపైలర్‌ల పరిస్థితి మరింత దారుణంగా ఉంది. systemd దుర్బలత్వాల గురించిన సమాచారం. కానీ ప్రతిదీ చాలా నిరాశాజనకంగా లేదు. గణనీయమైన సంఖ్యలో బైనరీలు ప్రాథమిక రక్షణ పద్ధతులను అమలు చేస్తాయి మరియు వాటి సంఖ్య సంస్కరణ నుండి సంస్కరణకు పెరుగుతుంది.

OS మరియు అప్లికేషన్ స్థాయిలలో Ubuntu 18.04లో అత్యధిక సంఖ్యలో రక్షణ పద్ధతులు అమలు చేయబడతాయని సమీక్షలో తేలింది, దాని తర్వాత డెబియన్ 9. మరోవైపు, OpenSUSE 12.4, CentOS 7 మరియు RHEL 7 కూడా ప్రాథమిక రక్షణ పథకాలను అమలు చేస్తాయి మరియు ఘర్షణ రక్షణను పేర్చాయి. చాలా దట్టమైన డిఫాల్ట్ ప్యాకేజీలతో మరింత విస్తృతంగా ఉపయోగించబడుతుంది.

పరిచయం

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

ఇక్కడే ప్రోగ్రామ్‌లను రక్షించే లేదా గట్టిపడే పద్ధతులు అమలులోకి వస్తాయి. మేము కొన్ని రకాల లోపాలను నిరోధించలేము, కానీ మేము దాడి చేసేవారి జీవితాన్ని మరింత కష్టతరం చేయవచ్చు మరియు నిరోధించడం లేదా నిరోధించడం ద్వారా సమస్యను పాక్షికంగా పరిష్కరించవచ్చు ఆపరేటింగ్ ఈ లోపాలు. ఇటువంటి రక్షణ అన్ని ఆధునిక ఆపరేటింగ్ సిస్టమ్‌లలో ఉపయోగించబడుతుంది, అయితే పద్ధతులు సంక్లిష్టత, సామర్థ్యం మరియు పనితీరులో చాలా భిన్నంగా ఉంటాయి: స్టాక్ కానరీల నుండి మరియు ASLR పూర్తి రక్షణకు CFI и ROP. ఈ కథనంలో, డిఫాల్ట్ కాన్ఫిగరేషన్‌లో అత్యంత ప్రజాదరణ పొందిన Linux పంపిణీలలో ఏ రక్షణ పద్ధతులు ఉపయోగించబడుతున్నాయో మేము పరిశీలిస్తాము మరియు ప్రతి పంపిణీ యొక్క ప్యాకేజీ నిర్వహణ వ్యవస్థల ద్వారా పంపిణీ చేయబడిన బైనరీల లక్షణాలను కూడా పరిశీలిస్తాము.

CVE మరియు భద్రత

"ది మోస్ట్ వల్నరబుల్ అప్లికేషన్స్ ఆఫ్ ది ఇయర్" లేదా "మోస్ట్ వల్నరబుల్ ఆపరేటింగ్ సిస్టమ్స్" వంటి శీర్షికలతో కూడిన కథనాలను మనమందరం చూశాము. సాధారణంగా వారు ఇలాంటి దుర్బలత్వాల గురించిన మొత్తం రికార్డుల సంఖ్యపై గణాంకాలను అందిస్తారు CVE (సాధారణ దుర్బలత్వం మరియు ఎక్స్‌పోజర్‌లు), నుండి పొందిన నేషనల్ వల్నరబిలిటీ డేటాబేస్ (NVD) от NIST మరియు ఇతర వనరులు. తదనంతరం, ఈ అప్లికేషన్‌లు లేదా OS CVEల సంఖ్య ఆధారంగా ర్యాంక్ చేయబడతాయి. దురదృష్టవశాత్తూ, సమస్యలను ట్రాక్ చేయడానికి మరియు విక్రేతలు మరియు వినియోగదారులకు తెలియజేయడానికి CVEలు చాలా ఉపయోగకరంగా ఉన్నప్పటికీ, సాఫ్ట్‌వేర్ యొక్క వాస్తవ భద్రత గురించి వారు చాలా తక్కువగా చెప్పారు.

ఉదాహరణగా, Linux కెర్నల్ మరియు Ubuntu, Debian, Red Hat Enterprise Linux మరియు OpenSUSE అనే ఐదు అత్యంత ప్రజాదరణ పొందిన సర్వర్ పంపిణీల కోసం గత నాలుగు సంవత్సరాలలో మొత్తం CVEల సంఖ్యను పరిగణించండి.

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది
అంజీర్. 1

ఈ గ్రాఫ్ మనకు ఏమి చెబుతుంది? అధిక సంఖ్యలో CVEలు అంటే ఒక పంపిణీ మరొకదాని కంటే ఎక్కువ హాని కలిగిస్తుందా? జవాబు లేదు. ఉదాహరణకు, OpenSUSE లేదా RedHat Linuxతో పోలిస్తే డెబియన్ బలమైన భద్రతా విధానాలను కలిగి ఉందని, ఇంకా డెబియన్‌లో మరిన్ని CVEలు ఉన్నాయని మీరు ఈ కథనంలో చూస్తారు. అయినప్పటికీ, అవి తప్పనిసరిగా బలహీనమైన భద్రతను కలిగి ఉండవు: CVE యొక్క ఉనికి కూడా ఒక దుర్బలత్వాన్ని సూచించదు దోపిడీ చేశారు. తీవ్రత స్కోర్‌లు ఎలా అనేదానికి సూచనను అందిస్తాయి బహుశా దుర్బలత్వం యొక్క దోపిడీ, కానీ అంతిమంగా దోపిడీ అనేది ప్రభావిత వ్యవస్థలలో ఉన్న రక్షణలు మరియు దాడి చేసేవారి వనరులు మరియు సామర్థ్యాలపై ఎక్కువగా ఆధారపడి ఉంటుంది. అంతేకాకుండా, CVE నివేదికలు లేకపోవడం ఇతరుల గురించి ఏమీ చెప్పదు నమోదు చేయబడలేదు లేదా తెలియదు దుర్బలత్వాలు. CVEలో వ్యత్యాసం టెస్టింగ్‌కు కేటాయించిన వనరులు లేదా వినియోగదారు బేస్ పరిమాణంతో సహా సాఫ్ట్‌వేర్ నాణ్యత కాకుండా ఇతర కారణాల వల్ల కావచ్చు. మా ఉదాహరణలో, డెబియన్ యొక్క అధిక సంఖ్యలో CVEలు డెబియన్ మరిన్ని సాఫ్ట్‌వేర్ ప్యాకేజీలను రవాణా చేస్తుందని సూచించవచ్చు.

వాస్తవానికి, CVE వ్యవస్థ మీకు తగిన రక్షణలను సృష్టించడానికి అనుమతించే ఉపయోగకరమైన సమాచారాన్ని అందిస్తుంది. ప్రోగ్రామ్ వైఫల్యానికి గల కారణాలను మనం ఎంత బాగా అర్థం చేసుకుంటే, దోపిడీకి సంబంధించిన సాధ్యమైన పద్ధతులను గుర్తించడం మరియు తగిన యంత్రాంగాలను అభివృద్ధి చేయడం సులభం గుర్తింపు మరియు ప్రతిస్పందన. అంజీర్లో. 2 గత నాలుగు సంవత్సరాలలో అన్ని పంపిణీల కోసం దుర్బలత్వాల వర్గాలను చూపుతుంది (మూలం) చాలా CVEలు కింది వర్గాలలోకి వస్తాయి: సేవ తిరస్కరణ (DoS), కోడ్ అమలు, ఓవర్‌ఫ్లో, మెమరీ కరప్షన్, ఇన్ఫర్మేషన్ లీకేజ్ (ఎక్స్‌ఫిల్ట్రేషన్) మరియు ప్రివిలేజ్ ఎస్కలేషన్. అనేక CVEలు వివిధ వర్గాలలో అనేకసార్లు లెక్కించబడినప్పటికీ, సాధారణంగా అదే సమస్యలు సంవత్సరానికి కొనసాగుతూనే ఉంటాయి. వ్యాసం యొక్క తదుపరి భాగంలో, ఈ దుర్బలత్వాల దోపిడీని నిరోధించడానికి వివిధ రక్షణ పథకాల ఉపయోగాన్ని మేము మూల్యాంకనం చేస్తాము.

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది
అంజీర్. 2

పనులు

ఈ వ్యాసంలో మేము ఈ క్రింది ప్రశ్నలకు సమాధానం ఇవ్వాలనుకుంటున్నాము:

  • వివిధ Linux పంపిణీల భద్రత ఏమిటి? కెర్నల్ మరియు యూజర్ స్పేస్ అప్లికేషన్‌లలో ఏ రక్షణ విధానాలు ఉన్నాయి?
  • పంపిణీలలో కాలక్రమేణా భద్రతా యంత్రాంగాల స్వీకరణ ఎలా మారింది?
  • ప్రతి పంపిణీకి ప్యాకేజీలు మరియు లైబ్రరీల సగటు డిపెండెన్సీలు ఏమిటి?
  • ప్రతి బైనరీకి ఏ రక్షణలు అమలు చేయబడతాయి?

పంపిణీల ఎంపిక

డిస్ట్రిబ్యూషన్ ఇన్‌స్టాలేషన్‌లపై ఖచ్చితమైన గణాంకాలను కనుగొనడం కష్టమని తేలింది, ఎందుకంటే చాలా సందర్భాలలో డౌన్‌లోడ్‌ల సంఖ్య అసలు ఇన్‌స్టాలేషన్‌ల సంఖ్యను సూచించదు. అయినప్పటికీ, Unix వేరియంట్‌లు సర్వర్ సిస్టమ్‌లలో ఎక్కువ భాగం (వెబ్ సర్వర్‌లలో 69,2%, ద్వారా గణాంకాలు W3techs మరియు ఇతర వనరులు), మరియు వారి వాటా నిరంతరం పెరుగుతోంది. అందువల్ల, మా పరిశోధన కోసం మేము ప్లాట్‌ఫారమ్‌లో పెట్టె వెలుపల అందుబాటులో ఉన్న పంపిణీలపై దృష్టి సారించాము Google మేఘం. ముఖ్యంగా, మేము ఈ క్రింది OSని ఎంచుకున్నాము:

పంపిణీ/వెర్షన్
కోర్
నిర్మించు

OpenSUSE 12.4
4.12.14-95.3-డిఫాల్ట్
#1 SMP బుధ డిసెంబర్ 5 06:00:48 UTC 2018 (63a8d29)

డెబియన్ 9 (సాగదీయడం)
4.9.0-8-amd64
#1 SMP డెబియన్ 4.9.130-2 (2018-10-27)

CentOS 6.10
2.6.32-754.10.1.el6.x86_64
#1 SMP మంగళవారం జనవరి 15 17:07:28 UTC 2019

CentOS 7
3.10.0-957.5.1.el7.x86_64
#1 SMP శుక్ర ఫిబ్రవరి 1 14:54:57 UTC 2019

Red Hat Enterprise Linux సర్వర్ 6.10 (శాంటియాగో)
2.6.32-754.9.1.el6.x86_64
#1 SMP బుధవారం నవంబర్ 21 15:08:21 EST 2018

Red Hat Enterprise Linux సర్వర్ 7.6 (Maipo)
3.10.0-957.1.3.el7.x86_64
#1 SMP థు నవంబర్ 15 17:36:42 UTC 2018

ఉబుంటు 14.04 (ట్రస్టీ తహర్)
4.4.0–140-జనరిక్

#166~14.04.1-ఉబుంటు SMP శని నవంబర్ 17 01:52:43 UTC 20…

ఉబుంటు 16.04 (Xenial Xerus)
4.15.0–1026-gcp
#27~16.04.1-Ubuntu SMP శుక్రవారం 7 09:59:47 UTC 2018

ఉబుంటు 18.04 (బయోనిక్ బీవర్)
4.15.0–1026-gcp
#27-Ubuntu SMP గురు డిసెంబర్ 6 18:27:01 UTC 2018

పట్టిక 11

Анализ

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

కెర్నల్ కాన్ఫిగరేషన్ విశ్లేషణ

మేము ఆధారంగా విశ్లేషణ స్క్రిప్ట్‌ని వర్తింపజేసాము ఉచిత kconfig చెకర్. పేరు పెట్టబడిన పంపిణీల యొక్క వెలుపలి రక్షణ పారామితులను చూద్దాం మరియు వాటిని జాబితాతో సరిపోల్చండి కోర్ సెల్ఫ్ డిఫెన్స్ ప్రాజెక్ట్ (KSPP). ప్రతి కాన్ఫిగరేషన్ ఎంపిక కోసం, టేబుల్ 2 కావలసిన సెట్టింగ్‌ను వివరిస్తుంది: చెక్‌బాక్స్ అనేది KSSP సిఫార్సులకు అనుగుణంగా ఉండే పంపిణీల కోసం (నిబంధనల వివరణ కోసం క్రింది వాటిని చూడండి). ఇక్కడ; భవిష్యత్ కథనాలలో ఈ భద్రతా పద్ధతులు ఎన్ని వచ్చాయి మరియు అవి లేనప్పుడు సిస్టమ్‌ను ఎలా హ్యాక్ చేయాలో వివరిస్తాము).

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది

సాధారణంగా, కొత్త కెర్నల్‌లు పెట్టె వెలుపల కఠినమైన సెట్టింగ్‌లను కలిగి ఉంటాయి. ఉదాహరణకు, 6.10 కెర్నల్‌లోని CentOS 6.10 మరియు RHEL 2.6.32 వంటి కొత్త కెర్నల్‌లలో అమలు చేయబడిన చాలా క్లిష్టమైన ఫీచర్‌లు లేవు. SMAP, కఠినమైన RWX అనుమతులు, చిరునామా రాండమైజేషన్ లేదా copy2usr రక్షణ. పట్టికలోని అనేక కాన్ఫిగరేషన్ ఎంపికలు కెర్నల్ యొక్క పాత సంస్కరణల్లో అందుబాటులో లేవని మరియు వాస్తవానికి వర్తించవని గమనించాలి - ఇది ఇప్పటికీ సరైన రక్షణ లేకపోవడంతో పట్టికలో సూచించబడింది. అదే విధంగా, ఇచ్చిన సంస్కరణలో కాన్ఫిగరేషన్ ఎంపిక లేనట్లయితే మరియు భద్రతకు ఆ ఎంపికను నిలిపివేయవలసి వస్తే, ఇది సహేతుకమైన కాన్ఫిగరేషన్‌గా పరిగణించబడుతుంది.

ఫలితాలను వివరించేటప్పుడు పరిగణించవలసిన మరో అంశం: దాడి ఉపరితలాన్ని పెంచే కొన్ని కెర్నల్ కాన్ఫిగరేషన్‌లు భద్రత కోసం కూడా ఉపయోగించవచ్చు. ఇటువంటి ఉదాహరణలలో uprobes మరియు kprobes, కెర్నల్ మాడ్యూల్స్ మరియు BPF/eBPF ఉన్నాయి. మా సిఫార్సు ఏమిటంటే, నిజమైన రక్షణను అందించడానికి పై మెకానిజమ్‌లను ఉపయోగించాలనేది మా సిఫార్సు, ఎందుకంటే అవి ఉపయోగించడానికి అల్పమైనవి కావు మరియు హానికరమైన నటీనటులు ఇప్పటికే వ్యవస్థలో స్థిరపడినట్లు వారి దోపిడీ ఊహిస్తుంది. కానీ ఈ ఎంపికలు ప్రారంభించబడితే, సిస్టమ్ అడ్మినిస్ట్రేటర్ దుర్వినియోగం కోసం చురుకుగా పర్యవేక్షించాలి.

టేబుల్ 2లోని ఎంట్రీలను మరింతగా పరిశీలిస్తే, సమాచార లీకేజీ మరియు స్టాక్/హీప్ ఓవర్‌ఫ్లోస్ వంటి దుర్బలత్వాల దోపిడీకి వ్యతిరేకంగా రక్షించడానికి ఆధునిక కెర్నలు అనేక ఎంపికలను అందించడాన్ని మేము చూస్తాము. అయినప్పటికీ, అత్యంత ఇటీవలి జనాదరణ పొందిన పంపిణీలు కూడా ఇంకా క్లిష్టమైన రక్షణను అమలు చేయలేదని మేము గమనించాము (ఉదాహరణకు, ప్యాచ్‌లతో భద్రత) లేదా కోడ్ పునర్వినియోగ దాడుల నుండి ఆధునిక రక్షణ (ఉదా. కోడ్ కోసం R^X వంటి పథకాలతో రాండమైజేషన్ కలయిక) విషయాలను మరింత దిగజార్చడానికి, ఈ అధునాతన రక్షణలు కూడా పూర్తి స్థాయి దాడుల నుండి రక్షించవు. అందువల్ల, రన్‌టైమ్ దోపిడీ గుర్తింపు మరియు నివారణను అందించే పరిష్కారాలతో స్మార్ట్ కాన్ఫిగరేషన్‌లను పూర్తి చేయడం సిస్టమ్ నిర్వాహకులకు కీలకం.

అప్లికేషన్ విశ్లేషణ

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

పంపిణీలు

మొత్తంగా, మేము అన్ని పంపిణీల కోసం 361 ప్యాకేజీలను డౌన్‌లోడ్ చేసాము, డిఫాల్ట్ మిర్రర్‌ల నుండి ప్యాకేజీలను మాత్రమే సంగ్రహించాము. మూలాలు, ఫాంట్‌లు మొదలైన ELF ఎక్జిక్యూటబుల్స్ లేని ప్యాకేజీలను మేము విస్మరించాము. ఫిల్టర్ చేసిన తర్వాత, 556 ప్యాకేజీలు మిగిలి ఉన్నాయి, ఇందులో మొత్తం 129 బైనరీలు ఉన్నాయి. పంపిణీలలో ప్యాకేజీలు మరియు ఫైల్‌ల పంపిణీ అంజీర్‌లో చూపబడింది. 569.

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది
అంజీర్. 3

పంపిణీ ఎంత ఆధునికంగా ఉంటే, అది లాజికల్‌గా ఉండే ప్యాకేజీలు మరియు బైనరీలను కలిగి ఉందని మీరు గమనించవచ్చు. అయినప్పటికీ, Ubuntu మరియు Debian ప్యాకేజీలలో CentOS, SUSE మరియు RHEL కంటే చాలా ఎక్కువ బైనరీలు (ఎక్జిక్యూటబుల్స్ మరియు డైనమిక్ మాడ్యూల్స్ మరియు లైబ్రరీలు రెండూ) ఉన్నాయి, ఇది ఉబుంటు మరియు డెబియన్ యొక్క దాడి ఉపరితలంపై ప్రభావవంతంగా ప్రభావితం చేస్తుంది (సంఖ్యలు అన్ని వెర్షన్‌ల యొక్క అన్ని బైనరీలను ప్రతిబింబిస్తాయని గమనించాలి. ప్యాకేజీ, అంటే, కొన్ని ఫైల్‌లు చాలాసార్లు విశ్లేషించబడతాయి). మీరు ప్యాకేజీల మధ్య డిపెండెన్సీలను పరిగణనలోకి తీసుకున్నప్పుడు ఇది చాలా ముఖ్యం. అందువల్ల, ఒకే ప్యాకేజీ బైనరీలోని దుర్బలత్వం పర్యావరణ వ్యవస్థలోని అనేక భాగాలను ప్రభావితం చేస్తుంది, హాని కలిగించే లైబ్రరీ దానిని దిగుమతి చేసే అన్ని బైనరీలను ప్రభావితం చేయగలదు. ప్రారంభ బిందువుగా, వివిధ ఆపరేటింగ్ సిస్టమ్‌లలోని ప్యాకేజీల మధ్య డిపెండెన్సీల సంఖ్య పంపిణీని చూద్దాం:

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది
అంజీర్. 4

దాదాపు అన్ని పంపిణీలలో, 60% ప్యాకేజీలు కనీసం 10 డిపెండెన్సీలను కలిగి ఉంటాయి. అదనంగా, కొన్ని ప్యాకేజీలు గణనీయంగా పెద్ద సంఖ్యలో డిపెండెన్సీలను కలిగి ఉంటాయి (100 కంటే ఎక్కువ). రివర్స్ ప్యాకేజీ డిపెండెన్సీలకు కూడా ఇది వర్తిస్తుంది: ఊహించినట్లుగా, కొన్ని ప్యాకేజీలు పంపిణీలో అనేక ఇతర ప్యాకేజీలచే ఉపయోగించబడతాయి, కాబట్టి ఎంపిక చేసిన కొన్నింటిలో దుర్బలత్వాలు ఎక్కువగా ఉంటాయి. ఉదాహరణగా, కింది పట్టిక SLES, Centos 20, Debian 7 మరియు Ubuntu 9లో గరిష్ట సంఖ్యలో రివర్స్ డిపెండెన్సీలతో 18.04 ప్యాకేజీలను జాబితా చేస్తుంది (ప్రతి సెల్ ప్యాకేజీని మరియు రివర్స్ డిపెండెన్సీల సంఖ్యను సూచిస్తుంది).

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది
పట్టిక 11

ఆసక్తికరమైన వాస్తవం. విశ్లేషించబడిన అన్ని OSలు x86_64 ఆర్కిటెక్చర్ కోసం నిర్మించబడినప్పటికీ, మరియు చాలా ప్యాకేజీలు x86_64 మరియు x86గా నిర్వచించబడిన నిర్మాణాన్ని కలిగి ఉన్నప్పటికీ, ప్యాకేజీలు తరచుగా మూర్తి 5లో చూపిన విధంగా ఇతర నిర్మాణాల కోసం బైనరీలను కలిగి ఉంటాయి. XNUMX.

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది
అంజీర్. 5

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

బైనరీ ఫైల్ రక్షణ గణాంకాలు

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

$ hardening-check $(which docker)
/usr/bin/docker:
 Position Independent Executable: yes
 Stack protected: yes
 Fortify Source functions: no, only unprotected functions found!
 Read-only relocations: yes
 Immediate binding: yes

స్క్రిప్ట్ ఐదు తనిఖీ చేస్తుంది రక్షణ విధులు:

  • పొజిషన్ ఇండిపెండెంట్ ఎక్జిక్యూటబుల్ (PIE): కెర్నల్‌లో ASLR ప్రారంభించబడితే, యాదృచ్ఛికతను సాధించడానికి ప్రోగ్రామ్ యొక్క టెక్స్ట్ విభాగాన్ని మెమరీలో తరలించవచ్చో లేదో సూచిస్తుంది.
  • స్టాక్ ప్రొటెక్టెడ్: స్టాక్ కానరీలు స్టాక్ తాకిడి దాడుల నుండి రక్షించడానికి ప్రారంభించబడిందా.
  • ఫోర్టిఫై సోర్స్: అసురక్షిత ఫంక్షన్‌లు (ఉదాహరణకు, strcpy) వాటి మరింత సురక్షితమైన ప్రతిరూపాలతో భర్తీ చేయబడిందా మరియు రన్‌టైమ్‌లో తనిఖీ చేయబడిన కాల్‌లు వాటి ఎంపిక చేయని ప్రతిరూపాలతో భర్తీ చేయబడతాయి (ఉదాహరణకు, __memcpy_chkకి బదులుగా memcpy).
  • రీలోకేషన్ రీలోకేషన్‌లు (RELRO): రీలొకేషన్ టేబుల్ ఎంట్రీలు రీడ్-ఓన్లీ అని మార్క్ చేయబడి ఉంటే, అవి ఎగ్జిక్యూషన్ ప్రారంభించడానికి ముందు ట్రిగ్గర్ చేయబడితే.
  • తక్షణ బైండింగ్: ప్రోగ్రామ్ అమలు ప్రారంభం కావడానికి ముందు రన్‌టైమ్ లింకర్ అన్ని కదలికలను అనుమతిస్తుందా (ఇది పూర్తి RELROకి సమానం).

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

సందేహాస్పద పంపిణీలలో ఎన్ని బైనరీ ఫైల్‌లు ఈ మరియు ఇతర మూడు పద్ధతుల ద్వారా రక్షించబడుతున్నాయో అధ్యయనం చేయాలనుకుంటున్నాము:

  • అమలు చేయలేని బిట్ (NX) ఎక్జిక్యూటబుల్ చేయకూడని ఏ ప్రాంతంలోనైనా అమలును నిరోధిస్తుంది, అంటే స్టాక్ హీప్ మొదలైనవి.
  • RPATH/RUNPATH సరిపోలే లైబ్రరీలను కనుగొనడానికి డైనమిక్ లోడర్ ఉపయోగించే ఎగ్జిక్యూషన్ పాత్‌ను సూచిస్తుంది. మొదటిది తప్పనిసరిగా ఏదైనా ఆధునిక వ్యవస్థ కోసం: దాని లేకపోవడం దాడి చేసేవారు పేలోడ్‌ను మెమరీలోకి ఏకపక్షంగా వ్రాసి, దానిని యధాతథంగా అమలు చేయడానికి అనుమతిస్తుంది. రెండవది, అనేక సమస్యలకు దారితీసే నమ్మదగని కోడ్‌ను పరిచయం చేయడంలో తప్పు అమలు మార్గం కాన్ఫిగరేషన్‌లు సహాయపడతాయి (ఉదా. ప్రత్యేక హక్కు పెరుగుదలమరియు ఇతర సమస్యలు).
  • స్టాక్ తాకిడి రక్షణ అనేది మెమరీలోని ఇతర ప్రాంతాలను (కుప్ప వంటిది) అతివ్యాప్తి చేయడానికి స్టాక్ కారణమయ్యే దాడుల నుండి రక్షణను అందిస్తుంది. ఇటీవలి దోపిడీలను దుర్వినియోగం చేయడం systemd హీప్ తాకిడి దుర్బలత్వాలు, మా డేటాసెట్‌లో ఈ మెకానిజంను చేర్చడం సముచితమని మేము భావించాము.

కాబట్టి, మరింత ఆలస్యం లేకుండా, సంఖ్యలకు దిగుదాం. పట్టికలు 4 మరియు 5 వరుసగా వివిధ పంపిణీల యొక్క ఎక్జిక్యూటబుల్ ఫైల్‌లు మరియు లైబ్రరీల విశ్లేషణ యొక్క సారాంశాన్ని కలిగి ఉంటాయి.

  • మీరు చూడగలిగినట్లుగా, అరుదైన మినహాయింపులతో NX రక్షణ ప్రతిచోటా అమలు చేయబడుతుంది. ప్రత్యేకించి, CentOS, RHEL మరియు OpenSUSE లతో పోలిస్తే ఉబుంటు మరియు డెబియన్ డిస్ట్రిబ్యూషన్‌లలో దీని వినియోగాన్ని కొంచెం తక్కువగా గమనించవచ్చు.
  • చాలా ప్రదేశాలలో స్టాక్ కానరీలు లేవు, ప్రత్యేకించి పాత కెర్నల్‌లతో పంపిణీలలో. Centos, RHEL, Debian మరియు Ubuntu యొక్క తాజా పంపిణీలలో కొంత పురోగతి కనిపిస్తోంది.
  • డెబియన్ మరియు ఉబుంటు 18.04 మినహా, చాలా పంపిణీలు పేలవమైన PIE మద్దతును కలిగి ఉన్నాయి.
  • OpenSUSE, Centos 7 మరియు RHEL 7లో స్టాక్ తాకిడి రక్షణ బలహీనంగా ఉంది మరియు ఇతరులలో వాస్తవంగా ఉనికిలో లేదు.
  • ఆధునిక కెర్నల్స్‌తో ఉన్న అన్ని పంపిణీలు RELROకి కొంత మద్దతును కలిగి ఉన్నాయి, ఉబుంటు 18.04 ముందుంది మరియు డెబియన్ రెండవ స్థానంలో ఉంది.

ఇప్పటికే చెప్పినట్లుగా, ఈ పట్టికలోని కొలమానాలు బైనరీ ఫైల్ యొక్క అన్ని సంస్కరణలకు సగటు. మీరు ఫైల్‌ల యొక్క తాజా వెర్షన్‌లను మాత్రమే చూస్తే, సంఖ్యలు భిన్నంగా ఉంటాయి (ఉదాహరణకు, చూడండి PIE అమలుతో డెబియన్ పురోగతి) అంతేకాకుండా, గణాంకాలను లెక్కించేటప్పుడు చాలా పంపిణీలు సాధారణంగా బైనరీలోని కొన్ని ఫంక్షన్‌ల భద్రతను మాత్రమే పరీక్షిస్తాయి, అయితే మా విశ్లేషణ గట్టిపడిన ఫంక్షన్‌ల యొక్క నిజమైన శాతాన్ని చూపుతుంది. కాబట్టి, 5 ఫంక్షన్లలో 50 బైనరీలో రక్షించబడితే, మేము దానికి 0,1 స్కోర్‌ను ఇస్తాము, ఇది 10% ఫంక్షన్‌లను బలోపేతం చేయడానికి అనుగుణంగా ఉంటుంది.

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది
పట్టిక 4. అంజీర్‌లో చూపిన ఎక్జిక్యూటబుల్ ఫైల్‌ల భద్రతా లక్షణాలు. 3 (మొత్తం ఎక్జిక్యూటబుల్ ఫైల్‌ల శాతంలో సంబంధిత ఫంక్షన్‌ల అమలు)

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది
పట్టిక 5. అంజీర్‌లో చూపిన లైబ్రరీల భద్రతా లక్షణాలు. 3 (మొత్తం లైబ్రరీల సంఖ్యలో శాతంగా సంబంధిత ఫంక్షన్‌ల అమలు)

కాబట్టి పురోగతి ఉందా? ఖచ్చితంగా ఉంది: ఇది వ్యక్తిగత పంపిణీల గణాంకాల నుండి చూడవచ్చు (ఉదాహరణకు, డెబియన్), అలాగే పై పట్టికల నుండి. అంజీర్‌లో ఉదాహరణగా. ఉబుంటు LTS 6 యొక్క మూడు వరుస పంపిణీలలో రక్షణ మెకానిజమ్‌ల అమలును మూర్తి 5 చూపిస్తుంది (మేము స్టాక్ తాకిడి రక్షణ గణాంకాలను వదిలివేసాము). సంస్కరణ నుండి సంస్కరణకు మరిన్ని ఎక్కువ ఫైల్‌లు స్టాక్ కానరీలకు మద్దతు ఇస్తాయని మేము గమనించాము మరియు పూర్తి RELRO రక్షణతో మరిన్ని బైనరీలు రవాణా చేయబడుతున్నాయి.

తర్వాత మిలియన్ల బైనరీలు. Linux ఎలా బలపడింది
అంజీర్. 6

దురదృష్టవశాత్తూ, వివిధ డిస్ట్రిబ్యూషన్‌లలోని అనేక ఎక్జిక్యూటబుల్ ఫైల్‌లకు ఇప్పటికీ పైన పేర్కొన్న రక్షణలు ఏవీ లేవు. ఉదాహరణకు, ఉబుంటు 18.04ని చూస్తే, మీరు ngetty బైనరీ (గెట్టి రీప్లేస్‌మెంట్), అలాగే mksh మరియు lksh షెల్‌లు, picolisp ఇంటర్‌ప్రెటర్, nvidia-cuda-toolkit ప్యాకేజీలు (GPU-యాక్సిలరేటెడ్ అప్లికేషన్‌ల కోసం ఒక ప్రసిద్ధ ప్యాకేజీని గమనించవచ్చు. మెషిన్ లెర్నింగ్ ఫ్రేమ్‌వర్క్‌లు), మరియు klibc -utils వంటివి. అదేవిధంగా, మాండోస్-క్లయింట్ బైనరీ (ఎన్‌క్రిప్టెడ్ ఫైల్ సిస్టమ్‌లతో మెషీన్‌లను స్వయంచాలకంగా రీబూట్ చేయడానికి మిమ్మల్ని అనుమతించే ఒక అడ్మినిస్ట్రేటివ్ టూల్) అలాగే rsh-redone-client (rsh మరియు rlogin యొక్క రీఇంప్లిమెంటేషన్) NX రక్షణ లేకుండా రవాణా చేయబడతాయి, అయినప్పటికీ వాటికి SUID హక్కులు ఉన్నాయి : (. అలాగే, అనేక సూయిడ్ బైనరీలకు స్టాక్ కానరీస్ వంటి ప్రాథమిక రక్షణ లేదు (ఉదాహరణకు, Xorg ప్యాకేజీ నుండి Xorg.wrap బైనరీ).

సారాంశం మరియు ముగింపు వ్యాఖ్యలు

ఈ కథనంలో, ఆధునిక Linux పంపిణీల యొక్క అనేక భద్రతా లక్షణాలను మేము హైలైట్ చేసాము. తాజా ఉబుంటు LTS పంపిణీ (18.04) సగటున, Ubuntu 14.04, 12.04 మరియు Debian 9 వంటి సాపేక్షంగా కొత్త కెర్నల్స్‌తో పంపిణీలలో బలమైన OS మరియు అప్లికేషన్ స్థాయి రక్షణను అమలు చేస్తుందని విశ్లేషణ చూపించింది. అయితే, పరిశీలించిన పంపిణీలు CentOS, RHEL మరియు మా సెట్‌లోని OpenSUSE డిఫాల్ట్‌గా వారు దట్టమైన ప్యాకేజీల సెట్‌ను ఉత్పత్తి చేస్తారు మరియు తాజా వెర్షన్‌లలో (CentOS మరియు RHEL) డెబియన్ ఆధారిత పోటీదారులతో (డెబియన్ మరియు ఉబుంటు) పోలిస్తే స్టాక్ కొలిషన్ ప్రొటెక్షన్‌లో ఎక్కువ శాతం ఉంటుంది. CentOS మరియు RedHat సంస్కరణలను పోల్చి చూస్తే, మేము స్టాక్ కానరీలు మరియు RELRO సంస్కరణలు 6 నుండి 7 వరకు అమలులో పెద్ద మెరుగుదలలను గమనించాము, అయితే సగటున CentOSలో RHEL కంటే ఎక్కువ ఫీచర్లు అమలు చేయబడ్డాయి. సాధారణంగా, అన్ని పంపిణీలు PIE రక్షణపై ప్రత్యేక శ్రద్ధ వహించాలి, ఇది Debian 9 మరియు Ubuntu 18.04 మినహా, మా డేటాసెట్‌లోని 10% కంటే తక్కువ బైనరీలలో అమలు చేయబడుతుంది.

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

మూలం: www.habr.com

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