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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
spark-connect-copy-local — Apache Spark 4.2.0 - عالي - عن بُعد - كتابة ملف - جلسة Connect SET copyFromLocalToFs.allowDestLocal | Kitploit
أدوات/GitHubGitHub/abraxas/spark-connect-copy-local
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبتدقيق التكوينالمحاكاة الافتراضية للأماناختبار الاختراقأمن السحابةالفريق الأحمر
GitHubabraxas/spark-connect-copy-local

spark-connect-copy-local

Apache Spark 4.2.0 - عالي - عن بُعد - كتابة ملف - جلسة Connect SET copyFromLocalToFs.allowDestLocal

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - spark-connect-copy-local

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  spark-connect-copy-local

spark-connect-copy-local

الفئة: كتابة ملفات (بقايا SPARK-58531؛ ثابتة على 4.3.0 فقط) الوصول: عن بُعد

Apache Spark 4.2.0 (32f72996) - Apache Software Foundation

لا يزال spark.sql.artifact.copyFromLocalToFs.allowDestLocal على buildConf (قابل للضبط من الجلسة) عند هذه النسخة. نقل SPARK-58531 هذا الإعداد إلى StaticSQLConf في 4.3.0. يمكن لجلسة Connect ضبط بوابة الوجهة المحلية الخاصة بالاختبار فقط، ثم يقوم copyFromLocalToFs / AddArtifacts forward_to_fs/<abs> بالكتابة فوق مسار محلي على السائق بصلاحيات Spark UID.

جلسة Connect تضبط الإعداد ثم forward_to_fs يكتب ملفات محلية على السائق. يجب أن تكون الوجهة LocalFileSystem. ليست RCE.

المعرّفلا يوجد CVE بعد (بقايا SPARK-58531)
الفئةكتابة ملفات (بقايا SPARK-58531؛ ثابتة على 4.3.0 فقط)
الوصولعن بُعد (Spark Connect Config + AddArtifacts)
CWECWE-22، CWE-732
CVSSمرتفع: 8.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H
المنتجApache Spark (ASF)
المتأثرApache Spark 4.2.0 (32f7299601108917fb01920a54e084595b7b3bf8). الإصدار 4.3.0 ثابت.
المصادقةعميل Connect قادر على ConfigRequest.SET و AddArtifacts. Connect الافتراضي بلا PSK.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1:18920 فقط

ما يمكن للمهاجم فعله

يمكن لعميل Spark Connect قادر على الوصول إلى gRPC (منفذ الربط الافتراضي 15002، بلا PSK ما لم يضبط المشغّل spark.connect.authenticate.token) أن يقلب بوابة اختبارية بدأ بها السائق إلى وضع الإيقاف، ثم يكتب فوق مسار محلي مختار على السائق بصلاحيات Spark UID.

الطريقةالهدفالصلاحية
gRPC Config SET spark.sql.artifact.copyFromLocalToFs.allowDestLocal=true (أو SQL SET)SparkConnectConfigHandler.handleSet -> RuntimeConfig.set -> SQLConf.setConfStringالسلامة (إعداد الجلسة، مُثبت مختبريًا): يقلب بوابة الوجهة المحلية لكل جلسة. لا يكتب ملفًا بحد ذاته. لا يغيّر الجلسات الأخرى. المختبر: SET HTTP 200، modifiable=True.
gRPC AddArtifacts باسم forward_to_fs + وجهة مطلقة، CRC سليمArtifactManager.uploadArtifactToFs -> LocalFileSystem.copyFromLocalFile(delSrc=false, overwrite=true)السلامة (الكتابة فوق ملف، مُثبت مختبريًا): كتابة/كتابة فوق مسار محلي على السائق بصلاحيات Spark UID، خارج artifactRootDirectory/<sessionUUID>/. المختبر: الوجهة /oracle/SPARK-CONNECT-COPY-LOCAL-WITNESS، uid 185، المحتوى WITNESS.
نفس AddArtifacts إلى وجهة HDFS/S3/ABFScopyFromLocalToFs الموثّقالسلامة (نظام ملفات العنقود، بحكم التصميم): ليست هذه البقايا. الوجهة التي ليست LocalFileSystem لا تتحقق من علم الاختبار أبدًا.

مُثبت مختبريًا مقابل مُستنتج: ضبط الجلسة لمفتاح buildConf، ثم الكتابة إلى وجهة LocalFileSystem بصلاحيات uid 185 خارج صندوق حماية الـ artifacts، مُثبت مختبريًا. الكتابة فوق مسار بصلاحيات Spark UID يمكن للعملية الكتابة إليه (دليل عمل السائق، مجلد قابل للكتابة للجميع، سكربت قابل للتنفيذ يشغّله المشغّل لاحقًا) مُستنتج. لا تحكّم بـ RIP. لا تضخّم كتابة الملفات إلى RCE.

يتطلب: Spark Connect في وضع الاستماع. عميل قادر على SET لإعداد SQL للجلسة و AddArtifacts. يجب أن تكون الوجهة Hadoop LocalFileSystem. Connect الافتراضي بلا PSK؛ إذا ضبط المشغّل رمزًا، فلا تزال البقايا تحتاج ذلك الـ Bearer المشترك. إنها تجاوز لضبط الوجهة المحلية، وليست تجاوزًا لـ PSK.

سطح مجاور يبقى مغلقًا

السطحالمختبر
النسخ بدون SET400 _LEGACY_ERROR_TEMP_3161، الوجهة غائبة
SET للمفتاح الثابت القديم spark.connect.copyFromLocalToFs.allowDestLocal400 CANNOT_MODIFY_STATIC_CONFIG
اسم الـ artifact .. / staging مطلق (ArtifactUtils.concatenatePaths)INVALID_ARTIFACT_PATH
artifacts غير forward_to_fsتبقى تحت artifactRootDirectory/<sessionUUID>/
وجهة HDFS/سحابية بدون العلمAPI موثّق، وليست هذه البقايا
SQL غير مُصادق / Python UDF / Scala UdfPacket على Connect مفتوحإرسال مهمة وفق أسئلة المورّد الشائعة؛ DROP
SPARK-52122 ML DefaultParamsReaderقائمة سماح + safeMLClassLoader عند هذه النسخة

لا shell. لا heap dump. لا تجاوز لـ Connect PSK. لا تزال الوجهة يجب أن تكون LocalFileSystem. الكتابة بصلاحيات Spark UID، وليست بصلاحيات root.

كيف وجدته

يرفض uploadArtifactToFs وجهة LocalFileSystem ما لم يكن علم الاختبار مفعّلًا، مع تعليق صريح بأنه بخلاف ذلك يكتب المستخدم فوق ملف عشوائي على السائق:

if (fs.isInstanceOf[LocalFileSystem]) {
  val allowDestLocalConf =
    session.sessionState.conf.getConf(SQLConf.ARTIFACT_COPY_FROM_LOCAL_TO_FS_ALLOW_DEST_LOCAL)
      .getOrElse(
        session.conf.get("spark.connect.copyFromLocalToFs.allowDestLocal").contains("true"))
  if (!allowDestLocalConf) {
    throw new SparkUnsupportedOperationException("_LEGACY_ERROR_TEMP_3161")
  }
}
fs.copyFromLocalFile(false, true, new FSPath(localPath.toString), destFSPath)

مفتاح 3.5 ثابت، والافتراضي false. بديل 4.0 هو buildConf اختياري:

val ARTIFACT_COPY_FROM_LOCAL_TO_FS_ALLOW_DEST_LOCAL =
  buildConf("spark.sql.artifact.copyFromLocalToFs.allowDestLocal")
    .internal()
    ...
    .booleanConf
    .createOptional

لا يستدعي buildConf الدالة registerStaticConfigKey. وisModifiable تساوي containsConfigKey && !isStaticConfigKey. وRuntimeConfig.set يرفض المفاتيح الثابتة فقط. يبقى Internal قابلًا للضبط. بعد SET، تُرجع getConf(ARTIFACT_...) القيمة Some(true) ويُتخطّى الرجوع الاحتياطي getOrElse إلى الإعداد الثابت القديم.

تم حل SPARK-58531 / PR 57730 "Convert spark.sql.artifact.copyFromLocalToFs.allowDestLocal to a static conf" في 2026-08-05، إصدار الإصلاح 4.3.0. JIRA: الإعداد "يتحكم فيما إذا كان بإمكان المستدعي الكتابة إلى مسار عشوائي على نظام الملفات المحلي للسائق، لذا يُقصد به أن يضبطه من يشغّل السائق." الإصدار 4.2.0 مُدرج ضمن المتأثرين. لا تزال هذه النسخة تحتوي على إعداد وقت التشغيل.

المنعطفات الخاطئة المسجّلة مسبقًا: التعامل مع Connect SQL كاكتشاف (الأسئلة الشائعة)؛ SET للمفتاح الثابت القديم (CANNOT_MODIFY_STATIC_CONFIG)؛ الادعاء بأن وجهة Unix مطلقة تتجاهل الأصل (فهي تُدمج تحت الجذر)؛ تضخيم كتابة الملفات إلى RCE؛ تثبيت 4.3.0 RC لأن الـ JIRA محلول.

المختبر

cd lab
./run.sh

Loopback 127.0.0.1:18920. أداة استغلال بوابة إعداد الجلسة ونسخ وجهة LocalFileSystem (النسخة v4.2.0 32f72996). UID الخادم 185. ضبط التحكم بدون SET: 400 _LEGACY_ERROR_TEMP_3161، الوجهة غائبة. ضبط التحكم للمفتاح الثابت القديم: CANNOT_MODIFY_STATIC_CONFIG. ضبط الجلسة لمفتاح buildConf ثم النسخ: الوجهة /oracle/SPARK-CONNECT-COPY-LOCAL-WITNESS خارج /opt/spark/work/artifacts/<sessionUUID>/، uid 185، المحتوى WITNESS.

تنزيل الأداة