1. ספרייה
  2. DNS
  3. אבטחת DNS

עודכן לפני חודש

הרעלת מטמון DNS עובדת מפני ש-DNS נבנה על בסיס אמון.

כשהמחשב שלך שואל "מה כתובת ה-IP של bank.com?", הוא שולח את השאלה לרזולבר. הרזולבר שואל את שרת השמות הסמכותי. וכאן נמצאת הפגיעות: הרזולבר מאמין למי שעונה ראשון. ללא אימות. ללא הוכחה קריפטוגרפית. פשוט: מי שמגיע ראשון — מנצח.

תוקף שמזריק תשובה מזויפת לפני שהתגובה הלגיטימית מגיעה יכול להפנות את התעבורה שלך לכל מקום. ומכיוון שרזולברים מאחסנים תשובות במטמון, השקר הזה נמשך — ומרעיל כל בקשה עוקבת עד שהמטמון פג. מתקפה מוצלחת אחת יכולה להפנות אלפי משתמשים במשך שעות.

תנאי המרוץ

כל שאילתת DNS יוצרת מרוץ. ברגע שרזולבר שולח שאלה לשרת שמות סמכותי, שני רצים ממריצים לקו הסיום: התשובה הלגיטימית שחוזרת מהשרת האמיתי, וכל תגובה מזויפת שתוקף יכול להזריק.

הרזולבר מקבל את מה שמגיע ראשון — כל עוד הוא נראה לגיטימי.

כדי שתגובה מזויפת תעבור, היא חייבת לעמוד בקריטריונים ספציפיים. מזהה הטרנזקציה (מספר בן 16 סיביות שהרזולבר בחר) חייב להיות נכון. התגובה חייבת להיראות כאילו היא מגיעה מכתובת ה-IP הצפויה. היא חייבת לכוון ליציאה הנכונה ברזולבר.

מימושי DNS מוקדמים הפכו את זה לקל. רזולברים השתמשו במזהי טרנזקציה צפויים וביציאת מקור קבועה (בדרך כלל יציאה 53). התוקפים רק היו צריכים לנחש מספר בן 16 סיביות — 65,536 אפשרויות. עם מהירויות הרשת של היום, שליחת אלפי תגובות מזויפות בחלון שאילתה אחת הפכה לדבר של מה בכך.

גילויו של קמינסקי

בשנת 2008, דן קמינסקי מצא משהו שהפך את הרעלת המטמון מטרדה תיאורטית למשבר מיידי.

למתקפה המסורתית היה גורם מגביל: ניתן היה להרעיל רק רשומה שלא הייתה כבר במטמון. אם bank.com היה שמור במטמון למשך 24 שעות, היה צריך לחכות 24 שעות בין ניסיון לניסיון. זה הפך את המתקפות לאיטיות ולא אמינות.

קמינסקי הבין שניתן לעקוף את זה לחלוטין — על ידי תקיפת תת-דומיינים שכנים.

במקום לתקוף את bank.com ישירות, שלח שאילתה עבור randomgarbage1.bank.com. זו החטאת מטמון — הרזולבר חייב לשאול את השרת הסמכותי. שלח שאילתה עבור randomgarbage2.bank.com. עוד החטאת מטמון. אפשר להפעיל שאילתות ללא הגבלה, באופן מיידי, בלי להמתין.

הנה הגאונות: לא מנסים להרעיל את תת-הדומיין הזבל. לתגובות DNS יש "קטע נוסף" שבו שרתים יכולים לכלול מידע עזר. התגובות המזויפות של קמינסקי ענו על שאילתת הזבל — אבל כללו רשומת שרת שמות מורעלת: "אגב, שרת השמות עבור כל bank.com הוא למעשה ns.attacker.com."

תוקפים את הילד כדי להרעיל את ההורה.

ברגע שרשומת שרת השמות הזו נשמרת במטמון, התוקף שולט בכל רזולוציית ה-DNS עבור הדומיין כולו. כל תת-דומיין. כל שירות. הכול.

קמינסקי פנה לפול ויקסי, שתיאר את החומרה: "כל דבר ביקום הדיגיטלי יצטרך לקבל טלאי."1 הגילוי הפעיל את תיקון האבטחה המתואם הגדול ביותר בהיסטוריה של האינטרנט — 81 ספקים שחררו תיקונים בו-זמנית ב-8 ביולי 2008.

אקראיות יציאת המקור

התיקון המיידי הוסיף משתנה נוסף שעל התוקפים לנחש: יציאת המקור.

רזולברים מסורתיים שלחו את כל השאילתות מיציאה 53. התוקפים רק היו צריכים לנחש את מזהה הטרנזקציה בן 16 הסיביות. אקראיות יציאת המקור שולחת כל שאילתה מיציאה אקראית בין 1024 ל-65535 — ומוסיפה עוד כ-16 סיביות של אי-ודאות.

המתמטיקה משתנה דרמטית. במקום 65,536 צירופים, התוקפים מתמודדים עם כ-4 מיליארד. במקום מאות ניסיונות להשגת שיעור הצלחה של 50%, צריך מיליונים.

זה סטנדרטי כיום בכל רזולבר מודרני. אבל זו הגנה הסתברותית, לא ערובה. התקני רשת שכותבים מחדש יציאות בצורה צפויה, חומות אש שמגבילות את טווח היציאות היוצאות, או פשוט מספיק זמן ורוחב פס — כל אלה עדיין יכולים לאפשר מתקפות מוצלחות.

אקראיות יציאת המקור הופכת את הרעלת המטמון לקשה. היא לא הופכת אותה לבלתי אפשרית.

המתקפות ממשיכות להתפתח

חוקרים ממשיכים למצוא זוויות חדשות. SAD DNS (2020) הדגימה שניתן לנצל את הגבלת קצב ICMP בלינוקס כדי לצמצם את יציאת המקור שבה רזולבר משתמש — ולהקטין משמעותית את מרחב החיפוש. לפחות 38% מהרזולברים נשארו פגיעים.2

MaginotDNS (2023) גילתה שרתי DNS שפועלים גם כרזולברים רקורסיביים וגם כמעבירים (forwarders), ושבאופן שבו הם בודקים את תקינות התגובות יש חולשות הניתנות לניצול. המתקפה יכולה להשתלט על אזורי DNS שלמים — כולל דומיינים ברמה עליונה כמו .com ו-.net. מחקרי מדידה מצאו ש-35.5% משרתים כאלה פגיעים.

עד 2025, נמצאו פגיעויות קריטיות ב-BIND 9 (תוכנת ה-DNS הנפוצה ביותר בעולם) המאפשרות הרעלת מטמון על ידי ניבוי יציאות מקור ומזהי שאילתות.3

המשחק בין החתול לעכבר נמשך.

DNSSEC: הפתרון האמיתי

DNSSEC מחליף אמון בקריפטוגרפיה.

כל אזור DNS מקבל מפתח חתימה. תגובות כוללות חתימות דיגיטליות. רזולברים מאמתים את החתימות מול מפתחות ציבוריים שפורסמו באזור האב, ויוצרים שרשרת אמון המגיעה עד לשורש ה-DNS.

כאשר רזולבר שמאמת DNSSEC מקבל תגובה, הוא בודק את החתימה. חתימה תקינה עם שרשרת אמון שלמה? מקבל את התשובה. חתימה חסרה, חתימה פגומה, או שרשרת שבורה? דוחה אותה.

זה הופך את הרעלת המטמון המסורתית לבלתי אפשרית. גם אם התוקף מנצח במרוץ, גם אם ניחש נכון את מזהה הטרנזקציה ואת יציאת המקור, הוא אינו יכול לזייף את החתימה הקריפטוגרפית. בלי המפתח הפרטי של האזור, התגובה המזויפת נכשלת באימות ונפסלת.

DNSSEC הופך את ה-DNS מ"האמן למי שעונה ראשון" ל"האמן למי שיכול להוכיח שהוא מוסמך לענות."

זיהוי מתקפות

ניסיונות הרעלת מטמון משאירים עקבות.

תגובות מרובות לשאילתות בודדות. כאשר רזולבר מקבל כמה תשובות לשאלה אחת, מישהו מנסה להתחרות. רזולברים מודרניים רושמים חריגות אלה.

שטפון של שאילתות לתת-דומיינים אקראיים. מתקפות בסגנון קמינסקי מייצרות דפוסים אופייניים — שאילתות מהירות לתת-דומיינים שמעולם לא היו קיימים, כמו xk7f9.bank.com, m3pq2.bank.com, אלפים בשנייה.

אי-עקביות ברזולוציה. אם הרזולבר שלך מחזיר כתובת IP שונה עבור bank.com מזו שמחזיר הרזולבר של Google, משהו לא בסדר. או שהרעילו אותך — או אותם.

כאשר מתגלה הרעלה, רוקן מיד את ערכי המטמון המושפעים. הפעל אימות DNSSEC אם הוא לא פעיל כבר. הגבל את הרזולבר שלך לקבל שאילתות רק מהרשת שלך — אל תתן לתוקפים להפעיל שאילתות מרחוק.

זה קרה באמת

בשנת 2010, "חומת האש הגדולה" של סין דלפה בטעות מעבר לגבולותיה.4 שרתי ה-DNS הסיניים מחזירים תשובות שגויות עבור אתרים חסומים כמו Facebook, YouTube ו-Twitter — זו צנזורה מכוונת. אבל כאשר ספק אינטרנט מחוץ לסין שאב רשומות משרתי DNS סיניים ואחסן את התגובות המורעלות במטמון, משתמשים בצ'ילה ובארצות הברית מצאו פתאום שאינם יכולים לגשת לאתרים האלה. מנגנון הצנזורה ברח מגבולותיו המיועדים.

בשנת 2016, תוקפים הרעילו DNS אצל ספקי אינטרנט ברזיל, והפנו לקוחות בנקים לאתרי פישינג מדויקים להפליא. אלפי חשבונות נפרצו לפני שמישהו שם לב. המתקפה נמשכה שעות.

בשנת 2023, תוקפים פגעו ברזולברי ה-DNS של ספק אינטרנט גדול, הזריקו רשומות מזויפות שהפנו אלפי משתמשים לאתרי פישינג — במשך מספר שעות, עד שהדבר התגלה.5

הרעלת מטמון DNS אינה תיאורטית. היא קורית. השאלה היחידה היא האם התשתית שלך מוגנת.

שאלות נפוצות על הרעלת מטמון DNS

כמה זמן ערך מטמון מורעל נשאר?

עד שה-TTL (זמן לחיות) פג — בדרך כלל דקות עד שעות, תלוי כיצד הדומיין הלגיטימי הגדיר את רשומות ה-DNS שלו. תוקפים נוטים להגדיר TTL ארוך בתגובותיהם המזויפות כדי למקסם את חלון המתקפה.

האם הרעלת מטמון יכולה להשפיע על אתרי HTTPS?

כן. הרעלת DNS מפנה אותך לשרת התוקף לפני ש-TLS בכלל מתחיל. שרת התוקף יכול להציג תעודה מזויפת (מה שמפעיל אזהרות בדפדפן) או, אם הצליחו לפרוץ רשות אישורים, תעודה שנראית תקינה לחלוטין. ההפניה מתרחשת בשכבת הרשת — מתחת ל-HTTPS.

מדוע DNSSEC לא פרוס בכל מקום?

מורכבות ואינרציה. DNSSEC דורש תיאום בין בעלי דומיינים (שחייבים לחתום על האזורים שלהם), רשמים (שחייבים לפרסם רשומות DS), ורזולברים (שחייבים לאמת חתימות). נכון ל-2024, רק כ-6% מהדומיינים חתומים ב-DNSSEC, אם כי כ-30% משאילתות ה-DNS ברחבי העולם מאומתות על ידי רזולברים.6 מדינות מסוימות עושות זאת טוב בהרבה — שבדיה מאמתת מעל 80% מהבקשות. ארגונים רבים לא נתנו לכך עדיפות, וחלקם חוששים מהמורכבות התפעולית.

האם אני יכול לבדוק אם הרזולבר שלי מאמת DNSSEC?

כן. בקר באתר בדיקת DNSSEC כמו dnssec-failed.org — אם הרזולבר שלך מאמת DNSSEC כראוי, דומיין זה שנשבר בכוונה אמור להיכשל ברזולוציה. אם הוא נפתר בהצלחה, הרזולבר שלך אינו מאמת.

מה ההבדל בין הרעלת מטמון לחטיפת DNS?

הרעלת מטמון מזריקה שקרים למטמון של רזולבר דרך תגובות מזויפות. חטיפת DNS משתלטת על שרת השמות הסמכותי עצמו — דרך אישורים שנפרצו, מתקפות על רשמי הדומיינים, או חטיפת BGP. חטיפה ישירה יותר אך דורשת יותר גישה; הרעלה ניתן לבצע מרחוק נגד כל רזולבר פגיע.

מקורות

האם דף זה היה מועיל?

😔
🤨
😃