Sitwazzjoni attwali: PHP2Shell. Żewġ vulnerabbiltajiet kritiċi ta' PHP (CVSS 9,2) jippermettu kodiċi malizzjuż mingħajr login. Patches mill-21/10/2026.X'għandu jsir issa →

Analiżi statika: PHPStan u Psalm

PHPStan u Psalm isibu żbalji fil-kodiċi PHP mingħajr ma jeżegwuh. Psalm jsegwi wkoll flussi ta' data mhux sikuri. Vulnerabbiltajiet fl-interpretatur ta' PHP innifsu ebda wieħed minnhom ma jsibhom.

Stat 5 min. qariGħarfien dwar PHP

Fil-qosor: L-analiżi statika tivverifika l-kodiċi PHP mingħajr ma teżegwih u hekk issib żbalji tat-tipi, varjabbli mhux definiti, kodiċi mejjet u telefonati fuq valuri li possibbilment huma vojta. L-għodod komuni t-tnejn huma PHPStan (livelli tar-regoli minn 0 sa 10) u Psalm (livelli ta' żbalji minn 1 sa 8, flimkien ma' analiżi taint għal flussi ta' data mhux sikuri). Isibu żbalji fl-applikazzjoni tagħkom, mhux fl-interpretatur ta' PHP; kontra vulnerabbiltajiet bħal PHP2Shell jgħin biss l-aġġornament ta' PHP.

X'inhi l-analiżi statika?

Test jeżegwixxi l-kodiċi u jqabbel ir-riżultat. L-analiżi statika, min-naħa l-oħra, taqra l-kodiċi bħal reviżur bir-reqqa kbira u tikkonkludi mit-tipi, mill-valuri rritornati u mit-telefonati fejn xi ħaġa tista' tmur ħażin. Issib żbalji anki f'fergħat li l-ebda test qatt ma jilħaq.

Għal min jieħu d-deċiżjonijiet il-benefiċċju huwa sempliċi: żbalji li jinstabu qabel il-launch jiswew frazzjoni ta' żbalji li l-klijenti jinnutaw. Għall-iżviluppaturi hija sieħba kostanti li taħdem fl-ambjent tal-iżvilupp u fil-pipeline tas-CI. Jekk l-analiżi tindika xi ħaġa f'bidla, din ma tiġix aċċettata sakemm iż-żball jiġi rranġat. Hekk ma jikbirx legat ġdid, filwaqt li dak eżistenti jitnaqqas gradwalment. Flimkien mat-testijiet b'PHPUnit u Pest tifforma l-pedament tal-kwalità tal-kodiċi.

PHPStan: livelli tar-regoli minn 0 sa 10

PHPStan jiġi installat bħala dipendenza tal-iżvilupp u jeħtieġ PHP minn 7.4 biex jaħdem:

composer require --dev phpstan/phpstan
vendor/bin/phpstan analyse src tests

Mingħajr indikazzjoni oħra PHPStan jivverifika biss l-minimu meħtieġ. L-istrettezza tikkontrollawha permezz ta' ħdax-il livell, kull wieħed jinkludi dawk ta' taħtu:

Livell X'jiġi vverifikat addizzjonalment (għażla)
0 klassijiet u funzjonijiet mhux magħrufa, għadd ħażin ta' argumenti, varjabbli dejjem mhux definiti
3 tipi ta' ritorn u tipi li jiġu assenjati lil proprjetajiet
5 tipi tal-argumenti fit-telefonati ta' funzjonijiet u metodi
6 indikazzjonijiet tat-tipi nieqsa
8 telefonati ta' metodi u aċċessi għal proprjetajiet fuq valuri li jistgħu jkunu null
10 l-aktar trattament strett ta' mixed, anki fejn tipi huma nieqsa

B'--level max dejjem jaħdem l-ogħla livell. Id-dokumentazzjoni madankollu twissi li aġġornament ta' PHPStan jista' mbagħad iġib ħafna messaġġi ġodda. Sejba tipika minn livell 8:

<?php
function kundenname(?Kunde $kunde): string
{
    return $kunde->name();   // PHPStan: telefonata fuq valur li jista' jkun null
}

L-introduzzjoni ta' PHPStan mingħajr għargħar ta' żbalji: il-baseline

F'proġetti li kibru, PHPStan fuq livell għoli spiss jirrapporta mijiet ta' postijiet. Il-baseline issolvi l-problema: taħżen il-messaġġi eżistenti kollha f'fajl, u PHPStan minn dakinhar jirrapporta biss żbalji ġodda.

vendor/bin/phpstan analyse --level 6 src tests --generate-baseline

Il-fajl iġġenerat phpstan-baseline.neon tinkludu fil-konfigurazzjoni:

includes:
    - phpstan-baseline.neon

parameters:
    level: 6
    paths:
        - src
        - tests

B'hekk il-legat jibqa' iddokumentat b'mod viżibbli, filwaqt li kodiċi ġdid irid ikun nadif mill-bidu.

Psalm u l-analiżi taint

Psalm għandu għanijiet simili għal dawk ta' PHPStan. Il-livelli jaħdmu bil-maqlub: 1 huwa l-aktar strett, 8 l-aktar ħafif, l-istandard huwa 2. Psalm jeħtieġ PHP minn 8.2 u jiġi stabbilit hekk:

composer require --dev vimeo/psalm
./vendor/bin/psalm --init
./vendor/bin/psalm --taint-analysis

L-analiżi taint hija speċjalment interessanti għas-sigurtà. “Taint” tfisser tniġġis: Psalm jimmarka data minn sorsi li attakkant jista' jikkontrolla, pereżempju $_GET, $_POST, $_COOKIE, $_REQUEST jew php://input. Imbagħad isegwi jekk din id-data tasalx mingħajr protezzjoni f'postijiet perikolużi, l-hekk imsejħa sinks: output b'echo, include, header jew mistoqsijiet SQL. Il-kategoriji integrati jinkludu fost oħrajn sql, html, shell, include, eval, ssrf u unserialize.

<?php
// Psalm jirrapporta fluss minn $_GET lejn l-output HTML (kategorija html)
echo 'Hallo ' . $_GET['name'];

// Irranġat: immaskra l-output skont il-kuntest
echo 'Hallo ' . htmlspecialchars($_GET['name'] ?? '', ENT_QUOTES, 'UTF-8');

Id-dokumentazzjoni ta' Psalm issemmi l-limiti miftuħ: l-analiżi tassumi li l-maskerar isir sewwa. Żbalji fini, pereżempju virgoletti nieqsa madwar attribut HTML, xorta jistgħu jħallu vulnerabbiltajiet. Psalm għalhekk jirrakkomanda mistoqsijiet parametrizzati għal SQL u templates konxji tal-kuntest għal HTML. Ir-riżultati jistgħu jinħarġu fil-format SARIF, li, fost oħrajn, GitHub Code Scanning jifhem.

Analiżi statika u sigurtà wara PHP2Shell

Hawn jixraq distinzjoni onesta. PHP2Shell, jiġifieri CVE-2026-109618 u CVE-2026-109619, jinsab fl-interpretatur ta' PHP. L-ebda għodda li taqra l-kodiċi tal-applikazzjoni tagħkom ma ssib dawn il-vulnerabbiltajiet, u l-ebda bidla fil-kodiċi ma taghlaqhom. Dan jagħmlu biss l-aġġornament għal PHP 8.5.12, 8.4.27, 8.3.36 jew 8.2.35.

Madankollu l-analiżi statika tikkontribwixxi għas-sigurtà, fi tliet postijiet:

  1. Kapaċità ta' upgrade: Issib kodiċi li ma jibqax jaħdem fuq verżjonijiet ġodda ta' PHP. B'hekk jonqos l-ostaklu biex wieħed jaqleb minn 8.1 jew 8.2 għal verżjoni appoġġata.
  2. Vulnerabbiltajiet proprji: L-analiżi taint issib toroq għal SQL injection, cross-site scripting jew inklużjoni ta' fajls. Il-proġett PHP jiċċara fil-politika tas-sigurtà tiegħu li input mhux ivverifikat lil funzjonijiet bħal mysqli_query() mhuwiex żball ta' PHP, imma responsabbiltà tal-applikazzjoni.
  3. Robustezza: Ħafna żbalji fatali jinqalgħu minn telefonati fuq null jew tipi ħżiena. php.net, b'rabta ma' CVE-2026-109619, jagħti parir espliċitu li żbalji fatali li jistgħu jinqalgħu minn barra jiġu rranġati fl-applikazzjoni.

L-analiżi statika ma tieħux post reviżjoni tal-kodiċi għas-sigurtà minn bnedmin, imma tagħmilha aktar effiċjenti, għax żbalji ta' rutina jkunu diġà ġew eliminati qabel.

Kif jgħin PHP SOS konkretament?

Bħala parti minn awditu tas-sigurtà u test ta' penetrazzjoni nipproċedu hekk:

  • Waqqaf l-għodod: PHPStan jew Psalm b'livell adattat u baseline, integrati fil-pipeline eżistenti tagħkom.
  • Evalwa s-sejbiet tas-sigurtà: Niċċekkjaw ir-riżultati tal-analiżi taint u nifirdu riskji reali minn allarmi foloz.
  • Ħejji l-upgrade: Nuru liema postijiet jimblukkaw bidla għal verżjoni appoġġata ta' PHP.
  • Ibgħat ir-riżultati: Tirċievu lista bi prijorità b'postijiet konkreti fil-kodiċi għat-tim jew għall-aġenzija tagħkom.

Mistoqsijiet frekwenti

X'inhi d-differenza bejn PHPStan u Psalm?

It-tnejn jivverifikaw it-tipi u jsibu żbalji mingħajr eżekuzzjoni. PHPStan jgħodd il-livelli tiegħu minn 0 (laxk) sa 10 (strett), Psalm minn 8 (laxk) sa 1 (strett). Psalm jiġi b'analiżi taint integrata għal problemi tas-sigurtà.

Nista' nintroduċi PHPStan f'proġett qadim?

Iva. B'baseline PHPStan jaħżen il-messaġġi eżistenti kollha f'fajl u wara jirrapporta biss żbalji ġodda. Hekk it-tim jibda mingħajr għargħar ta' żbalji u jnaqqas gradwalment il-legat.

L-analiżi statika ssib PHP2Shell?

Le. PHP2Shell jinsab fl-interpretatur ta' PHP, mhux fil-kodiċi tagħkom. Kontrih jgħin biss l-aġġornament ta' PHP. L-analiżi statika madankollu tgħin biex il-kodiċi jitħejja għal verżjonijiet ġodda ta' PHP, biex l-aġġornament isir possibbli aktar malajr.

Liema livell għandu jintgħażel?

Għall-bidu livell baxx mingħajr baseline jew livell ogħla b'baseline. Aktar importanti min-numru huwa li l-analiżi taħdem awtomatikament ma' kull bidla u ma tħallix żbalji ġodda jgħaddu.

Sorsi

Kuntatt immedjat

Kull siegħa tgħodd. Iktbu lilna issa.

Iddeskrivu fil-qosor is-sistema, il-verżjoni ta' PHP u dak li osservajtu. Nikkuntattjawkom, niċċaraw is-sitwazzjoni u naħdmu mill-bogħod sakemm l-inċident jingħalaq u jiġi ddokumentat.

Għajnuna immedjata