אם מעולם לא שמעתם על XML-RPC, אתם לא לבד. רוב בעלי אתרי וורדפרס לא יודעים שהקובץ הזה בכלל קיים, ובוודאי שלא יודעים שהוא יושב בשקט על השרת שלהם כמו דלת פתוחה לתוקפים. ובכל זאת, זה אחד הקבצים הכי מנוצלים לרעה בוורדפרס, וביטול שלו לוקח בערך חמש דקות.
בואו נדבר על מה ש-XML-RPC בעצם עושה, למה הוא מהווה סיכון אבטחתי לרוב האתרים, ואיך בדיוק לכבות אותו בבטחה.
מה זה XML-RPC בוורדפרס?
XML-RPC הוא קובץ (xmlrpc.php) שמאפשר לאפליקציות חיצוניות לתקשר עם אתר הוורדפרס שלכם דרך HTTP. הוא נבנה לפני שנים רבות, עוד לפני שלוורדפרס היה REST API מודרני, כדי לתמוך בדברים כמו:
- פרסום פוסטים לבלוג מאפליקציית מובייל
- שימוש בתוכנות בלוגים לשולחן העבודה כמו MarsEdit הישן או Windows Live Writer
- הפעלת פינגבקים וטרקבקים בין אתרי וורדפרס
- חיבור שירותי צד שלישי כמו Jetpack לאתר שלכם
נשמע שימושי, נכון? הבעיה היא שכמעט אף אחד כבר לא משתמש בכלים הישנים האלה. לוורדפרס יש כיום REST API מלא שמטפל ברוב המשימות האלה בצורה טובה ובטוחה יותר. אבל xmlrpc.php עדיין מופעל כברירת מחדל כמעט בכל התקנת וורדפרס, בין אם אתם צריכים אותו ובין אם לא.
למה XML-RPC מהווה בעיית אבטחה
וזה החלק החשוב. XML-RPC הוא לא רק בלתי בשימוש, הוא ממש מסוכן בגלל הדרך שבה תוקפים מנצלים אותו. הבנת הסיכון הזה היא חלק חשוב משיטות מומלצות לאבטחת וורדפרס.
מתקפות ניחוש סיסמאות הופכות לקלות יותר
בדרך כלל, מתקפת ניחוש סיסמאות נגד עמוד ההתחברות שלכם משמעה ניחוש אחד לכל בקשה. עם המתודה system.multicall של XML-RPC, תוקף יכול לארוז מאות שילובי שם משתמש וסיסמה בבקשה אחת. זה אומר שהשרת שלכם מעבד מאות ניסיונות התחברות בבת אחת, מה שהרבה יותר קשה לזהות ולחסום מאשר תעבורה רגילה. סקרנו את היסודות של סוג המתקפה הזו במאמר אבטחת התחברות בוורדפרס: שינויים פשוטים שעוצרים את רוב ניסיונות הפריצה בכוח.
הגברת מתקפות DDoS דרך פינגבקים
גם תכונת הפינגבק יכולה להפוך לנשק. תוקפים שולחים בקשה שמעמידה פנים שהאתר שלכם רוצה לשלוח פינגבק לכתובת מסוימת, והשרת שלכם עושה בשבילם את העבודה של לפנות לאותה כתובת. אם עושים את זה על פני אלפי אתרי וורדפרס פרוצים בו זמנית, מקבלים מתקפה מבוזרת שמשתמשת בהתקנות וורדפרס תמימות ככוח אדם. השרת שלכם הופך להיות משתתף לא מרצון.
רעש רקע קבוע
גם אם מתקפה לא מצליחה במלואה, הקובץ xmlrpc.php מותקף כל הזמן על ידי בוטים שסורקים את האינטרנט בחיפוש אחר דלתות פתוחות. זה יוצר עומס נוסף על השרת שלכם, ממלא את הלוגים שלכם בזבל, ונותן לתוקפים עוד שטח לבחון חולשות.
האם אתם באמת צריכים XML-RPC?
לפני שאתם מכבים אותו, בדקו אם אתם נסמכים עליו. כנראה שאתם צריכים XML-RPC אם:
- אתם משתמשים בתוסף Jetpack
- אתם מפרסמים פוסטים מאפליקציית מובייל שמשתמשת ספציפית ב-XML-RPC (נדיר בימינו, רוב האפליקציות משתמשות עכשיו ב-REST API)
- יש לכם אינטגרציה מותאמת אישית שנבנתה במיוחד כדי לקרוא ל-xmlrpc.php
אם שום דבר מזה לא רלוונטי אליכם, וברוב המקרים זה כך, אתם יכולים לבטל אותו בבטחה.
איך לבטל XML-RPC בוורדפרס
שיטה 1: שימוש בתוסף אבטחה
הדרך הכי קלה ובטוחה היא דרך תוסף שכבר יכול להיות מותקן אצלכם.
- Wordfence: לכו ל-Wordfence > All Options > Brute Force Protection, וסמנו את האפשרות לבטל אימות XML-RPC.
- iThemes Security: תחת Settings, חפשו את WordPress Tweaks וכבו את "Disable XML-RPC".
- Disable XML-RPC-API: תוסף קליל וייעודי שעושה בדיוק משימה אחת, כיבוי מלא של XML-RPC, ללא צורך בהגדרות.
אם כבר יש לכם תוסף אבטחה מותקן, זו האופציה עם הסיכון הכי נמוך כי היא לא נוגעת ישירות בקבצי השרת שלכם.
שיטה 2: עריכת .htaccess (שרתי Apache)
אם אתם מעדיפים לא להוסיף עוד תוסף, אתם יכולים לחסום גישה ברמת השרת. הוסיפו את זה לקובץ ה-.htaccess שלכם:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
</Files>
זה אומר לשרת שלכם לדחות כל בקשה לקובץ הזה עוד לפני שוורדפרס בכלל טוען אותו, מה שיעיל יותר מחסימה מבוססת תוסף.
שיטה 3: הוספת פילטר לקובץ functions.php
אם אתם נוח לכם לערוך קבצי תבנית (תמיד השתמשו בתבנית ילד, לעולם אל תערכו תבנית אב ישירות), אתם יכולים להוסיף את הקטע הזה:
add_filter('xmlrpc_enabled', '__return_false');
זה מבטל את פונקציונליות ה-XML-RPC בלי לחסום בפועל את הגישה לקובץ עצמו. זה פתרון ביניים סביר, אבל שיטת ה-.htaccess בדרך כלל חזקה יותר כי היא עוצרת את הבקשה מוקדם יותר.
שיטה 4: ביטול סלקטיבי של פינגבקים בלבד
אם אתם עדיין צריכים XML-RPC למשהו כמו Jetpack אבל רוצים לסגור את פרצת הפינגבק, הוסיפו את זה ל-functions.php במקום לבטל את כל ה-XML-RPC:
add_filter('xmlrpc_methods', function($methods) {
unset($methods['pingback.ping']);
unset($methods['pingback.extensions.getPingbacks']);
return $methods;
});
זה משאיר את הדלת פתוחה בדיוק כמה שצריך בשביל האינטגרציות שאתם צריכים, ובמקביל מסיר את המתודות הספציפיות שתוקפים הכי אוהבים לנצל.
איך לוודא שזה עבד
אחרי שביצעתם שינויים, בדקו את זה. בקרו בכתובת yoursite.com/xmlrpc.php בדפדפן שלכם. אם אתם רואים "XML-RPC server accepts POST requests only", זה רק אומר שהקובץ נגיש אבל עדיין לא בדקתם את הביטול בפועל. הגדרה שחוסמת כמו שצריך אמורה להחזיר שגיאת 403 Forbidden, או שהקובץ יסרב לכל בקשה פונקציונלית. אתם יכולים גם להשתמש בכלי בדיקה מקוון ל-XML-RPC כדי לשלוח בקשת בדיקה ולוודא ששום דבר לא מגיב.
למה זה חשוב יותר משנדמה
ביטול XML-RPC לא יככב בכותרות, וזה לא ירגיש כמו ניצחון אבטחתי גדול בסגנון התקנת חומת אש. אבל זה סוגר אחת מנקודות הכניסה שהכי הרבה מנצלים בוורדפרס, כמעט בלי עלות וללא חיסרון לרוב האתרים. אם אתם עורכים ביקורת על הגנות האתר שלכם, זה שייך לראש הרשימה, ממש לצד בדיקת עמוד ההתחברות שלכם וסקירת רשימת התוספים, נושאים שאנחנו מתייחסים אליהם ברשימת אבטחת הוורדפרס שכל בעל אתר צריך לעבור עליה פעם ברבעון. אלה שיטות מומלצות לאבטחת וורדפרס שכל בעל אתר צריך להכיר.
סביבות אחסון טובות לרוב מטפלות בסוג הזה של הקשחה באופן אוטומטי כחלק מניהול התקנת הוורדפרס שלכם, אבל אם אתם מנהלים שרת בעצמכם או לא בטוחים מה כבר הוגדר, כדאי לבדוק בעצמכם. חומת אש לאפליקציות ווב מנוהלת יכולה גם היא לעזור לתפוס בקשות XML-RPC פוגעניות עוד לפני שהן מגיעות לאפליקציה שלכם, מה שמוסיף שכבת הגנה נוספת אם אתם עדיין לא מוכנים לבטל אותו לגמרי.
המסקנה
אלא אם אתם משתמשים באופן פעיל ב-Jetpack או בכלי פרסום ישן שתלוי בזה, אין סיבה טובה להשאיר את xmlrpc.php חשוף. תבחרו את השיטה שהכי נוחה לכם, תוסף, .htaccess, או functions.php, בדקו שזה עבד, ותורידו עוד וקטור התקפה אחד מהרשימה. זה שינוי קטן שמסיר יעד נפוץ באופן מפתיע. אימוץ שיטות מומלצות לאבטחת וורדפרס כמו זו הוא צעד פשוט שמחזק משמעותית את האתר שלכם.