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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-34038 — CVE-2026-34038: حقن أوامر عن بُعد يتطلب مصادقة في Coolify | Kitploit
أدوات/GitHubGitHub/themehackers/cve-2026-34038
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويبالأوراق والأبحاثالتعلم والتعليم
GitHubthemehackers/cve-2026-34038

CVE-2026-34038

CVE-2026-34038: حقن أوامر عن بُعد يتطلب مصادقة في Coolify

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-34038: حقن أوامر عن بُعد بعد المصادقة في Coolify

يحتوي هذا المستودع على توثيق وتحليل لثغرة CVE-2026-34038، وهي ثغرة حرجة لحقن الأوامر في Coolify.

ملخص

تتيح ثغرة حقن أوامر عن بُعد بعد المصادقة (CWE-78) في Coolify للمستخدمين الحاصلين على صلاحيات "write" على التطبيق تحقيق تنفيذ التعليمات البرمجية عن بُعد (RCE) واستخراج متغيرات بيئة حساسة (مثل بيانات اعتماد قاعدة البيانات ومفاتيح API) عبر سجلات النشر، حتى إذا كانت بيئة البناء تعزل مقبس Docker.

  • نوع الثغرة: CWE-78 (حقن أوامر نظام التشغيل)
  • الخطورة: حرجة (CVSS 10.0)
  • المتجه: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

المتطلبات الأساسية والقيود

  • الحد الأدنى من الصلاحيات المطلوبة: write (لتحديث التكوين) وread:sensitive (لقراءة البيانات المستخرجة عبر السجلات).
  • الالتفاف: توجد آلية تسمح للرموز (tokens) التي لا تملك صلاحيات deploy صريحة بتشغيل عمليات البناء.
  • سطح الهجوم: سطح الهجوم الإجمالي أكبر مما كان مقدرًا في البداية، نظرًا لعدم الحاجة إلى صلاحيات إدارية/جذرية.

التفاصيل التقنية

1. حقن dockerfile_location

الملف: app/Jobs/ApplicationDeploymentJob.php

يفتقر الإدخال إلى تهريب (escaping) صحيح لأوامر الصدفة أو إلى التحقق من صحة الإدخال، مما يسمح بحقن أوامر مباشر باستخدام المحارف الوصفية مثل ; و&& والأنابيب.

root@kitploit:~
// Lines 2976-2978: Traditional build with args
$build_command = $this->wrap_build_command_with_env_export(
    "docker build {$this->buildTarget} --network {$this->destination->network} -f {$this->workdir}{$this->dockerfile_location} {$this->build_args} --progress plain -t $this->build_image_name {$this->workdir}"
);

// Lines 526: Also used in simple dockerfile deployment
executeInDocker($this->deployment_uuid, "echo '$dockerfile_base64' | base64 -d | tee {$this->workdir}{$this->dockerfile_location} > /dev/null"),

2. تنفيذ pre_deployment_command

الملف: app/Jobs/ApplicationDeploymentJob.php (الأسطر 3882-3909)

على الرغم من إجراء تهريب أساسي، فإن الدالة تشغّل بطبيعتها أوامر صدفة أصلية، مما يجعل من الممكن تفريغ البيانات مباشرة في سجلات البناء.

root@kitploit:~
private function run_pre_deployment_command()
{
    if (empty($this->application->pre_deployment_command)) {
        return;
    }
    // ...
    $cmd = "sh -c '".str_replace("'", "'\\''", $this->application->pre_deployment_command)."'";
    $exec = "docker exec {$containerName} {$cmd}";
    $this->execute_remote_command(
        [
            'command' => $exec,
            'hidden' => true,
        ],
    );
}

المعالجة

1. تعقيم إدخال dockerfile_location (في ApplicationDeploymentJob.php):

تحقق من صحة الإدخال باستخدام تعبيرات نمطية صارمة وقم بتهريب وسيط الصدفة:

root@kitploit:~
if ($this->application->dockerfile_location) {
    if (!preg_match('/^[a-zA-Z0-9._\-\/]+$/', $this->application->dockerfile_location)) {
        throw new \RuntimeException("Invalid dockerfile_location: contains forbidden characters");
    }
    if (str_contains($this->application->dockerfile_location, '..')) {
        throw new \RuntimeException("Invalid dockerfile_location: path traversal detected");
    }
    $this->dockerfile_location = escapeshellarg($this->application->dockerfile_location);
}

2. التحقق على مستوى API (bootstrap/helpers/api.php):

root@kitploit:~
'dockerfile_location' => [
    'string',
    'nullable',
    'regex:/^[a-zA-Z0-9._\-\/]+$/',
    'max:255'
],

3. إرشادات أخرى:

  • فرض قوائم سماح (allowlists) صارمة تمنع المحارف الوصفية للصدفة.
  • إصلاح منطق الالتفاف على صلاحيات النشر.
  • تدقيق الحقول المكافئة مثل docker_compose_location.

المراجع والاعتمادات

  • المُبلِّغ / الاعتمادات: ThemeHackers
  • الإشعار الأمني الرسمي: الاستشارة الأمنية من GitHub (GHSA-qqrq-r9h4-x6wp)
تنزيل الأداة