አንድን ሲገፋፉ commit, የእርስዎ CI/CD pipeline ሩጫዎች፣ ሙከራዎች ያልፋሉ እና ማሰማራት በአንድ ጠቅታ ርቀት ላይ ብቻ ነው። ከዚያም በድንገት፣ ግንባታዎ በሚስጥር የTLS መልእክት ይከሽፋል።
ምንም አይነት የኮድ ለውጥ ጥፋተኛ ሆኖ አያውቅም፣ ነገር ግን pipeline ቀይ ነው። ምን ሆነ? ለብዙ ቡድኖች፣ ጥፋተኛው ብዙውን ጊዜ የTLS የደህንነት ችግር ነው፣ ለምሳሌ ጊዜው ያለፈበት የምስክር ወረቀት፣ ደካማ ሚስጥራዊ ኮድ ወይም የተሳሳተ የተዋቀረ አገልጋይ። መልካም ዜናው? እነዚህ ችግሮች እንዴት መጠቀም እንዳለቦት የሚያውቁ ከሆነ ግንባታዎችዎን ከማበላሸታቸው በፊት ለመለየት ቀላል ናቸው። OpenSSL s_client.
ይህ ጽሑፍ የኤስኤስኤል ስህተቶችን በመመርመር እና በመከላከል ረገድ ይመራዎታል CI/CD pipelineበመጠቀም opensl s_clientእውነተኛ ምሳሌዎችን፣ የአውቶሜሽን ቴክኒኮችን እና guardrails ማሰማራቶችዎን ደህንነቱ የተጠበቀ የሚያደርጉ።
የእርስዎ ጊዜ Pipeline ጩኸቶች፡ እውነተኛ የTLS ውድቀት
ለብዙ የDevOps መሐንዲሶች የሚታወቅ እይታ ይኸውና፡
bash
$ openssl s_client -connect example.com:443
CONNECTED(00000003)
depth=0 CN = example.com
Verify error:num=10:certificate has expired
ያ የኤስኤስኤል ስህተት የመጨረሻ ነጥብ የምስክር ወረቀት ጊዜው አልፎበታል ማለት ነው። In CI/CDይህ ማሰማራቶችን ያቆማል፣ የውህደት ሙከራዎችን ይሰብራል፣ እና አጠቃላይ ልቀትዎን ሊያግድ ይችላል።
ከዚህም የከፋው ደግሞ ችላ ከተባለ፣ ይህ ተመሳሳይ የTLS የደህንነት ክፍተት የምርት ስርዓቶችን ለሰው-በመሃል ለሚሰነዘሩ ጥቃቶች ሊያጋልጥ ወይም የአገልግሎት መቋረጥ ሊያስከትል ይችላል።
OpenSSL s_client የገንቢው የTLS ማረሚያ ቢላዋ የሆነው ለምንድነው?
ግልጽ ያልሆኑ እና በእጅ የሚሰሩ የአሳሽ ማስጠንቀቂያዎች በተለየ መልኩ፣ የOpenSSL s_client የTLS የእጅ መጨባበጥ ዝርዝር እና ጥሬ እይታ ይሰጣል።
ለሚከተለው ተስማሚ ነው
- የትኛውን የTLS ስሪት እና የመጨረሻ ነጥብ ሳይፈር እንደሚጠቀም በማረጋገጥ ላይ
- የምስክር ወረቀቶቹ ትክክለኛ እና የታመኑ መሆናቸውን ማረጋገጥ
- ግንኙነቶችን በቀጥታ በ ውስጥ ማረም CI/CD ሥራ
የእጅ መጨባበጥ ቼክ ምሳሌ፡
bash
openssl s_client -connect service.internal:443 -servername service.internal -tls1_2
በድርድር ወቅት የምስክር ወረቀት ዝርዝሮችን፣ የሚደገፉ ሚስጥራዊ መረጃዎችን እና ማንኛውንም የSSL ስህተቶችን ወዲያውኑ ታይነት ያገኛሉ። ለዚህም ነው ብዙ የDevSecOps ቡድኖች እንደ ተመራጭ የTLS የደህንነት መሳሪያ አድርገው የሚመለከቱት።
CIን የሚያፈርሱ የተለመዱ የTLS/SSL ስህተቶች Pipelines
ሊከሰቱ የሚችሉ ውድቀቶችን በዝርዝር እንመልከት CI/CD, አጫጭር ምሳሌዎችን እና ተፅዕኖዎችን ጨምሮ።
1 ጊዜው ያለፈባቸው ወይም ገና የማይሰሩ የምስክር ወረቀቶች
bash
$ openssl s_client -connect example.com:443
Verify error:num=10:certificate has expired
ተጽእኖ: አንድ ጥገኝነት ጊዜው ያለፈበት የምስክር ወረቀት ሲጠቀም አውቶማቲክ ሙከራዎች ይከሽፋሉ። በማይክሮሰርቪስ አርክቴክቸርስ ውስጥ፣ በውስጣዊ አገልግሎት ውስጥ ያለ አንድ ጊዜው ያለፈበት የምስክር ወረቀት መላውን የማሰማሪያ ሰንሰለት ሊያቆም ይችላል።
2 ደካማ ሲፈርስ ወይም የተቋረጡ ፕሮቶኮሎች
bash
openssl s_client -connect app.dev:443 -cipher LOW
ተጽእኖ: አንድ አገልግሎት TLS 1.0/1.1 ወይም ደካማ ሚስጥራዊ መረጃዎችን ሲደግፍ የደህንነት በሮች ይከሽፋሉ። ይህ ብዙውን ጊዜ በተቆጣጠሩ አካባቢዎች ውስጥ የተገዢነት ቅኝቶች ሲደረጉ ይታያል።
3 የአስተናጋጅ ስም አለመጣጣሞች እና የራስ-የተፈረሙ የምስክር ወረቀቶች
ለምሳሌ፡- ውስጣዊ የማስተናገጃ አገልግሎት ለሚከተሉት የተሰጠ የምስክር ወረቀት ይጠቀማል አገልግሎት።አካባቢያዊ, ነገር ግን pipeline ጥሪዎች service.devበሌላ በኩል ደግሞ የምስክር ወረቀቱ በራሱ የተፈረመ እና በአሸናፊው የትረስት መደብር የማይታመን ሊሆን ይችላል።
ተጽእኖ: የእጅ መጨባበጥ ማረጋገጫው በግልጽ ካልተታለፈ በስተቀር ይከሽፋል፣ በምርት ውስጥ አደገኛ ነው። ይህ በውስጣዊ የኤፒአይ ጥሪዎች፣ በአካባቢያዊ የሙከራ ቅንብሮች ወይም በተሳሳተ ሁኔታ በተዋቀሩ የገንቢ አካባቢዎች ውስጥ የተለመደ ነው።
4 ያልተሟሉ የሰርተፊኬት ሰንሰለቶች
ለምሳሌ፡ የደረጃ አሰጣጥ ሰርተፊኬት መካከለኛ CA ይጎድለዋል።
ተጽእኖ: ጥብቅ የእምነት መደብሮች ያላቸው ሯጮች ግንኙነቶችን ያበላሻሉ፣ ይህም በየጊዜው የግንባታ ውድቀቶችን ያስከትላል።
በጥልቀት መግባት ይፈልጋሉ CI/CD ማስፈራሪያዎች?
CI/CD pipelineዎች የተቀላጠፈ የሶፍትዌር ልማትን በማመቻቸት ረገድ ወሳኝ ሚና ይጫወታሉ። ሆኖም፣ እነዚህ pipelineበጣም ወሳኝ እየሆነ ሲሄድ፣ ከተጋላጭነት የመጠበቅ አስፈላጊነት የበለጠ ግልጽ እየሆነ ይሄዳል። በ OWASP Top-10 ውስጥ ተለይቶ የታወቀውን ጉልህ አደጋ በመፍታት ላይ የሚያተኩር ጥልቅ ምርመራ ውስጥ ይግቡ። CI/CD የደህንነት አደጋዎች!
የTLS ውድቀቶችን በመመርመር ላይ CI/CD ከ OpenSSL s_client ጋር
የመጀመሪያው እርምጃ፡- በአንተ ውስጥ ያለውን ውድቀት እንደገና ደግመህ አጫውት CI/CD አካባቢ.
yaml
- name: Check TLS
run: |
openssl s_client -connect api.prod:443 -servername api.prod
ይህ ሙሉ የTLS የእጅ መጨባበጥ ትራንስክሪፕት፣ ፕሮቶኮል፣ ሚስጥራዊ መረጃ፣ የሰርተፊኬት ሰንሰለት እና ማንኛውንም የማረጋገጫ ስህተቶች ይሰጥዎታል።
መፈለግ:
- ስህተት አረጋግጥ መልዕክቶች
- የድሮ የTLS ፕሮቶኮል ስሪቶች
- በሰንሰለቱ ውስጥ የጠፉ መካከለኛ ክፍሎች
ወደ አውቶሜሽን የሚደረግ ሽግግር፡
ዋናውን መንስኤ መለየት ከቻሉ በኋላ፣ የሚቀጥለው እርምጃ እነዚህን ምርመራዎች በራስ-ሰር ማድረግ ነው። በእጅ የሚደረግ ምርመራ አንድ ጊዜ ችግር የለውም፣ ነገር ግን አውቶሜሽን ከሌለ ተመሳሳይ ነገር ያያሉ። የኤስኤስኤል ስህተት በሌላ ውስጥ pipeline ከሳምንታት በኋላ።
የTLS ፍተሻዎችን እንደ ደህንነት በራስ-ሰር ማድረግ Guardrails
የTLS ቼኮችን በእርስዎ ውስጥ ማካተት ይችላሉ CI/CD ስለዚህ መጥፎ ውቅሮች ቀደም ብለው ይከሽፋሉ፡
- የምስክር ወረቀቱ ከ30 ቀናት ባነሰ ጊዜ ውስጥ የሚያበቃ ከሆነ ማስጠንቀቂያ
- ደካማ የሆኑ ሳይፈሮችን እና የተቋረጡ የTLS ስሪቶችን ያግዱ
- የተሟላ የምስክር ወረቀት ሰንሰለቶች ያስፈልጋሉ
የጥበቃ ምሳሌ፡
bash
if openssl s_client -connect $HOST:$PORT /dev/null | grep -q "Protocol : TLSv1"; then
echo "❌ Weak protocol detected"
exit 1
fi
ጠቃሚ ምክር፡ ይህንን ኮድ ከማዋሃድዎ በፊት ችግሮችን እንዲይዙ በቅድመ-ማሰማራት ደረጃ ላይ ያሂዱ።
በምርት ውስጥ የ TLS ድንገተኛ አደጋዎችን መከላከል
የTLS ችግሮች የሚከሰቱት በማሰማራት ጊዜ ብቻ አይደለም። የምስክር ወረቀቶች በማንኛውም ጊዜ የአገልግሎት ዘመናቸው ያበቃል። ለዚህም ነው ቀጣይነት ያለው ክትትል የሚደረገው በDevSecOps ውስጥ አስፈላጊ።
ከ GitHub እርምጃዎች ጋር የጊዜ ሰሌዳ የተያዘለት የቼክ ምሳሌ፡
yaml
name: TLS Monitor
on:
schedule:
- cron: "0 6 * * *"
jobs:
check-tls:
runs-on: ubuntu-latest
steps:
- name: Check TLS expiration
run: |
EXP_DATE=$(echo | openssl s_client -connect example.com:443 2>/dev/null \
| openssl x509 -noout -enddate | cut -d= -f2)
echo "Certificate expires on: $EXP_DATE"
የTLS የደህንነት ጉዳዮችን ያለማቋረጥ ለመቃኘት የመጨረሻ ነጥቦችን ለመቃኘት ይህንን ከክሮን ጆብስ፣ ከጄንኪንስ ወይም ከኩበርኔትስ ክሮንጆብስ ጋር ማስተካከል ይችላሉ።
ከተሰበረ TLS የሚመጡ እውነተኛ የAppSec አደጋዎች
የተሰበሩ የTLS ውቅሮች የግንባታ ችግሮች ብቻ አይደሉም፤ የደህንነት ተጠያቂነቶች ናቸው፡
- የMITM ጥቃቶች ምስጠራ ደካማ ወይም የጎደለ ከሆነ
- ጥቃቶችን ዝቅ ያድርጉ የቆዩ ፕሮቶኮሎች የሚፈቀዱ ከሆነ
- የአቅርቦት ሰንሰለት አደጋዎች የጥቅል ውርዶች ደህንነታቸው ባልተጠበቁ ግንኙነቶች ላይ ከተከሰቱ
ሁሉንም በአንድ ላይ በማስቀመጥ ከ Guardrails
ይህንን ሂደት እንደሚከተለው አስቡት፦ መርምር → አውቶማቲክ → አስፈጽም.
እንዴት Guardrails ነገሩ: In CI/CD, guardrails ደህንነታቸው ያልተጠበቀ የTLS ውቅሮች ከመጀመራቸው በፊት ያቁሙ። ማሰማራትን ማገድ የሚችሉት የሚከተሉት ከሆኑ ነው፦
- የምስክር ወረቀት ጊዜው ሊያበቃ ነው
- ደካማ ሚስጥራዊ ኮድ ነቅቷል
- ጊዜው ያለፈበት ፕሮቶኮል ጥቅም ላይ ይውላል
ምሳሌ፡ በ GitLab CI ውስጥ፣ የመጨረሻ ነጥብ በTLS 1.0 ምላሽ ከሰጠ ወዲያውኑ ስራው ይከሽፋል፣ ይህም ከመዋሃድ በፊት ጥገናውን ያስገድዳል።
የመሳሰሉ መሳሪያዎች ዚጌኒ እነዚህን ማራዘም ይችላል guardrails የTLS የደህንነት ክፍተቶችን ለማግኘት አጠቃላይ የሶፍትዌር አቅርቦት ሰንሰለትዎን ለመቃኘት
ለCI ምቹ የሆኑ የOpenSSL s_client One-Liners
የሚያበቃበትን ጊዜ ያረጋግጡ፦
bash
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -enddate
የዝርዝር ሚስጥራዊ ጽሑፎች፡
bash
openssl ciphers -v 'ALL:eNULL' | column -t
የመጨረሻ መውሰድ
OpenSSL s_client ከችግር መላ ፍለጋ ትዕዛዝ በላይ ነው፤ ለቅድመ ጥንቃቄ የTLS ደህንነት የDevSecOps መሳሪያ ነው። የSSL ስህተቶች ግንባታዎችዎን ከማፍረሳቸው በፊት ለመያዝ ይጠቀሙበት፣ እና እንደገና የምስክር ወረቀት ማብቂያ ወይም ደካማ ሚስጥራዊ ኮድ እንዳያስደንቁ በራስ-ሰር ያድርጉት።







