python-jose היא ספרייה בפייתון לעבודה עם חתימות קריפטוגרפיות ועם מפתחות. הרשומה הזאת מתארת בה בלבול אלגוריתמים, מצב שבו חתימה נבדקת בשיטה אחרת מזו שהצד המאמת התכוון אליה, והיא מציינת במיוחד מפתחות ECDSA בפורמט של OpenSSH ופורמטי מפתח אחרים. הציון שנקבע לה הוא 6.5 מתוך 10, והיא כוללת את כל הגרסאות עד 3.3.0 ועד בכלל.

מה החולשה?

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

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

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

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

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

מי מושפע?

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

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

האם מנוצלת בפועל?

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

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

מה עושים?

1. כדי לדעת אם זה נוגע אליכם, חפשו את python-jose בקובץ הדרישות של הפרויקט ובקובץ הנעילה שלו, ובדקו איזו גרסה נעולה שם.

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

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

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