PHP haavoittuvuus 21.10.2026 Lue lisää

Mitä on tietoturvapäivitysten takaisinsiirto eli backporting?

Takaisinsiirto (engl. backporting) tarkoittaa, että ohjelmiston uudemman version tietoturvakorjaus siirretään vanhempaan, yhä käytössä olevaan versioon. Haavoittuvuus korjaantuu, mutta versionumero pysyy ennallaan – siksi pelkkä numero ei kerro, onko järjestelmä suojattu.

Mitä takaisinsiirto on?

Kun ohjelmiston kehittäjät korjaavat haavoittuvuuden, korjaus julkaistaan yleensä uudessa versiossa. Uusi versio tuo kuitenkin mukanaan myös kaiken muun: uusia ominaisuuksia, muuttuneita oletusasetuksia ja rajapintamuutoksia. Tuotantopalvelimelle tällainen päivitys voi olla riskialtis.

Takaisinsiirrossa vanhaan versioon poimitaan vain se pieni muutos, joka sulkee haavoittuvuuden. Tunnettu esimerkki on Heartbleed: OpenSSL korjasi sen versiossa 1.0.1g, mutta Red Hat vei korjauksen asiakkaidensa käyttämään versioon 1.0.1e. Päivitetyn paketin nimi oli openssl-1.0.1e-16.el6_5.7 – upstream-versio pysyi 1.0.1e:nä, vain jakelun oma julkaisutunniste muuttui.

Tämä on ollut vakiokäytäntö lähes kaikissa Linux-jakeluissa (RHEL, Debian, Ubuntu, SUSE ja niiden johdannaiset) jo parikymmentä vuotta.

Miten se tehdään?

Jakelun tietoturvatiimi käy läpi viisi vaihetta:

  1. Korjauksen tunnistaminen. Selvitetään tarkalleen, mitkä koodimuutokset sulkevat haavoittuvuuden. Korjaus voi olla hajallaan useassa commitissa tai piilossa laajemman uudistuksen sisällä.
  2. Eristäminen. Kaikki korjaukseen liittymätön karsitaan pois, jotta jäljelle jää pienin mahdollinen muutos.
  3. Sovittaminen vanhaan koodiin. Vanhassa versiossa funktiot, tietorakenteet ja apurutiinit voivat olla erilaisia, joten korjaus usein kirjoitetaan osin uudelleen.
  4. Testaus. Varmistetaan, että haavoittuvuus on suljettu eikä mikään muu muuttunut, esimerkiksi kirjastojen binääriyhteensopivuus (ABI).
  5. Julkaisu. Paketti jaetaan normaalin päivityskanavan kautta. Upstream-versionumero pidetään tarkoituksella ennallaan, ja vain jakelun julkaisunumero kasvaa.

Versionumeron säilyttäminen on tietoinen valinta: se viestii, että ohjelmisto toimii kuten ennenkin. Ylläpitäjälle päivitys on rutiinia, ei siirtymäprojekti.

Miksi esimerkiksi PHP:n versionumero ei kerro tietoturvatilannetta?

PHP:n ja muiden ohjelmistojen kehittäjät julkaisevat korjaukset uusina pikkuversioina, esimerkiksi 8.1.2 → 8.1.3 → … Linux-jakelut eivät kuitenkaan seuraa näitä suoraan. Ne valitsevat yhden version julkaisunsa alussa ja siirtävät siihen tietoturvakorjaukset takaisinsiirtona koko tukikauden ajan.

Esimerkiksi Ubuntu 22.04 LTS:ssä PHP on versio 8.1.2, ja komento php -v näyttää sen myös vuosien päivitysten jälkeen. Paketin täysi versio (esim. 8.1.2-1ubuntu2.x) kuitenkin kasvaa jokaisen korjauksen myötä. Siksi:

  • Vanha numero ei tarkoita haavoittuvaa. Jakelun PHP 8.1.2 -paketti voi sisältää korjauksia, jotka upstreamissa julkaistiin vasta paljon myöhemmissä versioissa.
  • Uudempi numero ei takaa korjauksia. Itse käännetty tai päivittämätön PHP voi olla haavoittuva, vaikka numero näyttäisi tuoreelta.
  • Tuen päätyttyä numero voi olla sama mutta suojaus eri. Esim. PHP 7.4:n ja 8.0:n viralliset tietoturvakorjaukset ovat loppuneet, mutta maksullinen jatkotuki voi edelleen viedä korjauksia niihin samalla versionumerolla.

Tästä syystä versionumeroon perustuvat haavoittuvuusskannerit antavat usein vääriä hälytyksiä: ne vertaavat lukua ”8.1.2” CVE-tietokantaan, jonka mukaan vika korjattiin vasta myöhemmässä versiossa, eivätkä huomaa takaisinsiirrettyä korjausta.

Näin tarkistat, onko korjaus mukana
Luota jakelun omiin tietoihin, älä versionumeroon. Etsi paketin muutoslokista haavoittuvuuden CVE-tunnus:

# Debian / Ubuntu
zcat /usr/share/doc/php8.1-cli/changelog.Debian.gz | grep CVE-XXXX-XXXXX
apt changelog php8.1-cli | grep CVE-XXXX-XXXXX

# RHEL / AlmaLinux / Rocky
rpm -q –changelog php-cli | grep CVE-XXXX-XXXXX

Jos CVE löytyy lokista, korjaus on todennäköisesti mukana. Varmista asia jakelun tietoturvatiedotteesta (Red Hat, Debian ja Ubuntu julkaisevat CVE-kohtaiset sivut, joissa kerrotaan korjatun paketin tarkka versio). Huomaa: changelog.Debian.gz kertoo jakelun omat muutokset, changelog.gz taas yleensä upstreamin.

Huomaa kuitenkin että esim. jaetussa webhotellissa et pysty käyttämään ko. komentoja koska ne ovat varattuja vain palvelimen ylläpitäjille.

Miksi XetNET käyttää takaisinsiirtoa?

XetNET pitää palvelimiensa ohjelmistot ajan tasalla takaisinsiirrettyjen tietoturvakorjausten avulla. Näin asiakkaiden sivustot pysyvät suojattuina ilman, että jokainen päivitys muuttaa ympäristöä, jossa sivustot toimivat.

Syitä on kolme:

  1. Sivustot ovat vakaita ja toimivat toiminnassa. Uusi PHP-versio voi poistaa tai muuttaa toimintoja, joita sivuston koodi, julkaisujärjestelmä tai lisäosat käyttävät. Takaisinsiirto korjaa vain haavoittuvuuden, joten sivusto ei yllättäen lakkaa toimimasta päivityksen jälkeen.
  2. Korjaukset tulevat nopeasti. Tietoturvapäivitykset voidaan asentaa heti, kun ne ovat saatavilla, eikä niitä tarvitse lykätä laajan yhteensopivuustestauksen takia.
  3. Muutokset ovat hallittuja. Suurempi versiopäivitys tehdään suunnitellusti ja asiakkaan kanssa sovitusti, ei tietoturvakiireen pakottamana.

Miksi asiakkaan ei tarvitse huolestua?

Jos sivuston tiedoissa, phpinfo()-sivulla tai haavoittuvuusskannerin raportissa näkyy vanhalta näyttävä versionumero, se ei tarkoita, että palvelin olisi päivittämätön. Numero kertoo, mihin versioon ohjelmisto pohjautuu, ei sitä, mitkä korjaukset siihen on asennettu. Jos skanneri tai tietoturva-auditointi ilmoittaa yksittäisestä CVE-haavoittuvuudesta, XetNETin tuki voi tarkistaa, sisältääkö käytössä oleva paketti korjauksen.

Rajoitukset

Takaisinsiirto suojaa vain niin kauan kuin joku sitä tekee. Kun jakelun tai ohjelmiston tukikausi päättyy, korjauksia ei enää tule ilman maksullista jatkotukea tai siirtymää uuteen versioon.

Vanha ja uusi koodi myös erkanevat vuosi vuodelta, joten korjausten siirtäminen vaikeutuu. Osaa korjauksista, esimerkiksi arkkitehtuurimuutoksia, ei voi siirtää lainkaan. Lisäksi takaisinsiirto tuo vain yksittäiset korjaukset, ei uusien versioiden yleistä tietoturvan parantamista.

Kun käyttöjärjestelmätoimittaja ei enää julkaise ohjelmistolle päivityksiä, XetNET ostaa päivityspalvelut, kuten takaisinsiirrot, luotettavilta toimijoilta, jotka ovat tehneet tätä työtä vuosikausia. Näin tietoturvakorjaukset jatkuvat myös virallisen tuen päätyttyä.

Lähteet

Jaa kirjoitus: