DanLevy.net

הכרזה על ExploitHunter.app

סביבת עבודה פתוחה לאבטחה שמרכזת את היקף הבדיקה, האישורים, הכלים והראיות בפרויקט אחד.

תוכן העניינים

לכלי אבטחה יש בעיית ניירת.

הם מוצאים שורה חשודה, מדביקים עליה תג חומרה, ואז משאירים לכם להוכיח בשקט אם היא בכלל משנה. הממצא הוא “חמור”. הראיות הן שלוש פקודות grep עם מעיל טרנץ’.

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

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

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

זה לא סורק שהדביקו לו צ’אטבוט. זהו שולחן עבודה שזוכר מה הסוכן ניסה ומה חזר אליו.

לדבר על אבטחה זה זול. החלק השימושי הוא להריץ את הבדיקה המורשית, לשמר את ההוכחה ולמסור לכם את הצעד הבא.

הלולאה משעממת בכוונה

פרויקט ExploitHunter עובר בכל פעם את אותו רצף:

authorize target → plan → request approval → probe → save evidence → prioritize → report

הסדר חשוב, כי לסוכן יש טווח פעולה אמיתי.

הרשאת היעד היא מצב של הפרויקט, לא הקשר שיחתי. היא לא חיה בהודעת צ’אט שבה “בטח, קדימה” יכולה לקבל משמעות חדשה שלוש הודעות אחר כך. סריקות אקטיביות, בדיקות פרטי גישה, פקודות shell וכתיבה לקבצים — כולם נמצאים מאחורי שער אישור. אישורים לפקודות בעלות השפעה גבוהה קשורים לכוונה, לפרויקט וליעד. כברירת מחדל, הם לשימוש חד-פעמי.

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

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

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

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

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

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

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

שמונה מודלים, יעד אחד

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

נתתי לשמונה נתיבי מודל את אותה משימה קשה ב-Juice Shop, והרצתי אותם דרך נתיב היישום האמיתי של ExploitHunter. אותו יעד. אותם כלים. אותו חוזה ראיות. אם הרצה לא יכלה להוכיח איזה מודל רץ או לשמר את הפלט שלו, היא לא קיבלה שורה. בנצ’מרקים אולי נהנים מעמימות. חשבוניות בדרך כלל לא.

מטריצה המשווה בין ציון השופט, עלות המודל, זמן הריצה ומספר קריאות הכלים עבור Kimi K3, Claude Opus 4.8, DeepSeek V4 Flash, GPT-5.6 Luna, GPT-5.6 Terra, GPT-5.6 Sol, Qwen 3.6 Flash ו-GPT OSS 120B באותה משימה קשה ב-Juice Shop.
אותה משימה מייצרת כמה מנצחים שונים: Kimi מוביל בתמורה לציון מרבי, Opus מוביל במהירות בציון מרבי, Luna מוביל ביעילות, ו-DeepSeek מספק את הציון החזק ביותר מתחת למסלולים המושלמים.

| נתיב מודל | שופט | עלות | זמן ריצה | קריאות כלים | המסקנה | |---|---:|---:|---:|---:|---| | Kimi K3 | 10.0/10 | $0.220184 | 223.4s | 8.0 | האיכות הגבוהה ביותר במחיר הנמוך יותר מבין שני הקולעים המושלמים | | Claude Opus 4.8 | 10.0/10 | $1.633301 | 115.9s | 8.0 | אותה איכות כמו Kimi, כמעט פי שניים מהר יותר, בעלות גבוהה פי 7.4 | | DeepSeek V4 Flash | 9.33/10 | $0.058695 | 395.5s | 32.0 | הציון הטוב ביותר מתחת לשני המסלולים המושלמים | | GPT-5.6 Luna | 8.67/10 | $0.016304 | 52.2s | 3.3 | התוצאה הטובה ביותר בשילוב עלות ומהירות | | GPT-5.6 Terra | 8.0/10 | $0.124046 | 107.5s | 6.0 | עוקף את Sol במחיר ובמהירות באותו ציון | | GPT-5.6 Sol | 8.0/10 | $0.368514 | 229.6s | 10.0 | מסוגל, אבל Terra שולט בו בפרוסה הזו | | Qwen 3.6 Flash | 5.5/10 | $0.085678 | 96.9s | 16.5 | ההגדרה הזולה ביותר שיפרה את היעילות, אבל האיכות עדיין מפגרת | | GPT OSS 120B | 5.0/10 | $0.062529 | 36.6s | 4.3 | מהיר וזול, אבל תנודתי מדי לנתיב ברירת המחדל |

קראו את זה כמדיניות ניתוב, לא כפודיום.

Luna היא נקודת הפתיחה היעילה. DeepSeek קונה עוד שני שלישים נקודת שופט תמורת בערך פי 3.6 מהעלות, פי 7.6 מזמן הריצה ופי 9.6 מקריאות הכלים. Kimi מגיע ל-10/10 בלי חשבון ה-Opus. Opus מגיע לאותו ציון בערך 108 שניות מוקדם יותר, תמורת עוד $1.41. GPT OSS נשאר ניסוי מפוקח, ו-Terra מציג טיעון חזק יותר מ-Sol במשימה הזו.

תרשים פיזור של ציון השופט מול עלות המודל עבור שמונה נתיבי ExploitHunter, עם תיוג ישיר של כל ציון, עלות וזמן ריצה, והדגשת Luna, DeepSeek ו-Kimi כחזית העלות-איכות.
Luna, DeepSeek ו-Kimi מרכיבים את חזית העלות-איכות הקפדנית. תנועה ימינה אמורה לקנות איכות. רוב הנתיבים בהשוואה הזו פשוט קונים חשבונית גדולה יותר.

רק Luna, DeepSeek ו-Kimi נמצאים על החזית הזו. שאר הנתיבים אינם חסרי תועלת. הם זקוקים לסיבה שאינה הציון והעלות הגולמיים: Opus קונה מהירות, Terra עונה על אילוץ של משפחת מודלים בלי חשבון ה-Sol, ו-GPT OSS זול מספיק כדי לחקור אותו תחת פיקוח.

עמודות אופקיות מדורגות המשוות בין ציוני השופט של שמונה נתיבי מודל ב-ExploitHunter, כאשר עלות המודל וזמן הריצה מוצגים לצד כל ציון.
זול ומהיר אינם מצילים חקירה חלשה. ל-GPT OSS יש כאן את זמן הריצה הקצר ביותר, אבל DeepSeek, Luna, Terra ושני הקולעים המושלמים מפיקים עבודה טובה משמעותית.
השוואה ישירה בין Kimi K3 ל-Claude Opus 4.8, המציגה את שניהם בציון עשר מתוך עשר ובשמונה קריאות כלים, כאשר Kimi עולה 0.220184 דולר ונמשך 223.4 שניות, ו-Opus עולה 1.633301 דולר ונמשך 115.9 שניות.
ההחלטה בציון המרבי נקייה באופן חריג: Kimi זול פי 7.4, ו-Opus מהיר פי 1.9. בחרו באילוץ שבאמת יש לכם.

הגרסה הארוכה, הכוללת מתודולוגיה, תקציבי כלים, בקרות שליליות והדרכים שבהן מודלים מביכים את עצמם כשבתמליל הפקודות כבר נמצאת התשובה, נמצאת ב-Security Agents Need Model Routers, Not Model Rankings.

הבנצ’מרק תפס את הבנצ’מרק

התוצאה החשובה ביותר לא הייתה ניצחון של מודל. זו הייתה תקלה של מדרג.

דוח שחזור הארכיון הראשון נתן ל-Kimi 5/10 ול-GLM 9/10. המשימה עצמה הצליחה. שני הסוכנים שחזרו את harbor-lantern-47, ובדיקת unzip -t -P עצמאית מצד המארח הוכיחה שהסיסמה הזו עבדה, בעוד החלופות לא עבדו.

השופט הפעיל ביקורת כלים אסורים גולמית של Cybench על משימת ExploitHunter מקורית, שבה כתיבת ראיות הייתה דרישה. הוא העניש בדיוק את ההתנהגות שה-harness ביקש. אותו פלט של המודל. אותה עקבה שמורה. רובריקה שגויה.

לאחר הסרת הביקורת הלא רלוונטית, Kimi עולה מ-5/10 ל-10/10. GLM נשאר על 9/10. הציונים המתוקנים נכתבו חזרה לעקבות Langfuse המקוריות תחת browser-e2e-llm-judge-corrected, ובדיקת API לקריאה בלבד ב-17 ביולי אישרה את שני הערכים לפי מזהי העקבות שנשמרו.

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

ניתוב מודלים לפי משימה

ExploitHunter לא רק תומך ברשימה ארוכה של ספקי מודלים. הוא מתייחס אליהם כמו לספסל שחקנים.

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

‏VulnHunter של Capital One מהמר באופן עקבי על תהליך ניתוח קוד שמותאם ל-Claude ול-Claude Code. ExploitHunter מהמר על משהו אחר: לשמור על תחום הפרויקט, האישורים, הכלים והראיות יציבים, בזמן שמסלול המודל משתנה בהתאם למשימה.

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

המודל הנכון הוא החלטת ניתוב, לא לוגו במסך ההגדרות.

ExploitHunter תומך בספקים מתארחים וגם ב-Ollama וב-LM Studio. אפשר להפעיל אותו כשירות Node מקומי או כאפליקציית Electron למחשב שולחני. השאירו את מפתחות ה-API של הספקים המתארחים ריקים, ומודל מקומי תואם ישאיר את העבודה המקדימה מחוץ לספקים בתשלום. השתמשו במסלול מתארח כשמהירות או בעיה קשה יותר מצדיקות זאת. השאירו עבודה רגישה מקומית כשהגבול הזה חשוב יותר מקיצור של כמה שניות מזמן הריצה.

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

איפה הוא משתלב לצד deepsec, ‏VulnHunter וכל השאר

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

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

| כלי | במה הוא חזק | במה ExploitHunter שונה | |---|---|---| | Vercel deepsec | Harness שמתמקד קודם כול ב-codebase: איתור מועמדים סטטי, חקירה באמצעות coding agent, אימות מחדש, העשרה והפצה אופציונלית בקנה מידה גדול בתוך sandbox. | Deepsec מתאים לניתוח מאגרים ולהמשך עבודה מוכוון-PR. ExploitHunter ממקם במרכז פרויקט מחקר מאושר, שעשוי לכלול אפליקציה פעילה, דפדפן, מעבדת רשת, טרמינל, ראיות מתמשכות ואישורי מפעיל מפורשים. | | Capital One VulnHunter | ניתוח קוד מנקודת מבט של תוקף, הפרכה שיטתית של ממצאים והצעות ממוקדות לתיקון קוד. | החפיפה אמיתית: ראיות וצמצום חיוביים שגויים צריכים להיות רף בסיסי. ExploitHunter קשור פחות ל-harness של קידוד או למסלול של מודל יחיד, ומתמקד יותר בתיאום החקירה לפני שמציעים שינוי בקוד. | | GitHub Security Lab Taskflow Agent | taskflows הצהרתיים המאפשרים MCP, במיוחד מיון התראות CodeQL וניתוח וריאנטים. GitHub מדווח שהוא עזר למצוא בערך 30 נקודות תורפה בעולם האמיתי. | הבסיס הנכון כשהקלט הוא תהליך חוזר של סריקת קוד. ExploitHunter הוא שולחן העבודה למחקר חוקרני המשתמש בכלים, שבו התחום, האישורים והראיות צריכים לשרוד חקירה ארוכה יותר. | | OpenHands Vulnerability Fixer | הפיכת פלט סורקים מ-Trivy או מכלים אחרים לתיקונים מתועדפים, בדיקות ובקשות מיזוג. | מפעל לתיקונים. ExploitHunter נמצא מוקדם יותר בלולאה: לבסס שהממצא אמיתי, לתעד מדוע, ולמסור בעיה שנתמכת היטב למערכת התיקון. | | Assay | אכיפת מדיניות לא מקוונת, שחזור דטרמיניסטי וחבילות ראיות קריפטוגרפיות עבור קריאות של סוכנים לכלים. | משלים, לא מתחרה. זהו בדיוק סוג בקרת זמן הריצה של deny-by-default שסביבות עבודה למחקר סוכני צריכות להיות מסוגלות להפעיל מתחת לשכבת האישורים שלהן. |

מחסנית שימושית כנראה כוללת יותר מאחד מהכלים האלה: סורק מקור מעלה מועמדים, taskflow ממיין דפוסים חוזרים, סביבת מחקר מאמתת את המקרים המסוכנים, וסוכן תיקון הופך עבודה מאומתת ל-patch שאפשר לבדוק. החיבורים בין השלבים חשובים יותר מהכתרת קמע אבטחה.

הפעילו מקומית. השתמשו באחריות.

ExploitHunter מופץ ברישיון MIT, הוא קוד פתוח ונבנה עבור עבודה שיש לכם הרשאה לבצע. המאגר מגיע עם יעד Juice Shop מקומי מוקשח ומעבדות רשת מרובות-שירותים, כך שתוכלו להפעיל את התהליך המלא בלי להפנות סוכן למשהו שאינו בבעלותכם.

git clone https://github.com/justsml/ExploitHunter.app.git
cd ExploitHunter.app
pnpm install
cp .env.example .env
pnpm dev

לאחר מכן פתחו את http://localhost:3210.

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

זו הגרסה המשעממת של אבטחה סוכנית.

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

מה הלאה

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

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

זהו ExploitHunter: מקום אחד לכוון בו את המודלים, הכלים, המעבדות, האישורים, הראיות והמעקב לאותה בעיה.

עכשיו כוונו אותו למשהו שמותר לכם לשבור.