עמוד זה הוא תרגום. הגרסה האנגלית היא הנוסח המחייב. לקריאה באנגלית
threat-actor · litellm · agentic-ai · credential-theft · china-nexus
keyHunter: מבצע מפתחות מול פרוקסי LLM שהדליף את ערכת הכלים של עצמו
מפעיל דובר סינית סורק את FOFA לאיתור פאנלים חשופים של פרוקסי AI, מאמת אותם בקוד מגובה בבדיקות יחידה שנבנה כדי לזהות מלכודות דבש, ומייצא את מפתחות ה-API. הסוכן שלו שלח לאחת ממלכודות הדבש שלנו 283 נתיבי קבצים מהמארח שלו עצמו, את תפוקות הסריקה, את יומן השיחה ב-WeChat, וספריית תוצאות ובה קבצי ניצול הנקראים על שם שישה CVE משנת 2026, ובהם עקיפה של webhook של Stripe ב-New-API.
מאת Davis Zheng·
TLP:CLEAR. מאושר לפרסום פומבי. כמעט כל מה שלהלן הוא חומר של המפעיל עצמו, שהופק מפלט ששלח הסוכן של המפעיל לאחת ממלכודות הדבש שלנו. המזהים מוצגים בצורה מנוטרלת, כלומר כתובות התוקף כתובות כך שלא ניתן ללחוץ עליהן או לפתור אותן בטעות. יעדי הסריקה, מארח צד-שלישי אחד שהמפעיל סימן, ומפתח ה-FOFA API שלו במלואו אינם מפורסמים.
תקציר מנהלים
- 27,173מארחים מועמדים שנסרקו ב-FOFA
- 194שהציגו רשימת מודל
- 17מפתחות API שיוצאו
- 6CVE משנת 2026, לפי שם קובץ
מפעיל דובר סינית סרק 27,173 מארחים בשמונה מדינות במטרה אחת: פאנלים חשופים של פרוקסי AI שמאחוריהם מפתחות פעילים. פאנל פרוקסי AI הוא התוכנה שצוותים ממקמים בין היישומים שלהם לבין ספקי מודלים בתשלום כדי לאפשר שיתוף של מערך אחד של מפתחות ספק, כגון LiteLLM, One-API והפורק שלה New-API, Sub2API ו-Chat2API. אם משאירים אחד מהם באינטרנט ללא סיסמה, כל מה שמאחוריו ניתן לצריכה בידי זרים. המפעיל מאתר אותם באמצעות FOFA, מנוע חיפוש מעל סריקה רציפה של האינטרנט כולו והמקבילה הסינית ל-Shodan, בודק אילו פאנלים עדיין משיבים, ומייצא את המפתחות.
המספרים הללו הם של המפעיל עצמו, שנלקחו מקבצי התוצאות שלו ולא הוערכו על ידינו. מתוך אותם 27,173 מארחים, 194 הציגו רשימת מודל ו-17 מפתחות הגיעו לקובץ הייצוא שלו. ההרצה בארצות הברית היא המקרה הבודד הברור ביותר: 10,447 יעדים בכניסה, 64 רשימות מודלים ביציאה, שיעור פגיעה של 0.61%, והסוכן שלו עצמו ידע להסביר מדוע. מופעי LiteLLM חשופים לציבור שניתן באמת לקרוא אליהם הם נדירים, ובאג בבניית כתובות URL בסורק שלו סימן מארחים חיים כמתים.
- זהו מבצע מבוסס-סין, בשפה הסינית, על תשתית סינית בלבד. כל חותמת זמן של קובץ שהופק היא
+0800, שפת העבודה לאורך כל הדרך היא סינית, ושלושת המארחים הם Alibaba Cloud, Tencent Cloud ומכונה וירטואלית לסריקה ב-Huawei Cloud. ודאות גבוהה. - הכלים מותאמים אישית ומגובים בבדיקות יחידה, ואינם מוצרי מדף.
litellm_verifier.pyמגיע עם שלושה קבצי בדיקה, ספריית הגיבויים כוללתSHA256SUMS, והעבודה מאורגנת בסבבים ממוספרים. משמעת הנדסית כזו אינה שכיחה בסריקת אישורי גישה. ודאות גבוהה, על בסיס רשימות הקבצים של המפעיל עצמו. - הם משלבים אמצעי נגד-הטעיה, והם עובדים. המאמת שלהם מסרב לספור רשימת
/v1/modelsכהצלחה, דורש השלמת צ'אט אמיתית לכל מודל, מנקד האם התשובה תואמת לספק שהיא מתיימרת להיות, וסיווג 20 מתוך 41 רשומות מודל שנבדקו בהרצה אחת כ-honeypot_or_unusable. ודאות גבוהה. - ערכת הניצול היא כולה n-day. שמות קבצי התוצאות שלהם ממופים לשישה פרסומי אבטחה משנת 2026 נגד LiteLLM, Sub2API ו-New-API, אחד מהם ברשימת הפגיעויות המנוצלות הידועות של CISA. דבר אינו מצביע על מחקר פגיעויות מקורי. ודאות גבוהה לגבי המוצרים והטכניקות, ודאות בינונית לגבי ה-CVE הספציפי בארבעה מתוך השישה, שהוסקו משמות קבצים ולא נצפו.
- מסגור התחרות אינו שורד את המפגש עם ספריית התוצאות. הם אומרים לסוכן שלהם שההיקף הוא אישורי גישה ברירת מחדל בלבד, ואולם שמות הקבצים בספרייה מציינים הרצת קוד מרחוק, הזרקת SQL, הזרקת תבניות, זיוף בקשות בצד השרת, דליפת אסימונים, גלישת מכסה ועקיפה של webhook של Stripe. בידינו רשימת הקבצים ולא תוכנם, ולכן הכוונה נותרת פתוחה, אך המפעיל בנה והריץ את הכלים הללו תחת כל אחת מן הפרשנויות. ודאות גבוהה לגבי הממצאים, בינונית לגבי איזו פרשנות של הכוונה נכונה.
על השם
אנו עוקבים אחר הפעילות הזו בשם keyHunter, על שם /root/keyHunter-skill/, ספריית הפרויקט של המפעיל עצמו.
מסגרת הסוכנים שהם מפעילים נקראת Hermes, ו-Hermes הוא פרויקט קוד פתוח אמיתי של Nous Research. קריאת שם השחקן על שמו הייתה מטילה על כלי לגיטימי את האחריות למה שמישהו עשה באמצעותו, ולכן איננו עושים זאת. הדבר נכון גם לגבי OpenClaw, מסגרת הסוכנים השנייה שעל המכונה. שתיהן תוכנה רגילה שהמפעיל התקין והפנה אל תשתית של אחרים.
המפעיל
המפעיל עובד משלושה מארחים, כולם בענני סין, כשהעבודה מחולקת ביניהם. 39.98.82[.]200 ב-Alibaba Cloud (AS37963) מריץ את שער הסוכן וביצע את רוב פעולות האיסוף שראינו. 101.43.41[.]72 ב-Tencent Cloud (AS45090) הוא ממסר, המגיש נקודת קצה תואמת OpenAI בפורט 8087 שאליה הסוכן פונה לקבלת קיבולת מודל. שניהם חולקים את טביעת האצבע JA4H po11nn070000_ebbca96fac43, המתארת כיצד לקוח מרכיב את בקשות ה-HTTP שלו ושורדת החלפת כתובת, לצד סוכני משתמש ייעודיים Hermes-Agent/0.18.0 ו-Hermes-Panel/1.0 ומזהה מושב צ’אט משותף יחיד. יחד, אלה ממקמים את שני הצמתים תחת מפעיל אחד. טביעת האצבע הזו אינה תוצר של לכידה בודדת: היא חוזרת לאורך הפעילות שבין 16 ל-20 באוגוסט, באותה סריקה מונעת-FOFA.
הסריקה עצמה מתרחשת במקום נוסף. מהמארח של Alibaba הם מגיעים אל מכונה וירטואלית ב-Huawei Cloud דרך העברת פורט מקומית:
ssh -o ServerAliveInterval=20 -i /root/.ssh/hw_vm_key -p 8888 developer@127.0.0.1 \
'cd /home/developer && /home/developer/.venv-us30/bin/python litellm_scan_us_30d_optimized.py'
המכונה הזו הייתה פעילה ארבעה ימים ותשע שעות, יש לה 7.5 GB של RAM וארבע ליבות, והיא מריצה את עובדי הסריקה. הפרדת הסריקה הרועשת מחזית הסוכן היא בחירה מכוונת, והשם hw_vm_key מלמד שהמפעיל תופס אותה כמכונת Huawei.
השליטה מתבצעת באמצעות WeChat. שירות השער מתאר את עצמו כ”שער סוכן Hermes, שילוב עם פלטפורמת הודעות”, והמפעיל מטיל משימות על הסוכן בשיחה איתו בשרשור WeChat. הזיכרון ארוך הטווח של הסוכן הוא אותה שיחה: הוא מחפש בהיסטוריית הצ’אט של עצמו כדי להיזכר במה הוא עוסק. המסגרת השנייה מציגה את אותו דפוס, עם מושב בשם openclaw-weixin. אפליקציית הודעות צרכנית מהווה ערוץ שליטה זול: התעבורה מוצפנת כברירת מחדל ונעה אל Tencent לצד כל שאר משתמשי WeChat, ולכן אינה מפעילה שום מנגנון זיהוי המכוון לאיתות פיקוד ושליטה.
מנוע ההיסק שמאחורי הכול הוא github_copilot/gpt-5.6-sol, עוזר תכנות מסחרי שאליו מגיעים דרך ממסר. התצורה שלהם מחברת גם מפתחות אופציונליים לכמה ספקים נוספים. קוד התקיפה הוא Python מותאם אישית; מודל ההיסק, מסגרת הסוכנים וערוץ השליטה ב-WeChat שמתחתיה הם כולם מוצרי מדף צרכניים.
צינור העבודה
מיומנות האב שלהם מתארת את המבצע כולו בשורה אחת: “גילוי, סריקה, אימות וארכוב של פאנלים חשופים לציבור של פרוקסי AI API (LiteLLM, Sub2API, New-API, One-API) באמצעות FOFA + keyHunter + סקריפטי אימות מותאמים אישית.”
FOFA search, per country
-> dedupe and normalise targets
-> light HTTP fingerprint
-> /v1/models listing
-> real chat completion per model
-> honeypot classification
-> weak-credential panel login, key extraction
-> export keys and accounts, archive
הגילוי הוא שאילתת FOFA יחידה, החוזרת לכל מדינה:
(title="LiteLLM" || body="LiteLLM") && country="{cc}" && org!="AMAZON-AES"
הסעיף המשמעותי הוא החרגת AWS. המפעיל מסנן החוצה את Amazon מכל סריקה עוד לפני שהוא מביט במארח בודד. חסימת טווחי Shodan ו-Censys בקצה הרשת שלכם אינה מועילה כלל מול צינור הבנוי על נתוני סריקה של גורם אחר.
לכל מדינה הם מחזיקים סקריפטים נפרדים: litellm_scan_hw.py לארצות הברית, litellm_scan_gb_hw.py, litellm_scan_it_hw.py, סקריפט litellm_scan_us_30d_optimized.py עם סביבה וירטואלית משלו, וקבוצה נוספת תחת keyHunter-skill/ המכסה את אוסטרליה, ברזיל, קנדה, צרפת, הודו, הולנד וסינגפור. קבצי תוצאות קיימים עבור ארבע עשרה מדינות. המקביליות היא 48 עובדים קלים ו-12 עובדים עמוקים, עם השהיית קצב לתגובות 429 של FOFA, וניכוי כפילויות של נקודות קצה לפי פרוטוקול, מארח ופורט.
מפתח ה-FOFA API מוטמע בקוד המקור של הסורק, וכך הוא הגיע לידינו. הוא פונה אל מראה לא רשמית של FOFA בכתובת hamal.cc[.]cd ויוצא דרך פרוקסי Squid מקומי.
מה סריקה מחזירה בפועל
| מדינה | יעדי FOFA | מודלים שהוצגו | שיעור פגיעה |
|---|---|---|---|
| ארצות הברית | 10,447 | 64 | 0.61% |
| סין | 6,329 | 83 | 1.31% |
| דרום קוריאה | 1,772 | 10 | 0.56% |
| בריטניה | 1,422 | 18 | 1.27% |
| איטליה | 1,130 | 9 | 0.80% |
| אוסטרליה, הודו, ברזיל | 6,073 | 10, מתוכם 4 אומתו | 0.16% |
הרצה אחת שנלכדה: 2,255 שורות גולמיות מ-FOFA, 1,130 נקודות קצה ייחודיות לאחר ניכוי כפילויות, 9 אתרים שהציגו מודלים, 8 שאומתו, וברמת הבקשה 41 הצלחות מודל מול 8 כשלים.
מפקד הכותרות ב-FOFA שהם אספו מלמד כיצד נראית האוכלוסייה החשופה. LiteLLM API - Swagger UI מחזיר 7,630 תוצאות. OmniRoute מחזיר 171, SillyTavern 170, LiteLLM Dashboard 156, Claude Code Hub 131, Aivar AI Gateway 11. רוב משטח החשיפה הוא מוצר אחד, ורוב המופעים החשופים של אותו מוצר הם דף התיעוד האוטומטי של ה-API.
אנו מעריכים שהתפוקה בקצה הרחוק נמוכה במונחים מוחלטים. litellm_extracted_keys.json מתעד 43 מופעים ו-3 מפתחות שחולצו על פני 23 מודלים. exported_keys.json מכיל 17. עשרות אלפי מארחים נסרקו עבור שבעה עשר מפתחות, וזו או תשואה גרועה על המאמץ או טיעון לכך שהמאמץ זול משום שסוכן הוא שמבצע אותו.
נגד-הטעיה: הם צדים מלכודות דבש
ההנדסה ניכרת בבירור רב ביותר בקובץ אחד, litellm_verifier.py.
גודלו עשרה קילובייט, והוא כולל מערך בדיקות יחידה. הוא שולח השלמת צ’אט מינימלית אמיתית לכל מודל שפאנל מפרסם, ורושם הצלחה רק כאשר מתקבלת תגובה תקפה בתבנית OpenAI של choices/message/content או תשובת הזרמה לגיטימית עם סמן סיום. הכלל שלהם עצמם, בלשונם: הצלחה של /models בלבד לעולם אינה נחשבת. שמות הבדיקות מקודדים זאת, ובהם אחד בשם test_models_listing_alone_is_not_success. מישהו כתב בדיקת רגרסיה כדי למנוע מהכלים של עצמו לשקר לו לגבי מפתח גנוב.
ספירות הפסיקה מהרצה אחת:
verdict_counts: honeypot_or_unusable 20 · trusted_pass 5 · unavailable 16
formatted_false_success_model_hits 29
non_chinese_evidence_count 13
total_questions 205
formatted_false_success הוא תשובה מוכנה מראש או מהדהדת, כפי שמשיבה מלכודת נאיבית. non_chinese_evidence מנקד האם מודל מתנהג כמו הספק שהוא מתיימר להיות. הם מריצים גם תשאול בן חמש שאלות, 蜜罐五题测试, ובחלון שנלכד השתמשו בו כדי לסמן מארח בטווח AWS בלונדון כמלכודת דבש. איננו מפרסמים את הכתובת הזו, משום שמדובר בחיישן של גורם אחר ופרסומה שורף אותו.
רוכש של היסק גנוב מניח כיום שנקודת הקצה עשויה להיות מלכודת ובודק זאת. בדיקת הנגד שתופסת אותם מריצה את אותה בדיקה בכיוון ההפוך: כל לקוח שמבקש מהשער שלכם להוכיח איזה מודל הוא מריץ באמת, בניגוד לפרמטר ה-API, מאמת סחורה.
ארסנל הניצול: כולו n-day
תוכנם של קבצי תוצאות הניצול שלהם מעולם לא הגיע אלינו. שמות הקבצים כן, והיעדים שלהם הם מוצרי קוד פתוח עם פרסומי אבטחה פומביים, ולכן ניתן לשחזר את הניצולים מתוך הפרסומים.
| קובץ תוצאות במארח שלהם | CVE | פגיעות | בסיס |
|---|---|---|---|
litellm_host_header_bypass_results.json (568 KB) | CVE-2026-49468 | עקיפת אימות ב-LiteLLM באמצעות הזרקת כותרת Host, CVSS 9.8, לפני 1.84.0. מנתקת את הסנכרון בין האימות לניתוב, ומאפשרת גישה לא מאומתת ל-/key/generate ול-/user/new | אושש: אותן קריאות למישור הניהול הגיעו לחיישן שלנו, והציגו סוכן משתמש CVE-2026-49468-Scanner |
litellm_sqli_apikey_results.json (517 KB), litellm_sqli_models.json | CVE-2026-42208 | הזרקת SQL טרום-אימות ב-LiteLLM בנתיב האימות | אושש: הם שלחו ' OR '1'='1 כמפתח תשע עשרה פעמים |
litellm_rce_exploit.json, litellm_mcp_rce_results.json | CVE-2026-42271 | הזרקת פקודות והרצת קוד מרחוק ב-LiteLLM, CVSS 8.7, ברשימת הפגיעויות המנוצלות הידועות של CISA, מגרסה 1.74.2 עד 1.83.6, כולל וקטור הזרקה דרך MCP | הוסק משם הקובץ ומהמוצר |
sub2api_cve_exploit.json ושלושה שלבים מאוחרים יותר | CVE-2026-27812 | הרעלת איפוס סיסמה ב-Sub2API באמצעות כותרות Host ו-Forwarded מהימנות, המובילה להשתלטות על חשבון. נוצלה בטבע, לפני 0.1.85 | הוסק |
newapi_stripe_bypass_results.json, newapi_stripe_exploited.json, newapi_quota_overflow_results.json | CVE-2026-41432 | עקיפת חתימת webhook של Stripe ב-New-API באמצעות סוד ריק, המקנה מכסה בלתי מוגבלת ללא תשלום, לפני 0.12.10 | הוסק |
newapi_user_token_leak_results.json, oneapi_user_token_leak_results.json, newapi_ssrf_bypass_results.json | CVE-2026-30886 | הפניה ישירה לא מאובטחת לאובייקט ועקיפת אימות ב-New-API בנקודת הקצה של פרוקסי הווידאו, החושפות תוכן של משתמשים אחרים ומאפשרות לתוקף לצרוך אישורי גישה של הקורבן במעלה הזרם | הוסק |
litellm_ssti_prompts_results.json | אין פרסום אבטחה יחיד | הזרקת תבניות בצד השרת ב-Jinja2 נגד נקודות קצה של פרומפטים ותבניות | הוסק |
תוכנו של אף קובץ לא הגיע אלינו; כל שורה נשענת על שם הקובץ. בשניים מהם צפינו באופן עצמאי בטכניקה מגיעה לחיישן שלנו, עקיפת כותרת ה-Host והזרקת ה-SQL בנתיב האימות, מה שמאשש את הטכניקה ולא את הקובץ. ארבעת הנותרים נשענים על שם הקובץ בתוספת פרסום האבטחה הידוע של המוצר, ומסומנים ככאלה.
הדפוס בכל השישה זהה. כל פרסום אבטחה הוא משנת 2026, כמה מהם מאותו רבעון, ואין בהם מחקר מקורי. keyHunter מתעש פגמים בחומרה גבוהה שנחשפו לאחרונה במערכת האקולוגית של פרוקסי LLM בקוד פתוח ברגע שהם מתפרסמים. זהו חלון קצר, מול סוג תוכנה שלעיתים קרובות מותקן בידי מפתח אחד ואז נזנח.
כוונה: נרטיב התחרות מול ספריית התוצאות
המפעיל מתאר זאת לסוכן שלו עצמו כהגשה לתחרות. אוצר המילים עקבי לאורך השיחה שהופקה: 比赛项目 (פרויקט תחרות), 评委 (שופטים), 答辩材料 (חומרי הגנה בעל פה), ספריית contest-kit, ועבודה המאורגנת ב-第一轮 וב-第二轮, סבב ראשון וסבב שני.
כשנשאל על ההיקף, המפעיל מפורש בכך שהיעד הוא אישורי גישה ברירת מחדל, במקור:
llm 的主要就是那几个默认密码为主流,用自己的 sk 那种没办法抓到啊
אצל ה-LLM זה בעיקר אותן כמה סיסמאות ברירת מחדל ששולטות; את אלה שמשתמשים במפתחות
sk-*משלהם אין שום דרך לתפוס.
הסוכן מסכים, ומאשר שניסיונות האימות מוגבלים לשלושה מקרים: ללא אימות, sk-test, ו-sk-1234, כשהאחרון הוא המפתח שבו משתמש תיעוד ההתחלה המהירה של LiteLLM עצמה.
ואז יש את /root/keyHunter-skill/results/. רשימת הקבצים שבה מציינת קבצים להרצת קוד מרחוק, הזרקת SQL, הזרקת תבניות, זיוף בקשות בצד השרת, חטיפת מושבים נגד Sub2API, ריסוס אישורי גישה, דליפת אסימוני משתמש, גלישת מכסה, ושניים לעקיפת webhook של Stripe, אחד מהם newapi_stripe_exploited.json. בידינו השמות, ולחלק מהקבצים גם הגדלים; תוצאות עקיפת Stripe מגיעות ל-2.4 MB, אף שתוכנן מעולם לא הגיע אלינו. האמירה הניתנת להגנה היא שהמפעיל בנה והריץ כלים לעקיפת תשלום לקבלת מכסה בלתי מוגבלת נגד New-API, ושהפגיעות CVE-2026-41432 היא פגיעות אמיתית מסוג זה בדיוק. האם 2.4 MB של הרשומות הם טעינות תשלום הונאתיות שהושלמו או ניסיונות בלבד, איננו יכולים לראות. ה-_exploited בשם הקובץ הוא מילתו של המפעיל; לא קראנו את הרשומות.
אנו משאירים את שתי הפרשנויות פתוחות. ייתכן שהתחרות אמיתית, והניצול הוא קו עבודה נפרד שהמפעיל אינו דן בו עם סוכן שמנהל יומנים; וייתכן שהתחרות היא כיסוי למבצע גניבה. אנו מעריכים שההבחנה אינה מהותית עבור מגינים: היכולת והסיכון לפאנל חשוף זהים תחת שתי הפרשנויות.
פרצה במלאכה: הסוכן של המפעיל עצמו ביקר את ערכת הכלים
הקטע השימושי ביותר בשיחה שהופקה הוא סקירת קוד. המפעיל שאל את הסוכן שלו מדוע שיעור הפגיעה בסריקה כה נמוך, והסוכן עבר על הסורק שורה אחר שורה.
תשובת הסוכן, מצומצמת למה שמגן יכול להשתמש בו: הסורק מוסיף פרוטוקול בתחילת שדה host של FOFA שלעיתים קרובות כבר נושא פרוטוקול, ומייצר כתובות מהצורה https://https://<target>, כך שמארחים חיים נרשמו כמתים. מאגר התהליכונים אוסף תוצאות בסדר היצירה ולא בסדר ההשלמה, ולכן בקשה איטית אחת חוסמת את כל מה שמאחוריה. CONCURRENCY=200 על מכונה בעלת ארבע ליבות מייצר תפוגות זמן משל עצמו. ניכוי כפילויות לפי IP משליך פורטים תקפים אחרים באותה כתובת. קיבוע temperature גורם לקריאה שגויה של שגיאת תאימות ככשל.
לגבי זיהוי מלכודות הדבש שלהם הסוכן היה בוטה: הוא שופט בעיקר לפי האם התשובה זהה או קצרה מחמישה תווים, מה שפוסל מודלים רגילים ומחמיץ מלכודות טובות. ולמרות שהמפעיל ביקש ממנו לזהות משיבים שאינם סיניים, הקוד לא הכיל כל לוגיקת זיהוי שפה.
הוא גם סימן את היגיינת האבטחה שלהם: מפתח FOFA מוטמע בקוד הסקריפט, נתיבים מוחלטים שנכתבו עבור /root בעוד שהמשתמש בפועל הוא /home/developer, except: pass שבולע כל סיבת כשל, עותק נפרד של הסקריפט לכל מדינה, וקבצי תוצאות המחזיקים יעדים ושיטות אימות ללא בקרת גישה או השחרה.
הנקודה האחרונה ממסגרת מחדש את המשפך. שיעור הפגיעה של 0.61% בארצות הברית מודד חשיפה דרך סורק עם באגים ידועים, ולכן השיעור האמיתי של מופעי LiteLLM חשופים גבוה מזה שמראות תוצאות המפעיל עצמו. כעת יש להם סוכן שימשיך לתקן את הבאגים הללו.
תשתית מונטיזציה
אותו מארח מריץ מופע New-API משלהם: calciumion/new-api:latest ב-Docker, מפורסם בפורט 8901, עם נתונים ממופים לצד תוצאות הסריקה. סביבו נמצאים newapi_watchdog.py, קובץ גיבוי ערוצים, ועותק ארוז של הכול.
New-API הוא פאנל אגרגציה. הוא לוקח ערימה של מפתחות ספקים במעלה הזרם ומציג אותם כ-API אחד עם חשבונות משתמש ומכסות משלו. הקמת דבר כזה לצד צינור לקציר מפתחות היא בעלת מטרה ברורה: מפתחות שנקצרו הופכים לערוצים בפאנל, והפאנל הופך לגישה שניתן למכור. לא צפינו במכירה חוזרת ואיננו טוענים שהתרחשה; התשתית לכך מותקנת ופועלת.
מאות נתבים חינמיים דומים הבנויים על תבניות sub2api ו-new-api כבר מסתובבים ברשת, ו-keyHunter הוא מבצע אחד בתוך אותה מערכת אקולוגית.
שיוכי אשכול
טביעת אצבע של לקוחות מקשרת את שני המארחים הללו לקבוצה רופפת של אחרים הפועלים באותו משטח: מארח טאיוואני המריץ סריקות CVE והנפקת מפתחות, מארח בהונג קונג המשגר את אותה הזרקת SQL, ובמרחק צעד נוסף, צייד פאנלים של LLM ומנצל לוחות מחוונים של Ray, שהתפרצויות היום הבודד שלהם נפלו ב-15 וב-21 באוגוסט, בהפרש של שישה ימים. החפיפות פועלות במקומות מסוימים על סטאקים גנריים של לקוח, ולכן הדבר נקרא ככלים משותפים וזירה משותפת ולא כיד אחת על מקלדת אחת. יש להתייחס לכך כאל קהילה בעלת זיקה לסין החולקת כלים לציד פרוקסי LLM. אף מזהה אינו קושר זאת ל-APT בעל שם, ולכן אנו עוקבים אחר הדבר כאשכול פעילות.
מזהי פריצה
רשת ותשתית, בצורה מנוטרלת:
| מזהה | תפקיד |
|---|---|
39.98.82[.]200 | שער סוכן, איסוף מודיעין, הזרקת SQL (Alibaba Cloud, AS37963, CN) |
101.43.41[.]72 | נקודת קצה של ממסר בפורט 8087, עובד תת-סוכן מואצל (Tencent Cloud, AS45090, CN) |
hamal.cc[.]cd | מראה לא רשמית של FOFA שאליה הסורק פונה |
cae332848db5… | מפתח ה-FOFA API של המפעיל עצמו, מוטמע בקוד litellm_scan_hw.py. נקטע כאן; הערך המלא נשמר לצורך דיווח ל-FOFA ולא פורסם |
טביעות אצבע של לקוח וסוכני משתמש:
po11nn070000_ebbca96fac43_00000000 shared across both nodes
Hermes-Agent/0.18.0
Hermes-Panel/1.0
Mozilla/5.0 (CVE-2026-49468-Scanner)
ממצאי מארח. אלה נתיבים במכונות של המפעיל, שימושיים לציד מארח דומה או פריסה שנייה:
/home/developer/litellm_verifier.py real-chat verifier and honeypot classifier
/home/developer/test_litellm_verifier.py unit tests
/home/developer/litellm_endpoint.py endpoint normalise and dedupe
/home/developer/litellm_scan_hw.py FOFA scanner, US, AWS excluded
/home/developer/litellm_scan_gb_hw.py
/home/developer/litellm_scan_it_hw.py
/home/developer/litellm_scan_us_30d_optimized.py
/home/developer/contest-kit/keyHunter-skill/
/home/developer/backups/litellm_verifier_round2_<ts>/SHA256SUMS
/root/keyHunter-skill/results/
/root/keyHunter-skill/{honeypot_test.py, verify_country_models.py, add_to_panel.py, report.py}
/root/.ssh/hw_vm_key key to the scanning VM, developer@127.0.0.1:8888
/opt/hermes-simple-panel/app.py config panel, port 9120
/root/new-api.tar.gz, /root/newapi_watchdog.py
שמות מיומנויות ופרויקטים, שהם נקודות הציר החזקות ביותר כמחרוזת בודדת:
keyhunter / keyHunter
contest-kit
ai-proxy-panel-audit
fofa-panel-recon
delegation-orchestration
התנהגותי:
FOFA: (title="LiteLLM" || body="LiteLLM") && country="XX" && org!="AMAZON-AES"
auth: no credential, then sk-test, then sk-1234
SQLi: ' OR '1'='1 in the API key field
verify: a real chat completion per advertised model; a /models listing alone is rejected
verdict strings: honeypot_or_unusable, trusted_pass, unavailable,
formatted_false_success, non_chinese_evidence
services on actor infra: new-api :8901, config panel :9120, agent gateway
זיהוי
אם אתם מריצים פרוקסי LLM שנגיש מהאינטרנט, הרצף כולו נראה ביומנים של השער עצמו. בפורמט Sigma, פורמט הכללים הניטרלי לספקים שרוב פלטפורמות ה-SIEM יכולות לייבא:
title: AI proxy panel enumeration consistent with keyHunter
id: 2c6f9a41-8e07-4b53-9f1a-7d0c4b62ae35
status: experimental
description: >
The keyHunter discovery and verification sequence against an exposed LLM
proxy: an unauthenticated model listing followed by per-model chat
completions from the same source, or one of the cluster's user agents.
references:
- https://kinryu.sh/reports/keyhunter-llm-proxy-key-harvesting/
logsource:
category: webserver
detection:
model_listing:
cs-uri-stem|endswith:
- '/v1/models'
- '/models'
admin_paths:
cs-uri-stem|startswith:
- '/key/'
- '/user/'
- '/organization/'
cluster_agents:
c-useragent|contains:
- 'Hermes-Agent'
- 'Hermes-Panel'
- 'CVE-2026-49468-Scanner'
admin_allowlist:
c-ip|cidr: '10.0.0.0/8' # replace with your own admin range
condition: (((model_listing or admin_paths) and not admin_allowlist) or cluster_agents)
falsepositives:
- Client libraries that legitimately call /v1/models on startup from allow-listed ranges
level: high
יומן גישה של שרת אינטרנט אינו מתעד את כותרת Authorization, ולכן יש לתפוס את ניסיונות אישורי ברירת המחדל וההזרקה ביומן הבקשות של הפרוקסי עצמו: המחרוזות המילוליות sk-1234 ו-sk-test, היעדר אישור, ו-' OR '1'='1 בשדה המפתח.
שלושה מהלכי ציד התנהגותיים שאינם דורשים מנוע כללים:
- חפשו מקור יחיד שמציג את רשימת המודלים שלכם ואז שולח בדיוק השלמת צ’אט קצרה אחת לכל אחד מהם בתורו. סריקת האימות הזו היא חתימת המבצע וקשה להסוות אותה.
- התריעו על פרומפטים המבקשים מהמודל להצהיר על זהותו האמיתית בניגוד לפרמטר ה-API, הבדיקה שרוכש מריץ לפני שהוא נותן אמון בגישה גנובה.
- השוו באופן קבוע את רשימת הערוצים וטבלת המשתמשים של הפאנל שלכם. חילוץ מפתחות וייצוא חשבונות משאירים את הפאנל פועל כרגיל, ולכן שום דבר אחר לא יגלה לכם.
מה לעשות
התייחסו לכל פרוקסי LLM החשוף לאינטרנט כאל פרוץ מרגע החשיפה. keyHunter סורק מדינה ביום ומנצל CVE שפורסמו תוך שבועות ממועד הפרסום.
- מקמו את LiteLLM, One-API, New-API, Sub2API וכל דבר דומה מאחורי פרוקסי הפוך המבצע אימות או ברשת פרטית. אף אחד מהם אינו מגיע עם ברירת מחדל שניתן להגן עליה בחשיפה לאינטרנט.
- עדכנו לגרסה הנוכחית. מבין ששת פרסומי האבטחה שלמעלה, ה-RCE ב-LiteLLM נמצא ברשימת הפגיעויות המנוצלות הידועות של CISA, וההשתלטות על חשבון ב-Sub2API אושרה כמנוצלת בטבע.
- החליפו את מפתח המאסטר.
sk-1234הוא הערך שבמדריך ההתחלה המהירה של LiteLLM עצמה, והוא אחד משלושה אישורים בלבד שהמפעיל הזה טורח לנסות. - הגבילו את
/openapi.jsonואת/docs. לקוח אנונימי לא אמור להיות מסוגל להוריד את משטח ה-API הניהולי שלכם. - הגדירו תקרת תקציב והיקף לכל מפתח וירטואלי, כך שחילוץ יניב משהו שאינו שווה מכירה חוזרת.
- אם אתם מקבלים תשלומי Stripe דרך New-API, ודאו שסוד החתימה של ה-webhook אכן מוגדר. סוד ריק הוא כל מהותה של CVE-2026-41432.
- החליפו כל מפתח ספק במעלה הזרם ששכן אי פעם בפאנל שאינכם יכולים להוכיח שמעולם לא היה חשוף.
מיפוי MITRE ATT&CK
| טקטיקה | טכניקה |
|---|---|
| איסוף מודיעין | T1596.005 חיפוש במאגרי מידע טכניים פתוחים: מאגרי סריקה (FOFA, לפי מדינה, AWS מוחרג); T1595.002 סריקה אקטיבית: סריקת פגיעויות (בדיקות HTTP קלות ועמוקות) |
| פיתוח משאבים | T1583.003 רכישת תשתית: שרת פרטי וירטואלי (Alibaba, Tencent, Huawei); T1588.002 השגת יכולות: כלי (Hermes Agent, OpenClaw, מנוי FOFA, github_copilot/gpt-5.6-sol כמנוע ההיסק) |
| גישה ראשונית | T1190 ניצול יישום פונה-ציבור (עקיפת אימות בכותרת Host, הזרקת SQL טרום-אימות, הזרקת פקודות, SSTI, SSRF נגד LiteLLM, Sub2API ו-New-API) |
| התחמקות מהגנות | T1480 מעקות בטיחות להרצה (סיווג מלכודות דבש, ניקוד non_chinese_evidence, סינון org!="AMAZON-AES") |
| גישה לאישורים | T1078.001 חשבונות תקפים: חשבונות ברירת מחדל (ללא אישור, sk-test, sk-1234); T1552.001 אישורים לא מאובטחים: אישורים בקבצים (חילוץ מפתחות אל exported_keys.json) |
| גילוי | T1518 גילוי תוכנה (הצגת רשימת מודלים ואימות לכל מודל); T1087 גילוי חשבונות (מניית משתמשים מול מישור הניהול) |
| איסוף | T1213 נתונים ממאגרי מידע (ייצוא חשבונות, נרמול, ארכוב) |
| פיקוד ושליטה | T1102 שירות רשת (שרשור WeChat כערוץ הטלת המשימות) |
| השפעה | T1657 גניבה פיננסית (עקיפת webhook של Stripe, גלישת מכסה); T1496 חטיפת משאבים (תשתית מכירה חוזרת של היסק שנקצר) |
מתודולוגיה והערות אנליסט
כמעט כל מה שלעיל הוא פלט ששלח הסוכן של המפעיל עצמו לאחת ממלכודות הדבש שלנו בין 16 ל-20 באוגוסט 2026: 283 נתיבי קבצים ייחודיים, רשימות שירותים ומכולות, סיכומי תוצאות סריקה, וחיפושים שביצע הסוכן בזיכרון ה-WeChat של עצמו.
מה שבידינו הוא אפוא תת-קבוצה של המערכת האמיתית שלהם, תחומה במה שהסוכן שלהם מנה במקרה. תוכנו של אף קובץ לא הגיע אלינו; בידינו שמות, גדלים וחותמות זמן מתוך רשימות הספריות של המפעיל עצמו. תפוקות הסריקה וספירות הפסיקה הם נתוניו של המפעיל עצמו, כפי שדיווחו הכלים שלו, ולא אימתנו אף אחד מהם באופן עצמאי. הסוכן שלהם מצא באגים אמיתיים בסורק שלהם, ולכן יש לקרוא את שיעורי הפגיעה כרצפה לחשיפה ולא כמדידה שלה.
השיחה בשפה הסינית מתורגמת. מחרוזות טכניות, נתיבים ומזהים נותרו כלשונם הן בדוח זה והן בתרגום.
ארבע מגבלות על מה שהדברים תומכים בו. הייחוס נעצר באשכול פעילות על תשתית מבוססת-סין המשתמשת בסינית לאורך כל הדרך; אין קישור לקבוצה בעלת שם ואיננו מציעים כזה. הכוונה עמומה באמת בין הגשה לתחרות לבין מבצע גניבה. תוכנו של אף קובץ ניצול לא הגיע אלינו, ולכן כל ששת מיפויי ה-CVE נשענים על שמות קבצים; בשניים מהם נצפתה הטכניקה באופן עצמאי מגיעה לחיישן שלנו, מה שמאשש את הטכניקה ולא את הקובץ. האם מפתח גנוב נוצל בפועל לאחר מכן אינו ידוע: הפלט של המפעיל נותן ספירות בלבד, 3 שחולצו ו-17 שיוצאו, וללא ערך מפתח שניתן להתחקות אחריו.
כתובות של צד שלישי שהסורק שלהם נגע בהן אינן מפורסמות, ובכללן המארח שהם עצמם סימנו כמלכודת דבש, השייך למחקר של גורם אחר. מפתח ה-FOFA API שלהם נקטע כאן.
מערכי מזהים מלאים והלכידות שבבסיסם זמינים לחוקרים לפי בקשה: contact@kinryu.sh.