სესიის მიტაცება მოქმედებაში: როგორ იპარავენ თავდამსხმელები თქვენს სესიას
ეს თეორიულად არ არის, ეს რეალურად ხდება pipelines, builds და ბრაუზერის სესიები. თავდამსხმელები სესიის გატაცების განსახორციელებლად სხვადასხვა რეალურ ტაქტიკას იყენებენ, მათ შორის:
- HTTP-ით (TLS-ის გარეშე) გაგზავნილი ქუქი-ფაილების სნიფირება
- წვდომის ტოკენების მოპარვა ან JWT-ები შენახულია ჟურნალებში
- მოძველებული სატესტო გარემოდან ტოკენების ან ქუქი-ფაილების ხელახლა გამოყენება
მაგალითი: HTTP-ით გაგზავნილი ქუქი-ფაილი
⚠️გაფრთხილება: ეს მაგალითი აჩვენებს ქუქი-ფაილების არასაიმედო გადაცემას.
GET /dashboard HTTP/1.1
Host: vulnerable.app
Cookie: sessionid=abc123
HTTPS-ის გარეშე, MITM თავდამსხმელს შეუძლია სესია მოიპაროს და მომხმარებლის სახელით გაითამაშოს.
მაგალითი: ლოგებში გამოვლენილი ტოკენი
[INFO] Login succeeded - JWT: eyJhbGciOi...
⚠️არ შეინახოთ ტოკენები ჟურნალში; თავდამსხმელებს, რომლებსაც აქვთ CI ჟურნალებზე წვდომა, შეუძლიათ მყისიერად განახორციელონ სესიის მიტაცება.
კოდის დონის შეცდომები, რომლებიც სესიის გატაცებას იწვევს
სესიის მიტაცების შეტევების უმეტესობა ექსპლოიტებით არ იწყება; ისინი არასწორი კოდით იწყება. აი, რა ხსნის კარს:
მყარი კოდირებული საიდუმლოებები
const jwtSecret = 'mydevsecret';
⚠️მყარი კოდირებული საიდუმლოებები ტოკენების გენერირებას პროგნოზირებადს ხდის.
ქუქი-ფაილებზე უსაფრთხოების ფლაგების ნაკლებობა
res.cookie('sessionid', token);
⚠️არა მხოლოდ Httpამავე უსაფრთხოამავე იგივე საიტიეს სესიის მიტაცებაა, რომელიც მოლოდინშია.
უფრო უსაფრთხო ვერსია:
res.cookie('sessionid', token, {
httpOnly: true,
secure: true,
sameSite: 'Strict'
});
ტოკენების ხელახალი გამოყენება სხვადასხვა გარემოში
- სატესტო გარემოში შექმნილი ტოკენები კოპირდება ეტაპობრივად ან თუნდაც წარმოებაში.
- ტოკენებზე ფარგლები ან გარემო არ არის სავალდებულო.
- სესიები არ იწურება და არ იცვლება.
ყველა ეს ნიმუში პირდაპირ ხელს უწყობს ჰაკიადის გამოყენებას.
CI/CD მდე Pipeline ხარვეზები, რომლებიც რისკს ზრდიან
CI/CD ხშირად აძლიერებს იმას, რაც დეველოპერებს ლოკალურ კოდში გამოტოვებული აქვთ. Pipeline-თან დაკავშირებული სესიის გატაცების ვექტორები მოიცავს:
- გაჟონა ავტორიზაცია სათაურები შექმნის ჟურნალებში
- სტატიკური სესიის გასაღებები შენახულია .ენვ ფაილი commitგიტზე გადასვლის შემდეგ
- ტოკენის ხელახლა გამოყენება pipeline ეტაპები
რეალური რისკი: CI ჟურნალში დაბეჭდილი ტოკენი
steps:
- run: echo "Token: $LOGIN_TOKEN"
⚠️სესიის ტოკენები არასდროს არ უნდა დაიბეჭდოს ან გამეორებულ იქნას.
სარისკო .env-ის დამუშავება
APP_KEY=base64:aLongHardcodedKeyHere=
⚠️თუ ეს ფაილი გაჟონავს, შესაძლოა, ყველა წარსული სესია კომპრომეტირებული იყოს.
სესიის მიტაცება არ მთავრდება აპლიკაციით; ის გადადის მთელ სისტემაში. pipelineს და გარემო.
სესიის მიტაცების პრევენცია ჩაშენებულია დეველოპერის სამუშაო პროცესებში
გატაცების შესაჩერებლად, პრევენცია უნდა იყოს ინტეგრირებული შემუშავებისა და მიწოდების სამუშაო პროცესებში.
პრევენციის საკონტროლო სია:
- ყოველთვის დააყენეთ ქუქი-ფაილების ფლაგები: HttpOnly, Secure და SameSite
- არასოდეს შეინახოთ ტოკენები ან სესიის იდენტიფიკატორები
- HTTPS-ის გამოყენება ყველა გარემოში (ლოკალური, ეტაპობრივი, საწარმოო)
- რეგულარულად შეცვალეთ სესიის საიდუმლოებები და გასაღებები
- დარწმუნდით, რომ ტოკენების ვადა სწრაფად იწურება და მათი ხელახლა გამოყენება შეუძლებელი იქნება
- სესიების კლიენტის ატრიბუტებთან (IP, მომხმარებლის აგენტი) დაკავშირება
- სფეროს ტოკენები გარემოს მიხედვით (ტესტში არ გამოიყენოთ prod ტოკენები ხელახლა)
- გამოიყენეთ ხანმოკლე წვდომის ტოკენები განახლების მექანიზმებით
- თავიდან აიცილეთ კოდირებული საიდუმლოებები ან გასაღებები საწყის კოდში
- სესიასთან დაკავშირებული ყველა ლოგიკის დადასტურება CI/CD pipelines
უფრო უსაფრთხო CI მაგალითი:
- name: Validate secrets
run: |
if grep -q 'APP_KEY=' .env; then
echo "Unsafe APP_KEY found in .env!" && exit 1
fi
სესიის მიტაცების პრევენცია ნიშნავს, რომ CI უნდა გახდეს თქვენი დაცვის მეორე ხაზი.
ლოკალური შეცდომიდან მიწოდების ჯაჭვის საფრთხემდე: მარცხნივ გადასვლა Xygeni-ით
ის, რაც იწყება როგორც ქუქი-ფაილების არასწორი კონფიგურაცია, შეიძლება სრულ დარღვევად გადაიზარდოს, თუ არ შემოწმდება. ისეთი ინსტრუმენტები, როგორიცაა ქსიგენი შესაძლებელს ხდის:
- სესიის ტოკენების ნაკადის თვალყურის დევნება კოდიდან წარმოებამდე
- წყაროში დაკარგული ქუქი-ფაილების აღმოჩენა
- საიდუმლოებების სკანირება .ენვ, კონფიგურაციები ან ჟურნალები
- მესამე მხარის პაკეტებში დაუცველი სესიის პრაქტიკის მონიტორინგი
Xygeni ხელს უშლის ლოკალური სესიის პრობლემების გადაქცევას მიწოდების ჯაჭვის მასშტაბით შეტევის ვექტორებად.
კარის დახურვა გატაცებაზე
თუ ამას აქტიურად არ აღკვეთთ, კარს ღიად ტოვებთ. ყოველი დაუცველი ქუქი-ფაილის დროშა, გაჟონილი ტოკენი და მოძველებული სესია თავდამსხმელებისთვის საყრდენია.
ჩადეთ სესიის გატაცების პრევენცია თქვენს კოდის ბაზაში და CI/CD. სესიის ნაკადების მონიტორინგი სხვადასხვა გარემოში. გამოიყენეთ ისეთი ინსტრუმენტები, როგორიცაა Xygeni, მარცხნივ გადასაადგილებლად და სესიის მიტაცების ბილიკების შესაჩერებლად, სანამ ისინი წარმოებამდე მიაღწევენ. დაიცავით სესია, თორემ თავდამსხმელები მას თქვენს წინააღმდეგ გამოიყენებენ.







