ஒரு கூடுதல் புதிய வரி CONNECT க்குப் பிறகு TLS ஐ உடைக்கலாம்
கையால் எழுதப்பட்ட ப்ராக்ஸி இணைப்பான் ஒரு சுரங்கப்பாதையைத் திறந்து உடனடியாக TLS டிகோட் பிழையை உருவாக்கும்போது HTTP தலைப்பு சட்டகத்தை ஆய்வு செய்யுங்கள்.
CONNECT 200 திருப்பித் தரும்போது TLS உடனடியாக டிகோட் செய்ய முடியாவிட்டால், சான்றிதழ்கள் அல்லது சைஃபர்களை மாற்றும் முன் இணைப்பானில் உள்ள எல்லை பைட்டுகளை ஆய்வு செய்யுங்கள்.
உருவாக்கப்பட்ட அனுமதி மதிப்பு ஏற்கனவே புதிய வரியில் முடிந்திருக்கலாம். மற்றொரு வரி-முடிவைச் சேர்த்தால் HTTP தலைப்புகள் முன்னதாக முடிந்து, நோக்கமான Host புலம் அல்லது பிற எளிய உரை கோரிக்கைக்குப் பின் தங்கிவிடலாம்.
குறைந்தபட்ச HTTP/1.1 CONNECT கோரிக்கை வரிகளுக்கு இடையே CRLF மற்றும் முடிவில் காலி வரியைப் பயன்படுத்துகிறது:
b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"எந்த அனுமதி புலத்தையும் அந்த இறுதி காலி வரிக்கு முன் வையுங்கள், உள்ளே வரி முறிவு இல்லாமல். Python இல் "\n" புதிய வரியைக் குறிக்கிறது; பின்சாய்வுக்கோடும் n எழுத்தும் கொண்ட மூல சரம் குறிக்காது. நீக்க முயலும் முன் குறியாக்க உதவி எந்த பைட்டுகளை உருவாக்குகிறது என்பதைச் சரிபாருங்கள்—பழைய உதவிகள் வரி முறிவுகளைச் சேர்க்கக்கூடும்.
CONNECT வெற்றிபெற்ற பிறகு, மீதமுள்ள பைட்டுகள் சுரங்கப்பாதை நெறிமுறைக்குச் சொந்தமானவை. வழிதவறிய எளிய உரை TLS எதிர்பார்க்கும் சகாவை அடையலாம். வெற்றி நிலை தவறாக உருவாக்கப்பட்ட கோரிக்கைக்குப் பின் ஏற்கனவே வரிசையில் உள்ள பைட்டுகளைச் சரிசெய்ய முடியாது.
பெறுதல் எல்லையையும் ஆய்வு செய்யுங்கள். சாக்கெட்டை TLS க்கு ஒப்படைக்கும் முன் முழு ப்ராக்ஸி பதிலையும் படியுங்கள், பகுதி வாசிப்புகளைக் கையாளுங்கள், தலைப்புகளுக்கு அப்பால் வாசித்தவற்றைப் பாதுகாக்கவும். ஒரு சாக்கெட் வாசிப்பில் ஒரு முழு செய்தி இருக்க வேண்டியதில்லை.
இந்த பார்சர் உங்களுடையது என்றால், திருத்தப்பட்ட பைட் பிரதிநிதித்துவத்தை வயர் இலக்கணத்துடன் ஒப்பிடுங்கள்; கடவுச்சொல்லை மறைத்து நீளங்களையும் வரி எல்லைகளையும் தெரியும்படி வையுங்கள். ப்ராக்ஸி இணைப்பு மட்டுமே தேவைப்படும் பயன்பாட்டிற்கு, பராமரிக்கப்படும் இணைப்பான் இந்த சட்டகக் குறியீட்டை வைத்திருக்க வேண்டியதைத் தவிர்க்கிறது.