ዲሴሪያላይዜሽን ምንድን ነው - የርቀት ኮድ አፈፃፀም

ደህንነቱ ያልተጠበቀ የሴሪያላይዜሽን የርቀት ኮድ አፈፃፀም እንዴት እንደሚሆን (እና ከመዋሃድዎ በፊት እንዴት መያዝ እንደሚቻል)

የ Commit የኋላ በር የከፈተው

አዲስ ባህሪ በተጠቃሚ የተሰቀሉ ነገሮችን ለማስተናገድ ተዋህዷል። ሁሉም ነገር ፈተናዎችን ያልፋል፣ ነገር ግን ከሳምንታት በኋላ፣ የፔንት ፈተና አጥቂዎች በአገልጋዩ ላይ ትዕዛዞችን መፈጸም እንደሚችሉ ያሳያል፤ ይህም በኮዱ ውስጥ የተደበቀ ደህንነቱ ያልተጠበቀ የሴሪያሊዝም ውጤት ነው። ከሴሪያሊዝም እስከ የርቀት ኮድ አፈፃፀም ያለው ክፍተት በአደገኛ ሁኔታ ትንሽ ሊሆን ይችላል፣ በተለይም ከክፍት ምንጭ ፓኬጆች ወይም ከውስጣዊ አገልግሎቶች የተገኘ ተከታታይ መረጃ ያለ ማረጋገጫ ሲታመን።

በኮድ ውስጥ ዲሴሪያላይዜሽን ምንድን ነው፣ ለምን አደገኛ ነው እና የት እንደሚደበቅ

በገንቢ አገላለጽ፣ ዲሴሪያላይዜሽን ምንድን ነው? የተዋቀረ ውሂብ፣ JSON፣ XML፣ ሁለትዮሽ ቅርጸቶች ወይም በቋንቋ ላይ የተመሰረቱ ተከታታይ ነገሮችን የመውሰድ እና ወደ ማህደረ ትውስታ ውስጥ ወደ ነገሮች የመቀየር ሂደት ነው።

በራሱ, ዲሴሪያላይዜሽን ምንም ጉዳት የሌለው እና የተለመደ ነው፣ ለምሳሌ፡

  • ጃቫ: ነገሮችን በ የObjectInputStream
  • ዘንዶ: ውሂብን በመጫን ላይ በ ኮምጣጤ።ጭነት
  • Node.js: JSONን በ መተንተን ጄኤስኤን.ፓርስ

አደጋው የሚታየው ያለማረጋገጫ ወደማይታመን ውሂብ ሲተገበር ነው። አንድ አጥቂ የመግብሮች ሰንሰለት፣ ባልተፈለጉ መንገዶች ጥቅም ላይ የዋሉ ነባር የኮድ ዱካዎችን የሚያስጀምር ግብዓት መፍጠር ይችላል፣ ይህም ወደ የርቀት ኮድ አፈፃፀም ሊያመራ ይችላል።

ደህንነቱ ያልተጠበቀ ዲሴሪያላይዜሽን ብዙውን ጊዜ በሚከተሉት ውስጥ ይገኛል፦

  • የክፍት ምንጭ ጥቅሎች ደህንነቱ ያልተጠበቀ ነባሪዎች
  • ብጁ ኮድ ተከታታይ ግብዓት አስተማማኝ ነው ብሎ የሚያስብ
  • የሶስተኛ ወገን ኤፒአይዎች ያለ ማረጋገጫ ተከታታይ የሆኑ ነገሮችን እየመለሱ ነው
  • ቅርሶችን ይገንቡ እንደ:
    • ጃቫ .ser ቅድመ-ተከታታይ ነገሮችን የያዙ ፋይሎች።
    • ዘንዶ .pkl በማሽን መማሪያ የስራ ፍሰቶች ውስጥ የሞዴል ፋይሎች።
    • በዶከር ምስሎች ወይም በማሰማሪያ ኮንቴይነሮች ውስጥ የተካተቱ ተከታታይ የውቅር ነገሮች
  • የሙከራ ዕቃዎች እንደ:

    • ከምርት ቅጽበታዊ ገጽ እይታዎች የተቀዳ አሮጌ ተከታታይ የሙከራ ውሂብ።
    • ለአፈጻጸም ወይም ለሪግሬሽን ሙከራዎች ከውጭ ማከማቻዎች የተወሰዱ ተከታታይ የክፍያ ጭነቶች።

እነዚህ ፋይሎች ወደ ማከማቻ ውስጥ ሊገቡ እና በሙከራዎች ወይም በማሰማራት ጊዜ በራስ-ሰር ሊጫኑ ይችላሉ፣ ይህም ደህንነቱ የተጠበቀ እንዳይሆን ያደርጋል ዲሴሪያላይዜሽን in CI/CD pipelineኮዱ ወደ ምርት ከመድረሱ በፊት እንኳን።

ከአስተማማኝ ያልሆነ ሴራላይዜሽን እስከ የርቀት ኮድ አፈፃፀም፡ የጥቃት መንገድ

ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን ብዝበዛ ሰንሰለት ብዙውን ጊዜ ከእነዚህ ቅጦች ውስጥ አንዱን ይከተላል፡

  1. የማይታመን ግብዓት ወደ አፕሊኬሽኑ ይገባል።
  2. ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን (deserativeization) እቃዎችን ያለ ገደብ እንደገና ይፈጥራል።
  3. የመግብር ሰንሰለት አሁን ያለውን ተግባር ባልታሰቡ መንገዶች ያስጀምራል።
  4. አጥቂው መብቶችን ያሰፋዋል እና የርቀት ኮድ አፈፃፀምን ያገኛል።

ተለዋጮች:

  • የጃቫ መግብር ሰንሰለቶች እንደ Apache Commons ያሉ አሮጌ ቤተ-መጻሕፍትን ይጠቀማሉ።
  • ዘንዶ .pkl የተከተቱ ተንኮል አዘል ነገሮችን የያዘ የሞዴል ጭነት።
  • Node.js JSON በ መተንተን ኢቫል() ወይም ተለዋዋጭ ማስመጣቶች።

የወራጅ:

				
					Untrusted Input → Deserialization → Gadget Chain → Remote Code Execution
				
			

ከመዋሃድዎ በፊት ደህንነቱ ያልተጠበቀ የሴሪያሊሽን ሁኔታን እንዴት መለየት እንደሚቻል

የኮድ ውህደት ከመደረጉ በፊት ደህንነቱ ያልተጠበቀ የሴሪያላይዜሽን መረጃ ማግኘት ከተሰማራ በኋላ ከማስተካከል በጣም ርካሽ ነው። የራስ-ሰር ትንተና እና ቅድመ-ሙከራ ጥምረት በተሻለ ሁኔታ ይሰራል፡

  • የማይንቀሳቀስ የመተግበሪያ ደህንነት ሙከራ (SAST):
    • እንደ አደገኛ ኤፒአይዎችን ለማግኘት ስካነሮችን ያዋቅሩ የObjectInputStream, ኮምጣጤ።ጭነት, እና YAML.load ደህንነቱ የተጠበቀ ጫኝ ሳይኖር።
    • ደህንነታቸው ያልተጠበቀ እንዲሆን የምንጭ ኮድ እና የግንባታ/ሙከራ ቅርሶችን ሁለቱንም ይቃኙ ዲሴሪያላይዜሽን ንድፎች.
    • ግኝቶችን በቀጥታ በ ውስጥ ያሳዩ pull requests ስለዚህ ገንቢዎች ከመዋሃድዎ በፊት እነሱን መፍታት ይችላሉ።
  • CI/CD ማስተባበር:

የስራ ሂደት ምሳሌ፡-

				
					sql

Commit → SAST scan → PR alert → Fix before merge

				
			
  • ብሎክ ደህንነቱ ያልተጠበቀ ኮድ ወደ ምርት ቅርንጫፎች እንዳይደርስ ለመከላከል ወሳኝ በሆኑ ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን ግኝቶች ላይ ይዋሃዳል።
  • የተመሰሉ ተንኮል አዘል ግቤቶች ያላቸው የአሃድ ሙከራዎች:

    • ፈጠረ ምንም ጉዳት የሌላቸው፣ ቁጥጥር የሚደረግባቸው የክፍያ ጭነቶች የተለመዱ ተከታታይ የጥቃት ነገሮችን የሚመስሉ።
    • አፕሊኬሽኑ እንዴት እንደሚይዛቸው ይሞክሩ፤ ግብዓቱን በጭፍን ከማስኬድ ይልቅ ውድቅ ማድረግ፣ ማጽዳት ወይም መመዝገብ አለበት።
    • እነዚህን ሙከራዎች በራስ-ሰር ውስጥ ያካትቱ pipeline ስለዚህ በእያንዳንዱ የህዝብ ግንኙነት (PR) ላይ ይሰራሉ፣ አደገኛ የሆነ የማጭበርበር ባህሪን ቀደም ብለው ይይዛሉ።
    • የሙከራ ጭነቶች ሊተገበሩ የማይችሉ እና በማከማቻ ውስጥ ለማከማቸት አስተማማኝ መሆናቸውን ያረጋግጡ፣ በምርመራ አመክንዮ ላይ ብቻ ያተኩሩ።

ይህ የተደራረበ አካሄድ አውቶማቲክ ቅኝትን ከገንቢዎች ባለቤትነት ከተያዙ ሙከራዎች ጋር ያጣምራል፣ ይህም ደህንነታቸው ያልተጠበቀ የሴሪያሊዜሽን መንገዶች የርቀት ኮድ አፈፃፀም ተጋላጭነቶች ከመሆናቸው ከረጅም ጊዜ በፊት ተለይተው እንዲወገዱ ያረጋግጣል።

ለገንቢዎች የመከላከያ ስልቶች፡- የኮድ አፈጻጸምን ከሩቅ ቦታ ማስወገድ

  1. የመተማመን ወሰኖች፦ ከተረጋገጡ እና ከተረጋገጡ ምንጮች ብቻ ተከታታይነትን ያስወግዱ።
  2. ደህንነቱ የተጠበቀ ኤፒአይዎች:

     

    • ጃቫ፡ ቤተ-መጻሕፍትን በማረጋገጫ ደህንነቱ የተጠበቀ።
    • ፓይቶን፡ ይጠቀሙ json.loads() በላይ ፒክክል.ጭነቶች() ሲቻል
    • Node.js: አራግፍ ኢቫል() ወይም ተለዋዋጭ የኮድ አፈፃፀም።

       

  3. የተፈቀዱ ዝርዝሮች እና ንድፎችየተፈቀደላቸው የነገር አይነቶችን ይገድቡ። የJSON ንድፎችን ያስፈጽሙ።
  4. የጥገኝነት ንፅህና፦ የኮድ አፈጻጸምን ወይም የርቀት ኮድን አፈጻጸምን የሚጠቅሱ የሲቪኢዎችን መቆጣጠሪያ።
  5. የኮድ ግምገማዎች: ጨምር ዲሴሪያላይዜሽን የደህንነት ፍተሻዎች ለ PR የግምገማ አብነቶች።

የመሳሪያ ማስታወሻ፡ እንደ መሳሪያዎች ዚጌኒ ከመዋሃድዎ በፊት ደህንነቱ ያልተጠበቀ የሴሪያላይዜሽን ኮድ እና ጥገኝነቶችን ይቃኙ፣ ገንቢዎች ቀደም ብለው እንዲያስተካክሉዋቸው ከፍተኛ ተጋላጭነት ያላቸውን ቦታዎች ይለያሉ።

በተለያዩ ቋንቋዎች የፍተሻ ቅጦች ምሳሌ (ደህንነቱ የተጠበቀ የውሸት ኮድ)

ከዚህ በታች ያሉት ሁሉም ምሳሌዎች የማወቂያ ቅጦችን የሚያሳዩ የተጣሩ የውሸት ኮድ ናቸው፣ የሚሰሩ ብዝበዛዎችን አያሳዩም፦

ጃቫ - ደህንነቱ ያልተጠበቀ የኤፒአይ አጠቃቀምን መለየት:

				
					java
// BAD: Accepting untrusted input without validation
ObjectInputStream in = new ObjectInputStream(userInputStream);
Object obj = in.readObject(); // Unsafe - no class type checks

// GOOD: Validate allowed classes before processing
if (allowedClasses.contains(obj.getClass().getName())) {
    process(obj); // Safe processing of approved classes
}

				
			

ፓይዘን - ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን ማስወገድ:

				
					python
import pickle

# BAD: Loading untrusted serialized data directly
data = pickle.loads(untrusted_input)  # Unsafe - arbitrary object execution risk

# GOOD: Use JSON with schema validation
import json
data = json.loads(untrusted_input)  # Safe when validated against schema

				
			

Node.js - ተለዋዋጭ የኮድ አፈፃፀምን መከላከል:

				
					javascript
// BAD: Executing code from parsed data
let obj = JSON.parse(untrustedInput);
eval(obj.code); // Unsafe - allows arbitrary code execution

// GOOD: Use fixed logic without dynamic execution
let safeObj = JSON.parse(untrustedInput);
process(safeObj); // Handle only expected properties and values

				
			

በDevSecOps ውስጥ በራስ-ሰር ማወቂያን ማድረግ Pipelineዎች፡ ምርት ከመድረሱ በፊት የሴሪያሊዜሽንን ማስወገድ

ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን ምርመራን በራስ-ሰር ማድረግ ያረጋግጣል ተጋላጭነቶች ተይዘው ይስተካከላሉ በምርት ውስጥ የርቀት ኮድ አፈፃፀም ከማስከተላቸው በፊት።

Pipeline ቅኝት

  • ሩጫ SAST በምንጭ ኮድ፣ በማዋቀሪያ ፋይሎች እና በእያንዳንዱ ቦታ ላይ ባሉ የግንባታ ቅርሶች ላይ commit.
  • በሁለቱም የመተግበሪያ ኮድ እና በመተግበሪያ ኮድ ውስጥ ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን ቅጦችን ያግኙ ጥገኛነት.

የቅርስ ምርመራ

  • ቅኝት .ser፣ .pkl, እና ሙከራዎችን ከማሰማራት ወይም ከማስኬድዎ በፊት ደህንነታቸው ያልተጠበቁ ቅጦችን የሚያሳዩ ሌሎች ተከታታይ ፋይሎች።

Pull Request በማገድ ላይ

  • ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን ከተገኘ የማገጃ ውህደት።
  • ማስተካከያውን ለማፋጠን በPRs ውስጥ ተግባራዊ ግብረመልስ ያሳዩ።

የአሃድ ሙከራ ማስፈጸሚያ

  • የተመሰሉ ተንኮል አዘል ግብዓቶችን የያዙ የአሃድ ሙከራዎችን ያካትቱ CI/CD pipeline
  • አፕሊኬሽኑ ደህንነቱ ያልተጠበቀ ተከታታይ መረጃዎችን ከመሰረዝ ይልቅ የሚያስኬድ ከሆነ የማይሳካ ግንባታ።

ደንቦችን ሳያዳክሙ የተሳሳቱ አዎንታዊ ነገሮችን ማስወገድ

  • ማንቂያዎችን "ዝም ለማድረግ" የማወቂያ ደንቦችን አያሰናክሉ፤ ይህ እውነተኛ ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን ሂደት ሳይታወቅ እንዲያልፍ ያስችለዋል።
  • ለታወቁ ደህንነታቸው የተጠበቀ ቅጦች ወይም ጥገኞች ቁጥጥር የሚደረግበት የነጭ ዝርዝር (የተፈቀደ ዝርዝር) ይጠቀሙ።
  • የነጭ ዝርዝር ግቤቶችን ከማጽደቅዎ በፊት የደህንነት ማረጋገጫ ይጠይቁ።
  • የነጭ ዝርዝሩን በስሪት ቁጥጥር ስር ያስቀምጡት እና ሁሉም ልዩ ሁኔታዎች ትክክለኛ እና ደህንነታቸው የተጠበቀ መሆናቸውን ለማረጋገጥ በየጊዜው ይገምግሙት።

የዚጌኒ ሚና

  • በቀጥታ ወደ ውስጥ ይዋሃዳል CI/CD pipelineየምንጭ ኮድን ለመቃኘት እና ቅርሶችን ለመገንባት s።
  • በህይወት ዑደቱ መጀመሪያ ላይ ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን ቅጦችን እና አደገኛ ጥገኝነቶችን ያገኛል።
  • በፖሊሲ ላይ የተመሠረተ የተፈቀደላቸው ዝርዝርን ከግዴታ የደህንነት ግምገማ ጋር ይደግፋል፣ የፍተሻ ትክክለኛነትን ከገንቢ ምርታማነት ጋር ማመጣጠን።

ደህንነቱ በተጠበቀ ሁኔታ በማጥፋት የርቀት ኮድ አፈፃፀምን ቀድመው መቆየት

ደህንነቱ ያልተጠበቀ የኮድ ማስፈጸሚያ መንገድ እስኪሆን ድረስ ሳይስተዋል ሊቆይ ይችላል። ይህንን ለመከላከል የሚከተሉትን ማድረግ ያስፈልጋል፦

  • ወራዳነት ምን እንደሆነ እና እንዴት አላግባብ መጠቀም እንደሚቻል መረዳት።
  • በራስ-ሰር ማወቂያን በልማት የስራ ፍሰት ውስጥ ማካተት።
  • በሙከራዎች ውስጥ ጥቅም ላይ የዋሉ ጥገኛዎችን በየጊዜው መገምገም፣ ቅርሶችን መገንባት እና ተከታታይ መረጃዎችን ማዘጋጀት።

የዚጄኒ ተግባራዊ ሚና በዚህ ሂደት ውስጥ:

  • የምንጭ ኮድ ቅኝት፦ ኮዱ ከመዋሃዱ በፊት በበርካታ ቋንቋዎች ውስጥ ደህንነቱ ያልተጠበቀ የሴሪያሊዜሽን ቅጦችን ይለያል።
  • የቅርስ እና የጥገኝነት ትንተና: አደገኛ የሆኑ ተከታታይ ፋይሎችን ያገኛል (.ser፣ .pkl, የተከተተ ውቅር) እና የሚታወቁ ተጋላጭነቶች ያሏቸው የሶስተኛ ወገን ክፍሎች።
  • በፖሊሲ ላይ የተመሰረቱ መቆጣጠሪያዎች፦ የደህንነት ማረጋገጫ ያለው ቁጥጥር የሚደረግበት የተፈቀደ ዝርዝርን ይደግፋል፣ አስፈላጊ የሆኑ ልዩ ሁኔታዎች እውነተኛ አደጋዎችን እንዳያመጡ ያረጋግጣል።
  • የገንቢ ግብረመልስ በአውድ ውስጥ፦ በውስጡ ያለውን ደህንነቱ ያልተጠበቀ የሴሪያሊሽን ትክክለኛ ቦታ እና መንስኤ ይጠቁማል pull requestsገንቢዎች ችግሮችን ወዲያውኑ እንዲያስተካክሉ እና ድጋሚ ቅኝቶችን በማድረግ መፍትሄውን እንዲያረጋግጡ ያስችላቸዋል።

እንደዚህ ያሉ ቼኮችን በቀጥታ ወደ ውስጥ በማዋሃድ CI/CDቡድኖች ደህንነቱ ያልተጠበቀ ሁኔታን መያዝ እና ማስተካከል ይችላሉ በምርት ውስጥ ወደ የርቀት ኮድ አፈፃፀም የመሸጋገር እድል ከማግኘቱ በፊት ጨዋነት የጎደለው ተግባር።

sca-tools-software-composition-analyse-tools
የሶፍትዌር አደጋዎችዎን ቅድሚያ ይስጡ፣ ያስተካክሉ እና ይጠብቁ
ነፃ መለያ ያግኙ።
ምንም ዱቤ ካርድ አያስፈልግም።

የሶፍትዌርዎን ልማት እና አቅርቦት ደህንነት ይጠብቁ

ከ Xygeni Product Suite ጋር