problēma
Kods, kas izsauc string_interpret_escape(), piešķir aizplūšanai buferi, pamatojoties uz faktisko izmēru, un atklātais rādītājs nonāk apgabalā ārpus bufera robežām. Attiecīgi, mēģinot apstrādāt ievades virkni, rodas situācija, kad tiek nolasīti dati no apgabala, kas atrodas ārpus piešķirtā bufera robežām, un mēģinājums rakstīt virkni bez atkāpšanās var novest pie rakstīšanas ārpus bufera robežām.
Noklusējuma konfigurācijā ievainojamību var izmantot, nosūtot speciāli izstrādātus datus uz SNI, kad tiek izveidots drošs savienojums ar serveri. Problēmu var izmantot arī, mainot peerdn vērtības konfigurācijās, kas konfigurētas klienta sertifikātu autentifikācijai, vai importējot sertifikātus. Uzbrukums, izmantojot SNI un peerdn, ir iespējams, sākot no atbrīvošanas
Uzbrukumam, izmantojot SNI, ir sagatavots ekspluatācijas prototips, kas darbojas uz i386 un amd64 arhitektūrām Linux sistēmās ar Glibc. Ekspluatācija izmanto datu pārklājumu kaudzes apgabalā, kā rezultātā tiek pārrakstīta atmiņa, kurā tiek saglabāts žurnālfaila nosaukums. Faila nosaukums tiek aizstāts ar "/../../../../../../../../etc/passwd". Tālāk tiek pārrakstīts mainīgais ar sūtītāja adresi, kas vispirms tiek saglabāts žurnālā, kas ļauj sistēmai pievienot jaunu lietotāju.
Pakešu atjauninājumi ar ievainojamības labojumiem, ko izlaiduši izplatījumi
Kā risinājumu, lai bloķētu ievainojamību, varat atspējot TLS atbalstu vai pievienot
ACL sadaļa “acl_smtp_mail”:
noliegt nosacījumu = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
noliegt nosacījumu = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
Avots: opennet.ru