SSH bibliotēkā libssh2 atrasta kļūda, kas ļauj ļaunam serverim palaist kodu uz datora, kurš tam pieslēdzas. Uzbrukums notiek SSH rokasspiediena laikā — pirms lietotājs paspēj pieteikties un bez jebkādas paroles. Kļūda reģistrēta kā CVE-2026-55200 un saņēmusi CVSS 4.0 novērtējumu 9,2 no 10.
Bibliotēka libssh2 ir iebūvēta rīkos, ko izstrādātāji lieto katru dienu: curl, dažādos Git grafiskajos klientos, PHP un daudzās dublēšanas programmās. Skarto programmu loks tāpēc ir plašs, un daļā gadījumu labojuma gaidīšana ievelkas, jo bibliotēka ir iebūvēta pašā programmā, nevis atsevišķa sistēmas komponente.
Kas tieši noticis
Kļūda atrodas funkcijā ssh2_transport_read() failā transport.c. Šī funkcija apstrādā ienākošās SSH paketes rokasspiediena laikā un nepārbauda augšējo robežu laukam packet_length.
Katra SSH binārā pakete sākas ar četru baitu lauku, kas norāda paketes garumu. Saņēmējam šis skaitlis jāizmanto, lai atvēlētu buferi un izlasītu pareizo baitu skaitu. Ja garuma pārbaudes nav, uzbrucējs var norādīt vērtību, kas ir daudz lielāka par reālo bufera izmēru. libssh2 tad raksta ārpus atvēlētās atmiņas — tā saucamais out-of-bounds write. Tas sabojā kaudzes atmiņu (heap) un pieļauj koda izpildi. Tā kā parsēšana notiek rokasspiediena laikā, kad šifrētā sesija vēl nav izveidota, uzbrukumam nav vajadzīga ne parole, ne atslēga.
Uzbrukuma virziens ir neparasts. Šis ir klienta puses caurums, tātad apdraudēts ir tas, kurš pieslēdzas, nevis serveris. Ja skripts vai rīks ar libssh2 pieslēdzas serverim, kuru pārvalda uzbrucējs vai kurš jau ir uzlauzts, serveris var pārņemt klienta mašīnu jau rokasspiediena solī. Uzbrukumam nav vajadzīga ne lietotāja darbība, ne akreditācijas dati, ko apraksta Arctic Wolf savā brīdinājumā.
Pietiek ar to, ka klients pieslēdzas nepareizajam serverim — pārējo izdara pati atbildes pakete rokasspiediena laikā.
Kur libssh2 slēpjas
Vislabāk zināmais lietotājs ir curl, kas SSH un SCP savienojumiem izmanto tieši libssh2. Bibliotēku iekļauj arī vairāki Git grafiskie klienti, PHP paplašinājums ssh2, dublēšanas rīki un liels skaits IoT un iegulto ierīču. Tieši iegultajās ierīcēs labojums parasti kavējas visilgāk, jo ražotāji programmatūru atjaunina reti.
Blakus CVE-2026-55200 ir reģistrētas vēl divas saistītas kļūdas — CVE-2026-55199 un CVE-2025-15661 —, ko CloudLinux uzskaita alt-libssh2 pakotnei. Kopā tās veido komplektu, kuru izplatītāji lāpa vienā piegājienā.
Kāpēc to grūti aizlāpīt
Labojums koda bāzē ir ieviests ar commit 97acf3df, taču publikācijas brīdī oficiāli marķēta libssh2 laidiena ar šo labojumu vēl nebija. Vairākas Linux distribūcijas patlaban lāpu pārnes pašas. Skartās pakotnes jau uzskaita Debian drošības izsekotājs un Ubuntu drošības datubāze.
Otra problēma ir statiskā sasaiste. Daudzas programmas iekļauj libssh2 kodu sevī, nevis izmanto sistēmas koplietojamo bibliotēku. Tādā gadījumā sistēmas atjaunināšana neko nemaina — jāgaida katras atsevišķās programmas atjauninājums. Tāpēc caurumu ir grūti gan atklāt, gan aizvērt: nepietiek ar vienu komandu, kas atsvaidzina sistēmas pakotnes.
Kā pārbaudīt savu sistēmu
Skartas ir visas libssh2 versijas līdz 1.11.1 ieskaitot. Ja rīks ir curl, versiju var redzēt ar komandu curl --version: izvadā parādās rinda ar libssh2/1.11.1 vai vecāku numuru. Sistēmas bibliotēkas versiju uz Debian un Ubuntu var noskaidrot ar dpkg -l libssh2-1, bet statiski sasaistītām programmām šī pārbaude neko nepateiks — tur jāskatās katras programmas paziņojumi.
Praktiskā rīcība sadalās trīs soļos. Pirmkārt, atjaunināt sistēmas libssh2 pakotni, tiklīdz distribūcija piegādā lāpīto versiju. Otrkārt, atsevišķi atjaunināt katru programmu, kas bibliotēku iekļauj sevī — īpaši Git klientus un dublēšanas rīkus. Treškārt, izvairīties no automātiskas pieslēgšanās SSH serveriem, kuru izcelsme nav zināma vai pārbaudīta.
Īpaša uzmanība pienākas skriptiem, kas darbojas paši. Dublēšanas darbi, izvietošanas cauruļvadi un uzraudzības rīki mēdz pieslēgties attāliem serveriem pēc grafika, bez cilvēka klātbūtnes. Ja kāds no šiem serveriem tiek uzlauzts, klienta puses caurums pārvēršas par ceļu atpakaļ uz mašīnu, kas darbu palaida. Tāpēc pirmie jāatjaunina tieši rīki, kas pieslēdzas automātiski.
Laika līnija un demonstrācijas kods
Kļūda tika izpausta 2026. gada 17.–29. jūnijā, un publiskais apraksts parādījās 30. jūnijā. Aptuveni tajā pašā laikā GitHub tika publicēts darbojošs demonstrācijas kods (proof-of-concept). Kā ziņo The Hacker News, publiski pieejams PoC nolaiž uzbrukuma slieksni: uzbrucējam vairs nav pašam jāizstrādā ekspluatācija, pietiek ar gatavu kodu un serveri, kuram upuris pieslēdzas.
Oficiālais apraksts ir pieejams GitHub drošības padomu datubāzē ar identifikatoru GHSA-r8mh-x5qv-7gg2. Līdz brīdim, kad iznāks marķēts libssh2 laidiens ar labojumu, vienīgā droša rīcība ir atjaunināt katru programmu, kas bibliotēku iekļauj, un neļaut automātiskiem skriptiem pieslēgties nepārbaudītiem SSH serveriem.
Komentāri
Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.