
CakePHP 5.4.2 - عالي - عن بُعد - حقن الترويسة - SmtpTransport سطر جديد منفرد متبقٍ من GHSA-2qh5
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · cakephp-smtp-crlf
الفئة: حقن ترويسة البريد الوصول: عن بُعد
CakePHP 5.4.2 (887b641) - Cake Software Foundation
أضاف GHSA-2qh5 / CVE-2026-77634 الدالة str_replace("\r\n", '', $val) على SmtpTransport و MailTransport. هذا الاستدعاء لا يفعل شيئًا بالنسبة لـ LF أو CR المفرد. لا تزال أسماء الترويسات تُدمج دون تعقيم. يتعامل PHP mail() وبيانات SMTP DATA التي التقطناها مع LF المفرد كسطر ترويسة جديد.
إذا نسخت تطبيقات بيانات المستخدم إلى ترويسة مخصصة، يمكن للمهاجم إضافة Bcc، أو إعادة كتابة Subject، أو التسلل إلى متن الرسالة عبر إرسال LF بدلاً من CRLF. الإصلاح المُعلن لا يوقف ذلك. لا يضع cakephp/app القياسي بيانات الطلب في ترويسات مخصصة من تلقاء نفسه.
| المعرّف | لا يوجد CVE بعد |
| الفئة | حقن ترويسة البريد (بقايا LF المفرد من GHSA-2qh5) |
| الوصول | عن بُعد (مثل GHSA-2qh5: ينسخ التطبيق بيانات المستخدم إلى Message::setHeaders) |
| CWE | CWE-93 |
| CVSS | مرتفع: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| المنتج | CakePHP |
| المتأثر | 5.4.2 (887b641de9f7aba06071f98f17edcbc573cbcf63) |
| المصادقة | مثل GHSA-2qh5: ينسخ التطبيق بيانات المستخدم إلى Message::setHeaders / addHeaders |
| الترخيص | GNU Affero GPL v3.0 |
| المختبر | 127.0.0.1 فقط |
يحتاج إلى تطبيق يضع بيانات الطلب في ترويسات بريد مخصصة.
| الصلاحية | الطريقة / نقطة الوصول | مُثبت مختبريًا أو مُستنتج |
|---|---|---|
حقن سطر Bcc: إضافي (أو Cc: / To:) في كتلة ترويسة SMTP DATA | setHeaders(['X-Meta' => "ok\nBcc: [email protected]"]) ثم SmtpTransport::send | مُثبت مختبريًا. يُظهر كل من SMTP DATA و getHeadersString سطر Bcc: جديدًا. الشاهد X-Oracle: CAKEPHP-SMTP-CRLF-WITNESS |
نفس الحقن عبر MailTransport | نفس الاستدعاء في MailTransport::send | مُثبت مختبريًا على getHeadersString مع قائمة تضمين MailTransport واستدعاء الإزالة. لا يستدعي هذا المختبر PHP mail() |
| CR المفرد وكذلك LF المفرد | ok\rBcc: ... | مُثبت مختبريًا. إزالة الزوج فقط تترك \r؛ محللات الترويسات التي تقسم على CR/LF تعامله كسطر جديد |
إعادة كتابة Subject أو التسلل إلى المتن | القيمة تحتوي على \nSubject: أو \n\n | مُستنتج من نفس الدمج. حقن المختبر Bcc / X-Oracle، وليس Subject |
| مستلم إضافي في المظروف | Bcc محقون داخل DATA | مُستنتج. بعض خوادم MTAs تعيد تحليل DATA. لا يزال RCPT TO في Cake يستخدم فقط setTo / setCc / setBcc على كائن Message |
زوج \r\n ثنائي البايت | إزالة GHSA-2qh5 | مُثبت مختبريًا ومغلق. الدمج في حالة التحكم ينتج okBcc:... |
| RCE بدون مصادقة على تطبيق هيكلي | ليس هذه البقايا | مغلق |
CRLF في filename= متعدد الأجزاء | 5.4.2 يزيل بالفعل "/\r/\n | مغلق |
ثبّتت cakephp/cakephp 5.4.2 بعد GHSA-2qh5 و GHSA-fxf7 و GHSA-vjqc وملاحظة filename= في 5.4.2. ترسل اختبارات النقل فقط "line one\r\nline two" وتتوقع line oneline two.
SmtpTransport 5.4.2:
$headers = $message->getHeadersString(
[...],
"\r\n",
function (string $val): string {
return str_replace("\r\n", '', $val);
},
);
يستخدم MailTransport نفس الاستدعاء. يقوم Message::getHeadersString بتطبيق الاستدعاء على القيم، ثم ينفذ $key . ': ' . $val.
مسارات خاطئة مسجلة مسبقًا: اعتبار GHSA-2qh5 مغلقًا والمضي قدمًا؛ استدعاء PHP mail() في المختبر (الشاهد هو SMTP DATA بالإضافة إلى getHeadersString)؛ تضخيم هذا إلى RCE بدون مصادقة على تطبيق هيكلي. مسرحية: reverse shell.
python3 cakephp-smtp-crlf-Abraxas-Labs.py
أو
cd lab
./run.sh
Composer cakephp/cakephp:5.4.2 في PHP 8.3. مصرف SMTP على الاسترجاع المحلي عند 127.0.0.1:19410.
X-Meta = ok\r\nBcc: [email protected]\r\nX-Oracle: CAKEPHP-SMTP-CRLF-WITNESS. النتيجة: ترويسة واحدة X-Meta: okBcc: [email protected]: CAKEPHP-SMTP-CRLF-WITNESS.\n فقط. النتيجة: سطور Bcc: و X-Oracle: جديدة في SMTP DATA، و Smtp getHeadersString، و Mail getHeadersString.\r فقط. نفس السطور الإضافية.SUCCESS cakephp-smtp-crlf pin=5.4.2 control-crlf-stripped=yes lf-bcc=yes cr-leftover=yes how=smtp-data-bcc-line CAKEPHP-SMTP-CRLF-WITNESS
أزل أو ارفض أي \r أو \n في أسماء الترويسات وقيمها (مثل معقّم filename= في 5.4.2). غطِّ LF المفرد و CR المفرد في اختبارات النقل، وليس فقط زوج \r\n.
887b641de9f7aba06071f98f17edcbc573cbcf63)src/Mailer/Transport/SmtpTransport.php · src/Mailer/Transport/MailTransport.php · src/Mailer/Message.phpGNU Affero GPL v3.0. انظر LICENSE. مختبر استرجاع محلي فقط. لا ضمان.