
إثبات مفهوم يوضح ثغرة حقن SQL CVE-2025-24793 في موصل Snowflake لـ Python، مع الكشف التلقائي عن الإصدارات المصححة/غير المصححة لاختبار الأمان.
يحتوي هذا المستودع على كود إثبات المفهوم (PoC) لاختبار ثغرة CVE-2025-24793 في موصل Snowflake للغة Python. يتضمن المشروع كلاً من الإصدارين المُصحح وغير المُصحح لإظهار الثغرة وإصلاحها.
├── Dockerfile # إعدادات Docker
├── requirements.txt # تبعيات Python
├── config.toml # إعدادات الاتصال بـ Snowflake (تحتاج إلى إنشائه)
├── cve_2025_24793_poc.py # سكربت PoC الرئيسي (يكتشف تلقائيًا المُصحح/غير المُصحح)
├── snowflake_app.py # التطبيق الرئيسي
└── snowflake_connector_python-2.9.0-py3-none-any.whl # ملف wheel الخاص بموصل Snowflake
ببساطة استبدل snowflake_connector_python-2.9.0-py3-none-any.whl بالبناء الخاص بك:
سيكتشف سكربت PoC تلقائيًا الإصدار الذي تستخدمه.
إنشاء حساب Snowflake:
abc123.us-east-1)إنشاء ملف config.toml:
أنشئ ملف config.toml في الدليل الجذر مع بيانات اعتماد Snowflake الخاصة بك:
[connections.my_example_connection]
account = "your_account_identifier" # على سبيل المثال، "abc123.us-east-1"
user = "your_username" # اسم المستخدم الخاص بك في Snowflake
password = "your_password" # كلمة المرور الخاصة بك في Snowflake
role = "your_role" # على سبيل المثال، "ACCOUNTADMIN" أو "SYSADMIN"
warehouse = "your_warehouse" # على سبيل المثال، "COMPUTE_WH"
database = "your_database" # على سبيل المثال، "TESTDB"
schema = "your_schema" # على سبيل المثال، "PUBLIC"
مثال على الإعدادات:
[connections.my_example_connection]
account = "abc123.us-east-1"
user = "testuser"
password = "MySecurePassword123!"
role = "ACCOUNTADMIN"
warehouse = "COMPUTE_WH"
database = "TESTDB"
schema = "PUBLIC"
بناء صورة Docker:
docker build -t <container_name> .
تشغيل حاوية Docker:
docker run --rm <container_name>
الاختبار مع أي بناء:
# 1. استبدل ملف wheel بإصدارك المُصحح أو غير المُصحح
# 2. قم بالبناء والتشغيل - سيكتشف السكربت الإصدار تلقائيًا
docker build -t snowflake-test .
docker run --rm snowflake-test
سيقوم إثبات المفهوم تلقائيًا بـ:
تؤثر هذه الثغرة على موصل Snowflake للغة Python وتتضمن حقن SQL عبر دالة write_pandas.
يكتشف سكربت PoC تلقائيًا ويوضح:
يفحص السكربت دالة write_pandas لتحديد ما إذا كانت المعلمة القابلة للثغرة stage_location موجودة، مما يوفر ملاحظات واضحة حول الحالة الأمنية.
⚠️ تحذير أمني: هذا إثبات مفهوم لأغراض تعليمية واختبارية فقط. لا تستخدمه في بيئات الإنتاج.
⚠️ أمان الإعدادات: لا تقم أبدًا بإرسال ملف config.toml الخاص بك مع بيانات اعتماد حقيقية إلى نظام التحكم بالإصدارات. أضفه إلى .gitignore.
⚠️ تكاليف Snowflake: كن على علم بأن تشغيل هذه الاختبارات قد يستهلك وحدات حوسبة من Snowflake.
config.tomlrequirements.txt