Kritiskas PHP ievainojamības: ieteikumi pagaidu ierobežojumiem

-
Paziņojumi
Drošība

Vakar tika publicēta informācija par divām kritiskām PHP ievainojamībām - CVE-2026-109618 un CVE-2026-109619 -, kuras potenciāli var ļaut attālināti izpildīt kodu. Ievainojamības ir programmatūras vājās vietas, ko uzbrucēji var izmantot, lai kompromitētu sistēmas un izpildītu ļaunprātīgu kodu.

2026. gada 21. oktobrī plkst. 16.00 pieejamās tehniskās informācijas apjoms joprojām ir ierobežots. Possible Security piedāvā šos pagaidu aizsardzības pasākumus Apache2 serveriem, kuros PHP darbojas kā Apache modulis. Tos var pielāgot arī citiem tīmekļa serveriem, ja lasītājs pārzina attiecīgā servera konfigurāciju. Instalējiet oficiālos drošības labojumus, tiklīdz tie kļūst pieejami.

1. Pārbaudiet sistēmu pirms aizsardzības pasākumu ieviešanas

Izpildiet tālāk norādītās komandas pret ietekmēto tīmekļa vietni, aizstājot https://your-host/ ar attiecīgo servera adresi:

curl -X POST -H 'Content-Type: multIpart/form-data; boundary=----PS' https://your-host/
curl -X GET -H 'Content-Type: multIpart/form-data; boundary=----PS' https://your-host/

Pierakstiet atbilžu rezultātus, lai pēc aizsardzības pasākumu ieviešanas tos varētu salīdzināt.

2. Atrodiet PHP konfigurācijas failus un tajos noteiktos ierobežojumus

Atrodiet attiecīgos PHP iestatījumus:

grep -R -e memory_limit -e post_max_size /etc/

Pievērsiet uzmanību lielākajai konfigurētajai post_max_size vērtībai.

3. Konfigurējiet Apache2

Pievienojiet tālāk norādīto konfigurāciju failam httpd.conf. Iestatiet post_max_size uz iepriekš atrasto lielāko vērtību un memory_limit - desmit reizes lielāku par to. Ja šāda memory_limit vērtība pārsniegtu pieejamo atmiņu, samaziniet post_max_size līdz vienai desmitdaļai no memory_limit. Pārliecinieties, ka upload_max_filesize ir mazāks par post_max_size.

php_admin_flag session.upload_progress.enabled Off
php_admin_flag session.upload_progress.cleanup Off
php_admin_value max_input_nesting_level 6
php_admin_value post_max_size 20M
php_admin_value upload_max_filesize 19M
php_admin_value memory_limit 200M

<Location "/">
    <If "req('Content-Type') =~ /(?i)^multipart/">
        Require all denied
    </If>
</Location>

Vērtības 20M un 200M ir tikai piemēri. Izmantojiet savai videi atbilstošas vērtības.

Brīdinājums: Šī Apache konfigurācija bloķē visus pieprasījumus norādītajā atrašanās vietā, kuru Content-Type galvene norāda uz multipart saturu. Tas pārtrauks failu augšupielādi un var ietekmēt arī citas funkcijas, kas izmanto multipart pieprasījumus.

4. Atjauniniet php.ini

Attiecīgajā php.ini failā pievienojiet vai atjauniniet tālāk norādītos PHP iestatījumus, izmantojot tās pašas izvēlētās ierobežojumu vērtības:

session.upload_progress.enabled = Off
session.upload_progress.cleanup = Off
max_input_nesting_level = 6
post_max_size = 20M
memory_limit = 200M

Pārliecinieties, ka atjaunināt konfigurāciju, ko izmanto attiecīgā PHP izpildvide, piemēram, PHP-FPM vai mod_php.

5. Pārbaudiet konfigurāciju un restartējiet Apache2

Pārbaudiet Apache konfigurāciju un restartējiet pakalpojumu:

apachectl configtest && systemctl restart apache2

Apache ir jārestartē, ar vienkāršu konfigurācijas pārlādi (reload) var nepietikt.

6. Veiciet atkārtotu pārbaudi

Atkārtojiet 1. sadaļā norādītās abas curl komandas un salīdziniet rezultātus. Pārliecinieties, ka multipart pieprasījumi tiek bloķēti, kā paredzēts, un pārbaudiet, vai pārējā tīmekļa vietnes funkcionalitāte darbojas korekti.

Šie ir pagaidu aizsardzības pasākumi, nevis oficiāla drošības labojuma aizstājējs. Sekojiet līdzi PHP drošības paziņojumiem un pēc iespējas drīzāk instalējiet atjauninātas, izlabotas programmatūras versijas.