OpenSSL s_client - កំហុស ssl - សុវត្ថិភាព TLS

OpenSSL s_client បានបង្ហាញថា TLS របស់ខ្ញុំខូច៖ ការធ្វើរោគវិនិច្ឆ័យកំហុស SSL នៅក្នុង CI

នៅពេលអ្នករុញមួយ commit, របស់អ្នក CI/CD pipeline ដំណើរការ ការធ្វើតេស្តឆ្លងកាត់ ហើយការដាក់ពង្រាយគឺគ្រាន់តែចុចមួយដងប៉ុណ្ណោះ។ បន្ទាប់មកភ្លាមៗនោះ ការបង្កើតរបស់អ្នកបរាជ័យជាមួយនឹងសារ TLS ដ៏អាថ៌កំបាំងមួយ។
គ្មានការផ្លាស់ប្តូរលេខកូដដែលត្រូវស្តីបន្ទោសទេ ប៉ុន្តែ pipeline គឺក្រហម។ មានអ្វីកើតឡើង? សម្រាប់ក្រុមជាច្រើន ជារឿយៗមូលហេតុគឺបញ្ហាសុវត្ថិភាព TLS ដូចជាវិញ្ញាបនបត្រផុតកំណត់ លេខកូដសម្ងាត់ខ្សោយ ឬម៉ាស៊ីនមេដែលត្រូវបានកំណត់រចនាសម្ព័ន្ធមិនត្រឹមត្រូវ។ ដំណឹងល្អ? បញ្ហាទាំងនេះងាយស្រួលរកឃើញមុនពេលវាធ្វើឱ្យខូចការបង្កើតរបស់អ្នក ប្រសិនបើអ្នកដឹងពីរបៀបប្រើ... កម្មវិធី OpenSSL s_client.

អត្ថបទនេះនឹងណែនាំអ្នកអំពីការធ្វើរោគវិនិច្ឆ័យ និងការទប់ស្កាត់កំហុស SSL CI/CD pipelineប្រើ openssl 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


				
			

ថា កំហុស SSL មានន័យថាវិញ្ញាបនបត្ររបស់ចំណុចបញ្ចប់ផុតកំណត់ហើយ។ In CI/CDវាបញ្ឈប់ការដាក់ពង្រាយ បំបែកការធ្វើតេស្តសមាហរណកម្ម និងអាចរារាំងការចេញផ្សាយទាំងមូលរបស់អ្នក។

អ្វីដែលអាក្រក់ជាងនេះទៅទៀត ប្រសិនបើមិនអើពើ គម្លាតសុវត្ថិភាព TLS ដូចគ្នានេះអាចធ្វើឱ្យប្រព័ន្ធផលិតកម្មប្រឈមនឹងការវាយប្រហារដោយមនុស្សនៅកណ្តាល ឬបណ្តាលឱ្យមានការផ្អាកសេវាកម្ម។

ហេតុអ្វីបានជា OpenSSL s_client ជាកាំបិតបំបាត់កំហុស TLS របស់អ្នកអភិវឌ្ឍន៍

មិនដូចការព្រមានរបស់កម្មវិធីរុករកតាមអ៊ីនធឺណិត ដែលមិនច្បាស់លាស់ និងដោយដៃទេ s_client របស់ OpenSSL ផ្តល់នូវទិដ្ឋភាពឆៅ និងលម្អិតនៃការចាប់ដៃ TLS។
វាល្អសម្រាប់៖

  • កំពុងពិនិត្យមើលកំណែ TLS និងលេខកូដដែលចំណុចបញ្ចប់ប្រើ
  • ការផ្ទៀងផ្ទាត់ថាវិញ្ញាបនបត្រមានសុពលភាព និងគួរឱ្យទុកចិត្ត
  • ការបំបាត់កំហុសការតភ្ជាប់ដោយផ្ទាល់នៅក្នុង CI/CD ការ​ងារ

ឧទាហរណ៍នៃការត្រួតពិនិត្យការចាប់ដៃ៖

				
					bash
openssl s_client -connect service.internal:443 -servername service.internal -tls1_2

				
			

អ្នកទទួលបានភាពមើលឃើញភ្លាមៗអំពីព័ត៌មានលម្អិតអំពីវិញ្ញាបនបត្រ លេខកូដសម្ងាត់ដែលគាំទ្រ និងកំហុស SSL ណាមួយក្នុងអំឡុងពេលចរចា។ នោះហើយជាមូលហេតុដែលក្រុម DevSecOps ជាច្រើនចាត់ទុកវាថាជាឧបករណ៍សុវត្ថិភាព TLS ដ៏ពេញនិយម។

កំហុស TLS/SSL ទូទៅដែលធ្វើឲ្យខូច CI 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 ឬលេខកូដខ្សោយ។ ជារឿយៗវាលេចឡើងក្នុងអំឡុងពេលស្កេនអនុលោមភាពនៅក្នុងបរិស្ថានដែលមានការគ្រប់គ្រង។

៣ ភាពមិនត្រូវគ្នានៃឈ្មោះម៉ាស៊ីន និងវិញ្ញាបនបត្រដែលចុះហត្ថលេខាដោយខ្លួនឯង

ឧទាហរណ៍៖ សេវាកម្មរៀបចំផ្ទៃក្នុងប្រើប្រាស់វិញ្ញាបនបត្រដែលចេញសម្រាប់ សេវាកម្ម.ក្នុងស្រុកប៉ុន្ដែ pipeline ការហៅ service.devម្យ៉ាងវិញទៀត វិញ្ញាបនបត្រអាចត្រូវបានចុះហត្ថលេខាដោយខ្លួនឯង ហើយមិនត្រូវបានទុកចិត្តដោយហាងទុកចិត្តរបស់អ្នករត់នោះទេ។

ផលប៉ះពាល់: ការផ្ទៀងផ្ទាត់ការចាប់ដៃបរាជ័យ លុះត្រាតែវាត្រូវបានរំលងយ៉ាងច្បាស់លាស់ ដែលមានគ្រោះថ្នាក់ក្នុងការផលិត។ នេះជារឿងធម្មតានៅក្នុងការហៅ API ខាងក្នុង ការដំឡើងការធ្វើតេស្តក្នុងស្រុក ឬបរិស្ថានអភិវឌ្ឍន៍ដែលត្រូវបានកំណត់រចនាសម្ព័ន្ធមិនត្រឹមត្រូវ។

ខ្សែសង្វាក់វិញ្ញាបនបត្រមិនពេញលេញចំនួន ៤

ឧទាហរណ៍៖ វិញ្ញាបនបត្រ​រៀបចំ​ដំណាក់កាល​បាត់ 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 </dev/null

				
			

វាផ្តល់ឱ្យអ្នកនូវប្រតិចារិក TLS handshake ពេញលេញ ពិធីការ លេខសម្ងាត់ ខ្សែសង្វាក់វិញ្ញាបនបត្រ និងកំហុសសុពលភាពណាមួយ។

រកមើល:

  • ផ្ទៀងផ្ទាត់កំហុស សារ
  • កំណែពិធីការ TLS ចាស់ៗ
  • សារធាតុ​ផ្សំ​ដែល​បាត់​ក្នុង​ខ្សែសង្វាក់

ការផ្លាស់ប្តូរទៅស្វ័យប្រវត្តិកម្ម៖

នៅពេលដែលអ្នកអាចញែកមូលហេតុដើមបាន ជំហានបន្ទាប់គឺធ្វើឱ្យការត្រួតពិនិត្យទាំងនេះដោយស្វ័យប្រវត្តិ។ ការធ្វើរោគវិនិច្ឆ័យដោយដៃគឺល្អម្តង ប៉ុន្តែបើគ្មានស្វ័យប្រវត្តិទេ អ្នកនឹងឃើញដូចគ្នា។ កំហុស SSL នៅផ្សេងទៀត pipeline សប្តាហ៍ក្រោយ។

ការធ្វើស្វ័យប្រវត្តិកម្មការត្រួតពិនិត្យ TLS ជាសុវត្ថិភាព Guardrails

អ្នកអាចបង្កប់ការត្រួតពិនិត្យ TLS ទៅក្នុងរបស់អ្នក CI/CD ដូច្នេះការកំណត់រចនាសម្ព័ន្ធមិនល្អបរាជ័យមុនអាយុ៖

  • ជូនដំណឹងប្រសិនបើវិញ្ញាបនបត្រផុតកំណត់ក្នុងរយៈពេលតិចជាង 30 ថ្ងៃ
  • រារាំង​លេខ​កូដ​ខ្សោយ និង​កំណែ TLS ដែល​លែង​ប្រើ
  • តម្រូវឱ្យមានខ្សែសង្វាក់វិញ្ញាបនបត្រពេញលេញ

ឧទាហរណ៍របងការពារ៖

				
					bash
if openssl s_client -connect $HOST:$PORT </dev/null 2>/dev/null | grep -q "Protocol  : TLSv1"; then
  echo "❌ Weak protocol detected"
  exit 1
fi

				
			

គន្លឹះ៖ ដំណើរការវានៅដំណាក់កាលមុនពេលដាក់ពង្រាយ ដើម្បីឱ្យអ្នកចាប់បញ្ហាមុនពេលបញ្ចូលកូដ។

ការទប់ស្កាត់ការភ្ញាក់ផ្អើល TLS នៅក្នុងផលិតកម្ម

បញ្ហា TLS មិនត្រឹមតែកើតឡើងក្នុងអំឡុងពេលដាក់ពង្រាយនោះទេ។ វិញ្ញាបនបត្រផុតកំណត់នៅពេលណាក៏បាន។ នោះហើយជាមូលហេតុដែលការត្រួតពិនិត្យជាបន្តបន្ទាប់គឺ... សំខាន់នៅក្នុង DevSecOps។

ឧទាហរណ៍នៃការត្រួតពិនិត្យតាមកាលវិភាគជាមួយ GitHub Actions៖

				
					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"

				
			

អ្នកអាចសម្របវាទៅនឹងការងារ cron, Jenkins ឬ Kubernetes CronJobs ដើម្បីស្កេនចំណុចបញ្ចប់ជាបន្តបន្ទាប់សម្រាប់បញ្ហាសុវត្ថិភាព TLS។

ហានិភ័យ AppSec ពិតប្រាកដពី TLS ដែលខូច

ការកំណត់រចនាសម្ព័ន្ធ TLS ដែលខូចមិនមែនគ្រាន់តែជាបញ្ហាបង្កើតនោះទេ។ ពួកវាជាកាតព្វកិច្ចសុវត្ថិភាព៖

  • ការវាយប្រហាររបស់ MITM ប្រសិនបើការអ៊ិនគ្រីបខ្សោយ ឬបាត់
  • បន្ទាបការវាយប្រហារ ប្រសិនបើពិធីការចាស់ៗត្រូវបានអនុញ្ញាត
  • ហានិភ័យនៃខ្សែសង្វាក់ផ្គត់ផ្គង់ ប្រសិនបើការទាញយកកញ្ចប់កើតឡើងលើការតភ្ជាប់ដែលមិនមានសុវត្ថិភាព

ដាក់វាទាំងអស់រួមគ្នាជាមួយ Guardrails

សូមគិតអំពីដំណើរការនេះដូចខាងក្រោម៖ ធ្វើរោគវិនិច្ឆ័យ → ស្វ័យប្រវត្តិកម្ម → អនុវត្ត.

ហេតុអ្វី Guardrails រឿងរ៉ាវ: In CI/CD, guardrails បញ្ឈប់ការកំណត់រចនាសម្ព័ន្ធ TLS ដែលមិនមានសុវត្ថិភាពមុនពេលពួកវាចាប់ផ្តើមដំណើរការ។ ពួកវាអាចរារាំងការដាក់ពង្រាយបានប្រសិនបើ៖

  • វិញ្ញាបនបត្រមួយជិតផុតកំណត់ហើយ
  • កូដសម្ងាត់ខ្សោយត្រូវបានបើក
  • ពិធីការហួសសម័យត្រូវបានប្រើ

ឧទាហរណ៍៖ នៅក្នុង GitLab CI ការងារមួយនឹងបរាជ័យភ្លាមៗ ប្រសិនបើចំណុចបញ្ចប់ឆ្លើយតបជាមួយ TLS 1.0 ដែលបង្ខំឱ្យមានការជួសជុលមុនពេលបញ្ចូលគ្នា។

ឧបករណ៍ដូចជា ស៊ីហ្គេនី អាចពង្រីកទាំងនេះ guardrails ដើម្បីស្កេនខ្សែសង្វាក់ផ្គត់ផ្គង់កម្មវិធីទាំងមូលរបស់អ្នកសម្រាប់ចន្លោះប្រហោងសុវត្ថិភាព TLS។

ការប្រើប្រាស់ OpenSSL s_client One-Liners ងាយស្រួលសម្រាប់ CI

ពិនិត្យមើលកាលបរិច្ឆេទផុតកំណត់៖

				
					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 គឺលើសពីពាក្យបញ្ជាដោះស្រាយបញ្ហាទៅទៀត។ វាជាឧបករណ៍ DevSecOps សម្រាប់សុវត្ថិភាព TLS ប្រកបដោយភាពសកម្ម។ ប្រើវាដើម្បីចាប់កំហុស SSL មុនពេលវាបំបែកការបង្កើតរបស់អ្នក ហើយធ្វើវាដោយស្វ័យប្រវត្តិ ដូច្នេះអ្នកមិនដែលភ្ញាក់ផ្អើលចំពោះការផុតកំណត់នៃវិញ្ញាបនបត្រ ឬការអ៊ិនគ្រីបខ្សោយម្តងទៀតឡើយ។

ឧបករណ៍វិភាគសមាសភាពកម្មវិធី sca
ផ្តល់អាទិភាព ដោះស្រាយ និងធានាសុវត្ថិភាពហានិភ័យផ្នែកទន់របស់អ្នក
ទទួលបានគណនីឥតគិតថ្លៃរបស់អ្នក។
មិនតម្រូវឱ្យមានកាតឥណទានទេ។

ធានាសុវត្ថិភាពនៃការអភិវឌ្ឍន៍ និងការដឹកជញ្ជូនកម្មវិធីរបស់អ្នក

ជាមួយឈុតផលិតផល Xygeni