Vai neizdevies VPN rokasspiediens tiešām ir downgrade uzbrukums?
Downgrade uzbrukumi pastāv, taču lielākā daļa neizdevušos rokasspiedienu ir piedāvājuma nesakritība, slikts maršruts vai beidzies profils. Vispirms pārbaudiet, par ko tika vienots.
Rokasspiediens, kas beidzas ar kļūdu, šķiet kā uzbrukums, līdz apskatāt ziņojumu, un visbiežāk tā ir aritmētika: nav kopīga piedāvājuma, beidzies sertifikāts vai pakete, kas nekad neatnāca. Downgrade uzbrukums ir konkrēta lieta: pretinieks spiež abus galus uz vājāku uzvedību, nekā tie būtu izvēlējušies, un tas atstāj citus pierādījumus. Uzskatīt katru neveiksmi par ļaunprātību nozīmē meklēt upuri, kura var arī nebūt, bet uzskatīt īstu downgrade par konfigurācijas kļūdu atstāj vājāko rezultātu vietā. Šīs divas kļūdas maksā atšķirīgi, un tikai vienu no tām var lēti izlabot.
Ko downgrade uzbrukums patiešām maina
Mērķis nav uzlauzt šifru un nav uzminēt atslēgu. Mērķis ir ietekmēt sarunas tā, lai abas puses apstājas pie vecākas versijas vai vājāka algoritma, ar ko uzbrucējs tiek galā, vai lai viena puse ticētu, ka otra atbalsta tikai to.
Mainās vienošanās, nevis autentifikācija. Ja uzbrucējs var mainīt piedāvājumu, netiekot pamanīts, puses joprojām var pabeigt rokasspiedienu un joprojām autentificēt viena otru, bet ar parametriem, kurus uzbrucējs dod priekšroku. Tāpēc interesantais jautājums ir, vai pašas sarunas ir pārklātas ar integritātes aizsardzību.
Kāpēc pašām sarunām jābūt autentificētām
TLS 1.3 padara šo aizsardzību skaidru. Klients, kas piedāvāja jaunāko versiju, var atklāt klusi atkāpušos serveri, jo servera nejaušā vērtība nes fiksētu modeli, kad tas vienojas par 1.2 vai zemāku, un klientam, to ieraugot, ir jāpārtrauc. Viss transkripts ir pārklāts arī ar noslēguma ziņojumiem, tāpēc izmaiņas jebkurā sarunu vietā neizdodas vēlāk, nevis paiet klusi.
Vecākām protokola versijām bija vājāki stāsti, un tieši tāpēc ir svarīgi atkāpšanās noteikumi. TLS 1.0 galapunkts tajā pašā konfigurācijā nav downgrade uzbrukums; tas ir atļauts iznākums, ko jūs izvēlējāties atļaut. Atšķirība ir tajā, vai vājākais rezultāts nāca no aizsargāta lēmuma vai no neaizsargāta ceļa, ko starpnieks varēja ietekmēt. Kad to tā formulē, lielākā daļa incidentu pārvēršas konfigurācijas jautājumā.
IKEv2 uzvedas citādi, bet balstās uz to pašu ideju. Piedāvājums tiek nests apmaiņā, kas vēlāk autentificē abas puses, tāpēc starpierīce, kas pārraksta algoritmus, lauž autentifikāciju, nevis to vada. OpenVPN vadības kanāls aizsargā savas sarunas ar TLS un pēc tam izmanto šo kanālu, lai vienotos par datu kanāla šifriem, tāpēc interesantā ir tieši vadības kanāla žurnāla rinda.
Konfigurētā saderība nav uzbrukums
Administrators var apzināti atļaut vecākas izvēles, lai atbalstītu dokumentētu klientu, un šis lēmums ir redzams konfigurācijā. Uzbrucējs nevar izveidot šādu konfigurāciju; viņš var tikai izmantot ceļu, kas ļauj ietekmēt piedāvājumu.
Bīstamais labojums ir tas, kas noņem pierādījumu par atšķirību. Visu mantoto opciju iespējošana, sertifikāta pārbaudes izslēgšana vai jebkura šifra pieņemšana, lai kļūda pazustu, paplašina to, kam galapunkts piekritīs, un noņem pārbaudes, kas būtu ziņojušas par vājāko rezultātu.
Ja jums jāsaglabā viena veca opcija, norādiet iemeslu un klientu konfigurācijas komentārā, pēc tam ierobežojiet opciju ar profilu, kuram tā ir vajadzīga. Saderības izņēmums, kas ierobežots ar vienu klausītāju, ir auditējams; vispārīgi piemērotais ir tikai vājāks noklusējums, ko neviens neatceras esam izvēlējies.
Izlasiet neveiksmi, pirms nosaucat cēloni
Pirms jebkādām izmaiņām saglabājiet precīzu kļūdas virkni, klienta un servera versijas un laiku. Pēc tam klasificējiet: vai puses ne vienojās par piedāvājumu, vai paketes ceļš neizdevās, vai viena puse noraidīja parametru, ko kādreiz pieņēma?
Piedāvājuma nesakritība parasti nosauc vainīgās versijas vai algoritmus un neizdodas tajā pašā punktā katru reizi. Maršrutēšanas vai MTU problēma apstājas vai beidzas ar taimautu, un tā bieži mainās atkarībā no tīkla. Beidzies sertifikāts dod pārbaudes, nevis sarunu kļūdu.
Neviens no tā nav uzbrucēja pierādījums. Piešķirt ļaunprātīgu cēloni pirmajā neveiksmē ir kļūda, jo tā slēpj deterministisko kļūdu, kas neizdosies atkal rīt.
Apstipriniet, kas patiešām tika izvēlēts
Pēc jebkura labojuma izlasiet sarunāto rezultātu, nevis paļaujieties, ka savienojums pacēlās. Savienojums, kas izdodas tāpēc, ka pārbaude tika noņemta, ir rezultāts, no kura gribējāt izvairīties. Divas komandas zemāk parāda izvēlēto versiju un šifru TLS priekšā esošam galapunktam, kā arī vadības kanāla rindu no OpenVPN servera žurnāla.
openssl s_client -connect 198.51.100.30:443 -servername vpn.example.net -brief </dev/null
grep -iE 'Control Channel|Data Channel' /var/log/openvpn.log | tail -5Salīdziniet rezultātu ar konfigurāciju, ko bijāt iecerējis, nevis ar to, kas tagad savienojas. Ja izvēlētā versija ir vecāka par atļauto minimumu, profils vai atkāpšanās saraksts ir vieta, kur skatīties, un atbilde ir izlabot šo sarakstu, nevis pieteikt uzbrukumu un pārbūvēt visu ap to.