TL; DR
የnpm ጥቅል ተጋላጭነቶችን ማግኘት ቀላል ነው። npm audit በአራት ሰከንዶች ውስጥ ያደርገዋል እና 400 ግኝቶችን ይሰጥዎታል። አስቸጋሪው ክፍል የሚቀጥሉት ሁለት ጥያቄዎች ናቸው፡- ከነሱ ውስጥ የትኛው በመተግበሪያዎ ውስጥ በትክክል ሊደረስበት ይችላል፣ እና የትኛው ማሻሻያ ግንባታውን ሳይሰብር ችግሩን ይፈታል።
- አብዛኛው ዝርዝር የእርስዎ ችግር አይደለም። ተደራሽነትን እና የሩጫ ጊዜ አውድን ለ"ወሳኝ" ግኝቶች መተግበር ትንሽ ክፍልፋይ አሁንም ወሳኝ ያደርገዋል። የጥሪ-ግራፍ ትንተና የትኞቹ እንደሆኑ የሚነግርዎት ነው።
npm audit fix --forceየማስተካከያ ስትራቴጂ አይደለም። ዋና ዋና ስሪቶችን በመዝለል ምክር ሰጪዎችን ይፈታል፣ ይህም የደህንነት ተግባር እንዴት መቋረጥ እንደሚፈጥር ነው።- የመተላለፊያ ጥገኝነቶች የክፍሉ መኖር ያለባቸው ናቸው። እርስዎ አልመረጡዋቸውም፣ ብዙውን ጊዜ በቀጥታ ማሻሻል አይችሉም፣ እና እነሱ የግኝቶችን ብዛት ይቆጣጠራሉ።
- ከመዋሃድ በፊት ያስተካክሉት፣ ከተለቀቀ በኋላ አይደለም። በCI ውስጥ ያለ በር እና አውቶማቲክ pull request የወጪ ደቂቃዎች። የምርት ጥገና ቅዳሜና እሁድ ያስከፍላል።
የፍለጋ ቆጠራው ችግር ያልሆነው ለምንድን ነው?
ከመጀመሪያው ዓመት በኋላ ያለው እያንዳንዱ የኖድ ፕሮጀክት ተመሳሳይ ተሞክሮ ያመነጫል። ስካን ሲያካሂዱ፣ በመቶዎች የሚቆጠሩ የnpm ጥቅል ተጋላጭነቶችን ያገኛሉ፣ እና ዝርዝሩ በጣም ትልቅ ስለሆነ ምክንያታዊው ምላሽ ተርሚናሉን መዝጋት ነው።
ያ ምላሽ ትክክል ነው፣ ይህም የማይመች ክፍል ነው። ወደ ሶስት አራተኛ የሚጠጉ የኮድቤዝ ክፍሎች ከፍተኛ ተጋላጭነት ያላቸው ክፍት ምንጭ ክፍሎችን ይይዛሉ፣ እና ስካነር በማንኛውም ቀን የሚያቀርበው አብዛኛው ነገር በእውነቱ በእርስዎ የጥገኝነት ዛፍ ውስጥ ነው። ዝርዝሩ ትክክለኛ ነው። የስራ ወረፋ አይደለም።
በትክክለኛው ዝርዝር እና በተግባር ሊተገበር በሚችል ዝርዝር መካከል ያለው ክፍተት አውድ ሲሆን፣ ይህም በጥቂት ጥያቄዎች ላይ የተመሠረተ ነው።
- ተጋላጭ የሆነው ኮድ በእርግጥ ከመተግበሪያዬ ማግኘት ይቻላል?
- ይህንን በዱር ውስጥ የሚጠቀም ሰው አለ?
- የሚነካው ነገር ለንግዱ አስፈላጊ ነው?
ለእነዚያ ነገሮች መልስ መስጠት የማይችል ስካነር ዝርዝር ይሰጥዎታል እና ሪፖርት ይለዋል.
የ npm ጥቅሎችን ለአደጋ ተጋላጭነት እንዴት ማረጋገጥ እንደሚቻል
የnpm ፓኬጆችን ተጋላጭነቶችን ለመፈተሽ አራት ተግባራዊ መንገዶች አሉ፣ እና ለተለያዩ ጥያቄዎች መልስ ይሰጣሉ።
| መንገድ | ምን ይሰጥዎታል? | የት እንደሚቆም |
|---|---|---|
npm audit | ፈጣን፣ አብሮገነብ፣ ምንም ማዋቀር የለም። ሙሉ ጥገኝነት ባለው ዛፍ ላይ ምክሮች | ተደራሽ መሆን፣ የብዝበዛ አውድ የለም። ከባድነት ብቻ፣ እና --force ነገሮችን ይሰብራል |
| የDendabot ማንቂያዎች | በራስ-ሰር የሚደረጉ ማንቂያዎች በማከማቻዎ ላይ፣ ከማሻሻያ ጋር pull requests | በአማካሪነት ላይ የተመሠረተ። ኮድዎ ተጋላጭ የሆነውን ተግባር ይጠራው እንደሆነ አያውቅም። |
| ኦኤስቪ ወይም የጂቲሃብ አማካሪ የውሂብ ጎታ | ስልጣን ያለው፣ ነፃ፣ በፓኬጅ እና በስሪት ሊጠየቅ የሚችል። ለአንድ ጊዜ ቼኮች ጥሩ | የውሂብ ጎታ፣ የስራ ፍሰት አይደለም። አሁንም በእጅ ይለዩና ያስተካክላሉ |
| SCA ተደራሽ በሆነ መልኩ | ተመሳሳይ ምክሮች፣ ተጋላጭ የሆነው ኮድ ሊጠራ የሚችል መሆኑን ወይም አለመሆኑን በማጣራት፣ እንዲሁም የመበዝበዝ እድልን እና ደህንነቱ የተጠበቀ የማሻሻያ መንገድን በመጠቀም የተጣሩ ናቸው | በ ውስጥ መሳሪያ ይፈልጋል pipeline |
ጀምር በ npm audit ምክንያቱም ምንም ወጪ የማይጠይቅ እና ሰከንዶችን የሚወስድ ስለሆነ። እዚያ አታቁሙ፣ ምክንያቱም የሚሰጠው መልስ “ሁሉም ነገር ይኸውልህ” ነው፣ እና ሁሉም ነገር እቅድ አይደለም።
በአማካሪ ምግቦች ላይ ጥገኛ ከሆኑ ማወቅ ያለብዎት አንድ ነገር፡ የጂቲኤችቲ አማካሪ ዳታቤዝ ለ npm ሥነ-ምህዳር የማልዌር ምክሮችን ይይዛል፣ ነገር ግን Dependabot ሆን ብሎ ለእነሱ ማንቂያዎችን አያሰማም፣ ምክንያቱም የታችኛው ተጠቃሚ ብዙውን ጊዜ በማሻሻል ሊፈታቸው አይችልም። ይህ የመዋቅር ክፍተት ነው፣ ማብራት የሚችሉት ቅንብር አይደለም። ተንኮል አዘል ፓኬጆች የተለየ ቁጥጥር ያስፈልጋቸዋል፡ ይፋ ከተደረገ በኋላ ሳይሆን በህትመት ላይ መለየት። የ Xygeni's የማልዌር ቅድመ ማስጠንቀቂያ አዲስ የታተሙ ፓኬጆችን በ npm፣ PyPI፣ Maven እና ሌሎች መዝገቦች በሚታዩበት ጊዜ፣ ፊርማ ከመጠበቅ ይልቅ የባህሪ እና ያልተለመደ ትንተናን በመጠቀም ይተነትናል፣ እና በነጻው የገንቢ ዕቅድ ውስጥ ተካትቷል። ተንኮል ያዘለ የኤንፒኤም ፓኬጆች።
400 ግኝቶችን ወደ አጭር ዝርዝር የሚቀይሩ ማጣሪያዎች
ይህ አንድ ቡድን እንዴት እንደሚሰራ የሚቀይረው ክፍል ነው።
| ማጣሪያ | የሚመልሰው ጥያቄ | በተለምዶ የሚያስወግደው ነገር |
|---|---|---|
| ዳግም-ተደራሽነት | በማመልከቻዬ ውስጥ ያለው አፈፃፀም በእውነቱ ተጋላጭነትን ሊያሳድግ ይችላል? | ትልቁ ውሳኔ። አብዛኛዎቹ ማሳሰቢያዎች መተግበሪያው በፍፁም የማይጠራው ኮድ ውስጥ ይገኛሉ። |
| የብዝበዛ ተገኝነት | የሚሰራ የህዝብ ብዝበዛ አለ፣ እና ይህ አሁን በዱር ውስጥ እየተበዘበዘ ነው? | የቲዎሬቲካል ስጋትን ከጦር መሳሪያ ጋር የተያያዘ አደጋ ይለያል። በሕዝብ ብዝበዛ የተገኘ ግኝት የክብደት ነጥቡ ምንም ይሁን ምን ወረፋውን ይዘልላል |
| የብዝበዛ ዕድል (EPSS) | በሚቀጥሉት 30 ቀናት ውስጥ በዱር ውስጥ ብዝበዛ ምን ያህል ሊሆን ይችላል? | ከፍተኛ የክብደት ግኝቶች ማንም ሰው አላግባብ እየተጠቀመባቸው አይደለም፣ ይህም የዚህ ሳምንት ስራ እምብዛም አይደለም |
| የንግድ አውድ | የተጎዳው አገልግሎት አስፈላጊ ነው፣ እና ተጋልጧል? | ትርጉም ያለው አደጋ የሌላቸው ስርዓቶች ውስጥ ሊደረስባቸው የሚችሉ፣ ሊበዘበዙ የሚችሉ ግኝቶች |
| ተገኝነትን ያስተካክሉ | ይህንን ሳያበላሽ የሚፈታ ስሪት አለ? | ዛሬ መዝጋት የምትችለውን ነገር ከችግር መፍትሄ የሚያስፈልገውን ይለያል |
- ዳግም-ተደራሽነት የመጀመሪያው እና ትልቁ ቆራጭ ነው። በሚተማመኑበት ጥቅል ውስጥ ያለ ተጋላጭነት ሊበዘበዝ የሚችለው አፈፃፀሙ ተጋላጭ የሆነውን ተግባር በትክክል መድረስ ከቻለ ብቻ ነው። የጥሪ ግራፍ መከታተያ ከማብራሪያው ከመገመት ይልቅ በተግባራዊ ደረጃ ላይ ያሉትን ይመልሳል፣ እና በእውነቱ የሚጠቀሙባቸውን ክፍሎች ከአሁኑ ብቻ ይለያል። የXygeni ተደራሽነት ትንተና የተሳሳቱ አወንታዊ ውጤቶችን እስከ 70% ይቀንሳል።
የብዝበዛ ተገኝነት ሁለተኛው ነው፣ እና ከትንበያ ይልቅ እውነታ ነው። የሚሰራ የህዝብ ብዝበዛ ወይም በዱር ውስጥ የተረጋገጠ ብዝበዛ፣ የክብደት ነጥቡ ምንም ይሁን ምን የግኝቱን ቅድሚያ ይለውጣል። ይህ ልዩነት ጥሩ ልምምድ ሆኖ አቁሞ ግዴታ ሆኗል፡ በሳይበር የመቋቋም ህግ መሰረት፣ በምርቱ ውስጥ በንቃት ጥቅም ላይ የዋለ ተጋላጭነትን የሚያውቅ አምራች በ24 ሰዓት የሪፖርት ሰዓት ላይ ይገኛል። “በንቃት ጥቅም ላይ የዋለ”ን ከ “ከፍተኛ CVSS” መለየት የማይችል ፕሮግራም ያንን ሰዓት ማሟላት አይችልም።
የብዝበዛ ዕድል ሦስተኛው ሲሆን፣ ትንበያው እንደገና ከቀረበው ጋር ተመሳሳይ ጥያቄ ነው። EPSS በሚቀጥሉት 30 ቀናት ውስጥ ተጋላጭነት በዱር ውስጥ ጥቅም ላይ ሊውል የሚችልበትን ዕድል ይመዘግባል፣ ይህም ቢሆን ኖሮ ምን ያህል መጥፎ ይሆን ነበር ከሚለው በጣም የተለየ ጥያቄ ነው። ከፍተኛ የCVSS ውጤት እና ቸልተኛ የEPSS ውጤት የዚህ ሳምንት ስራ እምብዛም አይደለም።
- የንግድ አውድ ሦስተኛው ሲሆን፣ ምንም አይነት አጠቃላይ ምግብ ማቅረብ የማይችል ነው። በኢንተርኔት በሚቀርብ የክፍያ አገልግሎት ውስጥ ሊደረስበት የሚችል እና ሊበዘበዝ የሚችል ተጋላጭነት በውስጣዊ የሪፖርት ማድረጊያ መሳሪያ ውስጥ ካለው ተመሳሳይ CVE ጋር ተመሳሳይ ግኝት አይደለም።
እነዚህ ማጣሪያዎች አንድ ላይ ሲተገበሩ፣ ማንም ሰው የሚያነበውን ዝርዝር ወደ አንድ ሰው የሚያጠናቅቀውን ዝርዝር በመደበኛነት ይለውጣሉ። የሩጫ ጊዜ እና ተደራሽ መሆን በተለምዶ ጥቂት “ወሳኝ” ግኝቶችን ብቻ አሁንም ወሳኝ ያደርጋቸዋል። Xygeni ተደራሽነትን፣ የአጠቃቀም ተደራሽነትን፣ EPSSን እና የንግድ አውድን በቅድሚያ አሰጣጥ ፈንጣጣ ውስጥ እስከ ስምንት የሚደርሱ ሊዋቀሩ የሚችሉ ደረጃዎች አድርገው ይመለከታቸዋል፣ ስለዚህ “ሊደረስበት የሚችል እና በንቃት ጥቅም ላይ የሚውል” አንድ ሰው በእጅ የሚያሄድ ጥያቄ ሳይሆን የቆመ ወረፋ ይሆናል።
ግንባታውን ሳያፈርሱ የnpm ጥቅል ተጋላጭነቶችን ማስተካከል
ማግኘት ቀላልው ግማሽ ነው። የnpm ጥቅል ተጋላጭነቶች ለወራት ያልተፈቱበት ምክንያት እነሱን ማስተካከል የራሱ የሆነ አደጋ ስላለው ነው፣ እና ገንቢዎችም ይህንን ያውቃሉ።
| የማስተካከያ አማራጭ | ትክክል ሲሆን | መጀመሪያ ምን ማረጋገጥ እንዳለበት |
|---|---|---|
npm audit fix | አማካሪነት በሴምቨር-ተኳሃኝ ክልል ውስጥ ይፈታል | አብዛኛውን ጊዜ ደህንነቱ የተጠበቀ ነው። ሙከራዎችን እንደገና ያሂዱ፣ ከዚያ ይዋሃዱ |
npm audit fix --force | ማለት ይቻላል በጭራሽ፣ ያለ ምንም ጥበቃ | ዋና ዋና ስሪቶችን ያቋርጣል። ሌላ እስኪረጋገጥ ድረስ እያንዳንዱን ውጤት እንደ ሰባሪ ለውጥ አድርገው ይመለከቱት። |
| የታለመ ቀጥተኛ ማሻሻያ | ጥገኝነትዎ የእርስዎ ነው እና የተስተካከለ ስሪት አለ | የትኞቹ ተጋላጭነቶች ይጠፋሉ፣ የትኞቹ አዳዲስ ነገሮች ይመጣሉ፣ እና ዝላይው ኮድዎን ይጥሳል? |
| የሽግግር ጥራት | ተጋላጭ የሆነው ጥቅል በአራት ደረጃዎች ዝቅ ያለ ነው እና የእርስዎ አይደለም | በዛፉ ውስጥ ያለው አጭሩ የማሻሻያ መንገድ፣ ወይም ምንም ከሌለ የሚሻር |
| ምንም ማስተካከያ የለም | ተንከባካቢው አልጠገነውም | ጨርሶ ሊደረስበት የሚችል ይሁን አይሁን። ካልሆነ፣ ማሻሻያ ከማድረግ ይልቅ ሰነድ አድርገው ይቀጥሉ እና ይቀጥሉ። |
| ጥገኝነትን ያስወግዱ | ፓኬጁ ብዙም ጥቅም ላይ አልዋለም ወይም ተትቷል | የሆነ ነገር አሁንም ይጠራው እንደሆነ። ጥቅም ላይ ያልዋሉ ክፍሎች ለመዝጋት በጣም ርካሹ ግኝቶች ናቸው |
ከማንኛውም ማሻሻያ በፊት አስፈላጊው ጥያቄ "ይህ CVEን ይተካዋል?" የሚለው አይደለም። በአንድ ጊዜ ሶስት ጥያቄዎች ናቸው፡- በዚህ ስሪት ውስጥ የትኞቹ ተጋላጭነቶች ይጠፋሉ፣ የትኞቹ አዳዲስ ስሪቶች ከእሱ ጋር ይመጣሉ፣ እና ስሪቱ ዝላይ ኮዴን ይሰብራል?
ዚጌኒ ለእያንዳንዱ ተጋላጭ ጥገኝነት ሶስቱንም ያሳያል፣ ስለዚህ ምርጫው ከሚታዩ አማራጮች መካከል ነው፣ ከዝላይ ይልቅ። ከዚያም ራስ-ሰር ማስተካከያ ያመነጫል። pull request በተስተካከለው ስሪት፣ የጅምላ ማስተካከያ በአንድ እርምጃ ውስጥ በርካታ ጥገናዎችን ይተገብራል፣ እና የXygeni Bot በፍላጎት ይሰራል፣ በ pull requests ወይም በየቀኑ፣ ስለዚህ ማንም ሳያስቀድመው የተረፈው ገንዘብ ይቀንሳል።
ለጊዜያዊ ጥገኝነቶች፣ እርስዎ ያልመረጡትን ስሪት በቀላሉ ማባከን በማይችሉበት፣ ጠቃሚው ውጤት በዛፉ ውስጥ ያለው አጭር የማሻሻያ መንገድ ሲሆን የምክር መስጫውን የሚፈታ ነው፣ የጥቅል አራት ደረጃዎች ወደ ታች ዝቅ ብሎ የሚነግርዎት ማንቂያ አይደለም።
ከመላካቸው በፊት፡ ቼኩ የት ነው?
"ከመላካቸው በፊት" የጊዜ ሰሌዳ ጥያቄ ሲሆን ወደ ሶስት ቦታዎች ይወርዳል።
- በIDE ውስጥስለዚህ አንድ ገንቢ ጥገኝነቱን ሲመርጥ ችግሩን ያያል፣ ይህም ጥገኝነቱን ለመለወጥ በጣም ርካሹ ጊዜ ነው።
- በላዩ ላይ pull request, አንድ ቦት ምን እንደተለወጠ እና ጥገናውን እንደሚከፍት እና የደህንነት በር ከገደቡ በላይ ባሉ ግኝቶች ላይ ግንባታን ሊያሳጣ የሚችልበት ቦታ። ቡድኖች በሩን እንዲያሰናክሉ የሚያደርጋቸው በክብደት ብቻ ነው። ሊደረስባቸው የሚችሉ እና ሊበዘበዙ የሚችሉ ግኝቶች ላይ መድረስ እንዲቆዩ የሚያደርጋቸው ነው።
- ከተለቀቀ በኋላ ያለማቋረጥ፣ ምክንያቱም በተዋሃደበት ጊዜ ንጹህ የሆነ ጥገኝነት አንድ ምክር በሚታተምበት ቀን ተጋላጭ ይሆናል። አንድ ሰው እንደገና መቃኘቱን ሳያስታውስ በመመዝገቢያዎች ላይ ቀጣይነት ያለው ክትትል ይህንን የሚይዘው ነው።
እና የሦስቱም ውጤቶች ከእርስዎ ጎን ለጎን በአንድ ቅድሚያ በተሰጣቸው ወረፋ ውስጥ መሆን አለባቸው። SAST, ምስጢሮች, እና የኮንቴይነር ግኝቶች, አስቀድመው ከሚያሄዱባቸው መሳሪያዎች የተዋጡትን ጨምሮ። የተጋላጭነት ዝርዝር በራሱ ኮንሶል ውስጥ የሚኖረው ዝርዝር ከታሰበው ስራ ጋር ትኩረት ለማግኘት የሚወዳደር ዝርዝር ነው።
ጥገናውን ይላኩ፣ ግኝቱን አይደለም
የ400 npm ፓኬጅ ተጋላጭነቶችን የሚሰጥህ ስካነር ስራውን አላከናወነም። ስራውን አንቀሳቅሶታል።
Xygeni የጥገኝነት ግኝቶችን ተደራሽነት፣ የአጠቃቀም እድልን እና የንግድ አውድን በማጥበብ፣ እያንዳንዱ ማሻሻያ ምን እንደሚያስተካክል እና ምን ሊበላሽ እንደሚችል ያሳያል፣ እና ይከፍታል pull request ከተስተካከለው ስሪት ጋር። በእርስዎ ውስጥ ይሰራል pipeline፣ ያፈራል SBOM እና በ SPDX እና CycloneDX ውስጥ የVDR ውጤት፣ CRA፣ NIS2 እና DORA የሚጠይቁት ማስረጃ፣ እና የጥገኝነት ግኝቶችን እንደ ቀሪው የአደጋዎ ወረፋ ውስጥ ያስቀምጧቸዋል፣ ይህም እርስዎ የማይተኩዋቸውን ስካነሮች ግኝቶችን ጨምሮ።
በነፃ ይጀምሩ እና ማከማቻን ይቃኙ፣ ወይም ተደራሽነቱ ዝርዝሩን እንዴት እንደሚለውጥ ይመልከቱ.
በየጥ
የnpm ፓኬጆችን ለተጋላጭነት እንዴት ማረጋገጥ እችላለሁ?
ሩጫ npm audit ለፈጣን እይታ፣ ከዚያም ተጋላጭ ኮዱ በትክክል ሊጠራባቸው ወደሚችሉባቸው ግኝቶች ዝርዝሩን ለማጥበብ ተደራሽ የሆነ ትንተና ያለው መሳሪያ ይጠቀሙ። እንደ OSV እና GitHub Advisory Database ያሉ የምክር ዳታቤዞች የተወሰነ ጥቅል እና ስሪት ለመፈተሽ ጠቃሚ ናቸው።
Is npm audit fix ለመሮጥ ደህንነቱ የተጠበቀ ነው?
አስገዳጅ ያልሆነው ስሪት ብዙውን ጊዜ ደህንነቱ የተጠበቀ ነው፣ ምክንያቱም በሴምቨር ተኳሃኝ በሆኑ ክልሎች ውስጥ ስለሚቆይ። npm audit fix --force አይደለም፡- ምክሮችን ለመፍታት በዋና ዋና ስሪቶች ላይ ይሻሻላል፣ እና ከዚያ ነው ሰበር ለውጦች የሚመጡት።
ለምንድነው ብዙ የnpm ጥቅል ተጋላጭነቶች ያሉብኝ?
ምክንያቱም አብዛኛዎቹ ጊዜያዊ ናቸው። ጥቂት ቀጥተኛ ጥገኝነቶችን ትጭናለህ እና በመቶዎች የሚቆጠሩ ቀጥተኛ ያልሆኑ ጥገኞችን ትወርሳለህ፣ እያንዳንዳቸው የራሳቸው የምክር ታሪክ አላቸው። መጠኑ የተለመደ ነው። የጎደለው መለያየት ነው።
የተደራሽነት ትንተና ምንድን ነው?
በመተግበሪያዎ ውስጥ ያለው አፈፃፀም በጥገኝነት ውስጥ ያለውን ተጋላጭነት ተግባር በትክክል ሊነካ ይችል እንደሆነ መወሰን። ይህ በጥገኝነት ደህንነት ውስጥ የሚገኘው ትልቁ የድምፅ ቅነሳ ነው፣ ምክንያቱም አብዛኛዎቹ የተዘገቡ ተጋላጭነቶች መተግበሪያዎ በጭራሽ የማይጠራው ኮድ ውስጥ ስለሚቀመጡ።
ቅድሚያ ለመስጠት CVSS ወይም EPSS መጠቀም አለብኝ?
ለሁለቱም፣ ለተለያዩ ነገሮች። CVSS አንድ ተጋላጭነት ቢበዘበዝ ምን ያህል ከባድ እንደሚሆን ይገልጻል። EPSS በሚቀጥሉት 30 ቀናት ውስጥ የብዝበዛ እድሉ ምን ያህል እንደሆነ ይገምታል። ያለ እድል ከባድነት በተሳሳተ ዘንግ የተደረደረ ወረፋ ይፈጥራል።
የ npm ፓኬጆችን ለተጋላጭነት ምን ያህል ጊዜ ማረጋገጥ አለብኝ?
በተከታታይ፣ በጊዜ ሰሌዳ ላይ አይደለም። ሰኞ ላይ ንጹህ ቅኝት ማድረግ ረቡዕ ዕለት የምክር አገልግሎት ሰጪው አስቀድመው በላኩት ጥቅል ላይ ቢወድቅ ምንም ማለት አይደለም።







