Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-46595-proof — إثبات مفهوم بلغة Go يوضح CVE-2026-46595 في golang.org/x/crypto/ssh، باستخدام فحص الرموز للثنائيات المجردة وفحوصات الصور للتحقق من استخدام NewServerConn القابل للاستغلال. | Kitploit
أدوات/GitHubGitHub/sdodson/cve-2026-46595-proof
التحليل الثابتماسحات الثغرات الأمنيةأمن الحاوياتتحليل الثغرات الأمنيةتحليل الكودتحليل الملفات الثنائيةأمن سلسلة التوريد
GitHubsdodson/cve-2026-46595-proof

CVE-2026-46595-proof

إثبات مفهوم بلغة Go يوضح CVE-2026-46595 في golang.org/x/crypto/ssh، باستخدام فحص الرموز للثنائيات المجردة وفحوصات الصور للتحقق من استخدام NewServerConn القابل للاستغلال.

عرض المستودع
1منذ 2 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

إثبات CVE-2026-46595

https://www.cve.org/CVERecord?id=CVE-2026-46595 هو https://pkg.go.dev/vuln/GO-2026-5023 ثغرة أمنية في رمز golang.org/x/crypto/ssh NewServerConn كما هو موضح في الرابط الثاني.

يحتوي هذا المستودع على برنامج بسيط يوضح فحصاً إيجابياً للثغرة الأمنية.

خادم golang.org/x/crypto/ssh بسيط مثبّت على x/crypto v0.51.0 (< v0.52.0)، يُستخدم لإثبات أن go tool nm على الملفات التنفيذية غير المُجرَّدة يوفر كلاً من الفحص الإيجابي والسلبي

البناء والفحص

root@kitploit:~
go mod tidy
go build ./...

بما أننا نعرف الرمز المصاب، نفحصه. حالياً هو ملف تنفيذي غير مُجرَّد لكننا سنجرّده لإزالة جداول الرموز وإثبات أن الرمز المصاب يبقى في المخرجات.

root@kitploit:~
file cve-2026-46595-proof
cve-2026-46595-proof: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=kUaZmGWICI6Buw0K_I7t/L4jXRd3fy2BJy8zNlSYd/lB1_6wYHZLaOLsG0tE26/-FieQlhThdl7AkRj7rl0, BuildID[sha1]=c7ac1dd881dfcaef88a2dd180a8ccb3c5e751e32, with debug_info, not stripped

strings cve-2026-46595-proof | grep golang.org/x/crypto/ssh.NewServerConn
golang.org/x/crypto/ssh.NewServerConn

# ok, now strip it and repeat
strip cve-2026-46595-proof
file cve-2026-46595-proof 
cve-2026-46595-proof: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, Go BuildID=kUaZmGWICI6Buw0K_I7t/L4jXRd3fy2BJy8zNlSYd/lB1_6wYHZLaOLsG0tE26/-FieQlhThdl7AkRj7rl0, BuildID[sha1]=c7ac1dd881dfcaef88a2dd180a8ccb3c5e751e32, stripped

strings cve-2026-46595-proof | grep -E 'ssh\.(Dial|NewServerConn|NewClientConn|NewControlClientConn)'
golang.org/x/crypto/ssh.NewServerConn

الآن، لنتحقق من الملفات التنفيذية المُضمَّنة في صورة حِمل OpenShift.

استخرج /usr/bin من الصورة. --only-files مطلوب، وإلا فإن oc image extract يتوقف في منتصف الطبقة عندما يصادف رابطاً رمزياً مثل /usr/bin/ld.so.

root@kitploit:~
IMG=quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:b4dde8227fb99134f71b50f0707eb7f695cfade43b017da3cbc486c2db854fe1
mkdir -p /tmp/cveimg
oc image extract "$IMG" --path /usr/bin/:/tmp/cveimg/ --only-files
ls -laS /tmp/cveimg | head

بالنسبة لهذا البصمة، هذه هي صورة cluster-config-operator الخاصة بـ 4.21:

root@kitploit:~
-rw-r-----. 1 sdodson sdodson 117899168 Feb 24  2026 cluster-config-operator
-rw-r-----. 1 sdodson sdodson  10639741 Feb 24  2026 cluster-config-operator-tests-ext.gz

لنرَ أي إصدار من x/crypto تم البناء مقابله:

root@kitploit:~
$ go version -m /tmp/cveimg/cluster-config-operator | grep -E 'go1|x/crypto'
/tmp/cveimg/cluster-config-operator: go1.24.13 (Red Hat 1.24.13-1.el9_6) X:strictfipsruntime
	dep	golang.org/x/crypto	v0.40.0

الإصدار v0.40.0 أقل من كل إصدار مُصلَّح، لذا تُعلِّمه فاحصات إصدار الوحدة. الآن طبّق فحص الرموز. إلى جانب GO-2026-5023 هناك ثغرات أخرى في golang.org/x/crypto تم إصلاحها في v0.55.0 وv0.56.0، لذا افحص جميع رموزها المصابة دفعة واحدة:

GO-2026-5023 => ssh.NewServerConn GO-2026-6303 => ssh.NewServerConn مرة أخرى GO-2026-6354 => ssh.Dial ssh.NewClientConn ssh.NewControlClientConn ssh.NewServerConn GO-2026-6355 => ssh.Dial ssh.NewClientConn ssh.NewControlClientConn ssh.NewServerConn

الملف التنفيذي tests-ext يُشحن مضغوطاً بـ gzip، لذا فُكّ ضغطه أولاً وافحص كليهما:

root@kitploit:~
gzip -dc /tmp/cveimg/cluster-config-operator-tests-ext.gz > /tmp/cveimg/cluster-config-operator-tests-ext
strings /tmp/cveimg/cluster-config-operator{,-tests-ext} \
  | grep -E 'ssh\.(Dial|NewServerConn|NewClientConn|NewControlClientConn)'

لا مخرجات، رائع لا توجد ثغرة! تحقق من أن grep ليس صامتاً للسبب الممل المتمثل في عدم وجود رموز للمطابقة:

root@kitploit:~
$ go tool nm /tmp/cveimg/cluster-config-operator | wc -l
150240
$ go tool nm /tmp/cveimg/cluster-config-operator | grep -c golang.org/x/crypto/ssh
0
$ go tool nm /tmp/cveimg/cluster-config-operator-tests-ext | wc -l
24607
$ go tool nm /tmp/cveimg/cluster-config-operator-tests-ext | grep -c golang.org/x/crypto
39

إذن x/crypto مرتبط فعلاً، لكن الرابط أسقط كل x/crypto/ssh لأن لا شيء يصل إليه.

يجب أن يكون هذا قابلاً للتكرار عبر صور الحِمل الأخرى؛ الاختلاف الوحيد لكل صورة هو مكان وجود الملفات التنفيذية وما إذا كانت مضغوطة مثل -tests-ext.gz أعلاه.

لاحظ أن الملفات التنفيذية للاختبارات مثل *-tests-ext تُشحن في الصور رغم أنها ليست على أي مسار تنفيذ. وحيث أنها تجلب x/crypto/ssh (فإن k8s-tests-ext الخاص بـ kubernetes يربط ssh.NewClientConn لمساعدات SSH الخاصة باختباراته الشاملة) فإنها لا تزال خارج مسار تنفيذ المكوّن قيد التشغيل. بغض النظر عن ذلك سنعمل على إزالة الملفات التنفيذية للاختبارات من الصور لأنها تجعلها أكبر وتُبطئ أشياء مثل سحب الصور.

ما يلي تم إنشاؤه بواسطة Claude عند إنشاء الملفات التنفيذية لحالة الاختبار الإيجابية، ليس ضرورياً للإثبات لكنني تركته.

تشغيل الخادم

هذا ليس ضرورياً لإثبات وجود الثغرة الأمنية، ما سبق يوضح ذلك بالفعل لكن لا تتردد في القيام بذلك أيضاً.

root@kitploit:~
go run . -addr 127.0.0.1:2222 -user demo -password demo

ثم، في طرفية أخرى:

root@kitploit:~
ssh -p 2222 -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null [email protected]

كلمة المرور هي demo. تطبع الجلسة تحية وتعيد صدى المدخلات. يتم إنشاء مفتاح مضيف ed25519 جديد عند كل تشغيل، لذا لا يُكتب شيء على القرص.

النتيجة المتوقعة

عند v0.51.0، يُبلِّغ govulncheck عن 10 ثغرات قابلة للوصول في golang.org/x/crypto/ssh، جميعها متتبَّعة عبر main.go → ssh.NewServerConn (كما يتتبع GO-2026-5018 عبر ssh.NewSignerFromKey).

تأكيد الإصلاح

root@kitploit:~
go get golang.org/x/[email protected]
go mod tidy
govulncheck ./...

يزيل v0.52.0 معظمها، لكن ثلاثاً منها تحتاج إصدارات أحدث: GO-2026-6303 مُصلَّح في v0.55.0، وGO-2026-6354 / GO-2026-6355 في v0.56.0. يجب أن يعود الفحص عند v0.56.0 نظيفاً.

تنزيل الأداة