מדוע מבנה C יכול להפיק בקשת SOCKS פגומה
בדקו רוחבי שדה מפורשים, סדר בתים ו-I/O זרימה במקום להתייחס לפריסת המהדר כאל פורמט הרשת.
כתובת פרוקסי תקפה אינה הופכת הודעת SOCKS שנכתבה ביד לתקפה. שליחת מבנה C או C++ עשויה לשלוח ריפוד או מספרים שלמים בסדר המארח שהפרוטוקול מעולם לא ביקש.
עבור בקשת SOCKS5 מסוג CONNECT עם שם תחום, סדרו את הרצף הזה במפורש לאחר משא ומתן על השיטה וכל אימות שנבחר:
- גרסה, פקודה, בית שמור וסוג כתובת
- אורך התחום ובתי התחום
- פורט היעד בן שני הבתים בסדר בתי הרשת
אורכי הכתובות תלויים בגרסת SOCKS ובסוג הכתובת. שדות מספריים ברוחב קבוע זקוקים לייצוג המוגדר שלהם; למחרוזות תחום יש קידוד אורך משלהן. מסיים מחרוזת C אינו הוראה כללית להוסיף אפס להודעת הרשת.
| קיצור דרך ביישום | בעיה לבדיקה |
|---|---|
| הקצאת ערך 32 סיביות דרך מצביע 8 סיביות | הוא אינו פולט את כל ארבעת הבתים |
| המרת חוצץ למצביע למספר שלם גדול יותר | יישור וסדר בתים עדיין דורשים טיפול |
| הנחה שקריאה או כתיבה אחת היא הודעה אחת | TCP יכול להעביר רק חלק מרצף הפרוטוקול |
השוו כל שדה ליעד המיועד וטפלו ב-I/O חלקי. קבלת שני בתים אינה מוכיחה שהתשובה כולה הגיעה. בחינת הגבולות האלה יכולה להבחין בין בקשה פגומה לבין שרת שדוחה חיבור שתואר כראוי.