
ماسح Python خفيف الوزن لثغرة CVE-2023-48795 — ثغرة Terrapin لاقتطاع البادئة في بروتوكول SSH.
Terrapin هي ثغرة على مستوى البروتوكول في SSH تتيح لمهاجم يقوم بهجوم رجل-في-الوسط (MitM) نشط اقتطاع معلومات الامتدادات المُتفاوَض عليها، مما يخفض من أمان الاتصال — والأخطر أنها تعطّل
ext-info(المستخدم في خوارزميات توقيع الخادم) وping(المستخدم بواسطة امتدادno-authالخاص بـ OpenSSH).
| الحقل | التفاصيل |
|---|---|
| CVE | CVE-2023-48795 |
| CVSS | 5.9 (متوسطة) |
| النوع | بروتوكول SSH — اقتطاع البادئة / تجاوز سلامة البيانات |
| الإفصاح | ديسمبر 2023 |
| المتأثّر | OpenSSH < 9.6، PuTTY < 0.80، libssh < 0.10.6، وغيرها الكثير |
| المراجع | terrapin-attack.com |
توجد هذه الثغرة لأن بعض توليفات خوارزميات التشفير وMAC في SSH — وتحديدًا chacha20-poly1305 وخوارزميات التشفير بنمط CBC مع آلية Encrypt-then-MAC — تتيح لمهاجم MitM نشط حقن أرقام تسلسل SSH وإزالتها أثناء المصافحة، ليقوم باقتصاص بيانات الامتدادات المُتفاوَض عليها دون أن يُكتشف ذلك.
أضاف الإصلاح امتداد KEX صارمًا (kex-strict-*[email protected]) يجب على كلٍّ من العميل والخادم الإعلان عنه ليكون الاتصال محصّنًا.
ينفذ السكريبت التقاطًا سلبيًا للبانر وتحليلًا لحزمة KEXINIT فقط — دون مصافحة SSH كاملة، ودون مصادقة، ودون استغلال:
SSH_MSG_KEXINIT الخاصة بالخادم ويحللهاولأن الفحص يتم بالكامل ضمن مرحلة تبادل المفاتيح، فهو غير تطفلي ولا يترك أثرًا يُذكر بما يتجاوز محاولة اتصال TCP عادية.
socket, struct, argparse, concurrent.futures)git clone https://github.com/Mr-Whiskerss/terrapin_check
cd terrapin_check
chmod +x terrapin_check.py
python3 terrapin_check.py <host> [port]
python3 terrapin_check.py 192.168.1.10
python3 terrapin_check.py 192.168.1.10 2222
هدف واحد في كل سطر — يقبل صيغة host أو host:port.
python3 terrapin_check.py -f targets.txt
python3 terrapin_check.py -f targets.txt --threads 20 --timeout 3
python3 terrapin_check.py -f targets.txt --summary
usage: terrapin_check.py [-h] [-f FILE] [-p PORT] [--threads THREADS] [--timeout TIMEOUT] [--summary] [host] [port]
positional arguments:
host Target host
port SSH port (default: 22)
options:
-h, --help Show this help message and exit
-f, --file FILE File containing hosts (host or host:port per line)
-p, --port-flag PORT Default port when using -f (default: 22)
--threads THREADS Concurrent threads for bulk scan (default: 10)
--timeout TIMEOUT Socket timeout in seconds (default: 5.0)
--summary Print one-line summary per host only
| الكود | المعنى |
|---|---|
0 | لم يُعثر على أي مضيف معرّض للثغرة |
1 | تم اكتشاف مضيف واحد أو أكثر معرّضين للثغرة |
يتيح ذلك استخدام السكريبت بسلاسة في خطوط الأنابيب وسير العمل المؤتمت.
────────────────────────────────────────────────────────────
Target : 192.168.1.10:22
Banner : SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.6
Status : VULNERABLE
Strict-KEX : No
✗ ChaCha20-Poly1305 advertised → prefix-truncation possible
✗ CBC+ETM combination advertised
CBC ciphers : aes128-cbc, aes256-cbc
ETM MACs : [email protected], [email protected]
KEX algorithms:
curve25519-sha256
ecdh-sha2-nistp256
diffie-hellman-group14-sha256
────────────────────────────────────────────────────────────
[VULN] 192.168.1.10:22 VULNERABLE (CVE-2023-48795)
[SAFE] 192.168.1.20:22 Not vulnerable
[MIT] 192.168.1.30:22 Algorithms present but strict-KEX mitigates
[?] 192.168.1.99:22 ERROR: Connection refused
يصنّف السكريبت المضيف على أنه VULNERABLE إذا تحقق أيٌّ من الشرطين التاليين ولم يتم الإعلان عن امتداد strict-KEX:
يعرض الخادم [email protected] في أيٍّ من اتجاهي التشفير.
يعرض الخادم أي خوارزمية تشفير بنمط CBC مع أي MAC من نوع ETM معًا:
خوارزميات CBC التي يتم فحصها:
aes128-cbc, aes192-cbc, aes256-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, idea-cbc, arcfour, arcfour128, arcfour256, [email protected]
خوارزميات ETM MAC التي يتم فحصها:
[email protected], [email protected], [email protected], [email protected], ومتغيرات أخرى
إذا عرض الخادم [email protected] في قائمة خوارزميات KEX الخاصة به، فإن الاتصال يكون محميًا بغض النظر عن خوارزميات التشفير وMAC المعروضة. وسيُبلغ السكريبت بالحالة MITIGATED بدلًا من VULNERABLE في هذه الحالة.
| الإجراء |
|---|
# /etc/ssh/sshd_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected]
MACs hmac-sha2-256,hmac-sha2-512
إزالة الخوارزميات تقلل من مرونة التشفير (cipher agility). الترقية تظل دائمًا المعالجة المفضّلة.
هذه الأداة مخصّصة لفحوصات الأمان المصرّح بها فقط. لا تستخدمها إلا ضد أنظمة تملكها أو لديك إذن كتابي صريح لاختبارها. لا يتحمّل المؤلف أي مسؤولية عن إساءة الاستخدام.
جزء من حزمة أدوات اختبار الاختراق Mr-Whiskerss.
| التفاصيل |
|---|
| ترقية OpenSSH | قم بالترقية إلى ≥ 9.6 على كلٍّ من العميل والخادم. خاصية Strict KEX مُفعّلة افتراضيًا. |
| تصحيح التطبيقات الأخرى | PuTTY ≥ 0.80، libssh ≥ 0.10.6، Paramiko ≥ 3.4.0، AsyncSSH ≥ 2.14.2 |
| إزالة الخوارزميات المعرّضة | إذا لم تكن الترقية ممكنة فورًا، أزل chacha20-poly1305 وخوارزميات CBC + ETM MAC من sshd_config: |