
Sean's Surf & Skate Co. — واجهة متجر Spring Boot مع تبعية SnakeYAML الضعيفة (CVE-2022-1471) للعروض التوضيحية لـ Seal Security
متجر إلكتروني صغير ولكنه واقعي المظهر ("Sean's Surf & Skate Co.") مبني باستخدام Spring Boot. يأتي مع تبعيات مفتوحة المصدر معروفة الثغرات بحيث يمكن استخدامه لعرض كيفية قيام Seal Security بإصلاح CVEs باستخدام تصحيحات "مختومة" مستعادة — بدون ترقية أي نسخة حزمة واحدة.
يشغل نموذج الاشتراك في النشرة الإخبارية / "تنبيهات الصفقات" في المتجر القيمة المدخلة عبر Yaml.load() من SnakeYAML:
Yaml yaml = new Yaml();
Object parsed = yaml.load(name); // untrusted input
org.yaml:snakeyaml:1.33 معرض لـ CVE-2022-1471 (إنشاء كائنات عشوائية على إدخال غير موثوق). لصق حمولة SnakeYAML مصممة في حقل الاشتراك يؤدي إلى تنفيذ تعليمات برمجية عن بُعد واستبدال المتجر بصفحة "لقد تم اختراقك". توجد حمولة الاستغلال في المستودع المصاحب yaml-payload.
كما يثبت pom.xml عدة مكتبات أخرى معرضة للثغرات عمدًا (jackson-databind, commons-text / Text4Shell, log4j-core / Log4Shell, spring-core, وغيرها) بحيث يضيء الفحص بنتائج حقيقية.
mvn clean package
java -jar target/seans-surf-and-skate-1.0.0.jar
# open http://localhost:8080
للوصول إليه من متصفح عبر URL عام (مثلًا لعرض توضيحي مسجل)، اعرض المنفذ 8080 باستخدام ngrok: ngrok http 8080.
هذا المستودع ملتزم بحالته المعرضة للثغرات قبل الإصلاح عن قصد — لا توجد خطوة Seal في CI بعد. في العرض التوضيحي، يفتح تكامل GitHub الخاص بـ Seal طلب سحب يضيف سير عمل الإصلاح؛ بمجرد دمجه (وتعيين SEAL_TOKEN كسر Actions)، يطبق البناء تصحيحات مختومة (مثل snakeyaml 1.33 → 1.33+sp1) وقت البناء. نفس الإصدارات ظاهريًا، نفس الاختبارات الناجحة — اختفت CVEs.
| السر | الغرض |
|---|---|
SEAL_TOKEN | رمز الوصول إلى خادم القطع / CLI الخاص بـ Seal (الإنتاج) |
NGROK_TOKEN | رمز ngrok المصادق، لكشف التطبيق الجاري من CI |
NGROK_DOMAIN | نطاق ngrok المحجوز لديك (مثل your-name.ngrok-free.dev) |