Na konci minulého měsíce objevila se zpráva, že hacker napadl server slouží k distribuci programovacího jazyka PHP a ke zdrojovému kódu přidal zadní vrátka to by ponechalo webové stránky zranitelné vůči úplnému převzetí, uvedli členové projektu open source.
Problém byl nastolen ve dvou aktualizacích zaslaných na server PHP Git během víkendu 27. března, ve kterém přidali řádek, který, pokud by byl spuštěn webem poháněným touto unesenou verzí PHP, by umožnil neoprávněným návštěvníkům spustit kód podle jejich výběru.
Škodlivé provize umožnily kódu vložit kód návštěvníkům, kteří měli v záhlaví HTTP slovo „zerodium“. Závazky byly provedeny v úložišti php-src pod jmény účet dvou známých vývojářů PHP, Rasmus Lerdorf a Nikita Popov.
Po zasnoubeníPopov vysvětlil, že úředníci PHP dospěli k závěru, že jejich infrastruktura Git Independiente představovalo to zbytečné bezpečnostní riziko.
Jako výsledek, rozhodl se vypnout server git.php.net a nastavit GitHub jako oficiální zdroj z repozitářů PHP. V budoucnu budou všechny změny zdrojového kódu PHP provedeny přímo na GitHubu místo git.php.net.
Správce PHP Nikita Popov vydal aktualizaci o tom, jak byl kompromitován zdrojový kód a byl vložen škodlivý kód, přičemž vinil spíše únik uživatelské databáze než problém se samotným serverem.
Tým původně věřil, že server hostující úložiště byl napaden hackery, ale v novém příspěvku Popov uvedl:
"Už nevěříme, že server git.php.net byl prolomen." Je však možné, že došlo k úniku databáze uživatele master.php.net “. Master.php.net byl také migrován do nového systému main.php.net.
Zde jsou podrobnosti, které Popov uvedl o průběhu vyšetřování:
"Když došlo k prvnímu škodlivému potvrzení pod Rasmusovým jménem, mojí první reakcí bylo zvrátit změnu a zrušit přístup k potvrzení z Rasmusova účtu, za předpokladu, že se jednalo o hacknutí individuálního účtu." Při zpětném pohledu neměla tato akce opravdu smysl, protože zejména přes Rasmusův účet nedocházelo k žádnému tlaku. Jakýkoli účet s přístupem do úložiště php-src mohl být zadán pod falešným jménem.
"Když bylo druhé škodlivé potvrzení provedeno pod mým vlastním jménem, podíval jsem se na naše instalační protokoly gitolitu, abych zjistil, který účet byl skutečně použit k odeslání." Přestože byly zohledněny všechny sousední závazky, nebyly pro dva škodlivé závazky žádné položky git-receive-pack, což znamená, že tyto dva závazky zcela obešly infrastrukturu gitolitů. To bylo interpretováno jako pravděpodobný důkaz kompromisu serveru.
Mezi akce, které byly nyní podniknuty, patří resetování všech hesel a upravte kód tak, aby používal parametrizované dotazy k ochraně před útoky SQL Injection.
Používání parametrizovaných dotazů je po mnoho let nejlepším doporučeným postupem a skutečnost, že kód, který nebyl spuštěn tak dlouho v srdci infrastruktury zdrojového kódu PHP, ukazuje, jak nezabezpečený starší kód je v organizaci, pokud funguje a nezpůsobovat zjevné problémy.
Systém master.php.net, který se používá pro autentizaci a různé administrativní úkoly, Používal jsem velmi starý kód na velmi staré verzi / OS PHP, takže nějaká zranitelnost by nebyla příliš překvapivá. Manažeři údržby provedli řadu změn, aby zvýšili zabezpečení tohoto systému:
- master.php.net byl migrován do nového systému (běžící na PHP 8) a main.php.net byl současně přejmenován. Nový systém je mimo jiné kompatibilní s TLS 1.2, což znamená, že by se vám již při přístupu na tento web neměla zobrazovat upozornění na verzi TLS.
- Implementace byla přesunuta do používání parametrizovaných dotazů, aby bylo zajištěno, že nemůže dojít k SQL injekcím.
- Hesla se nyní ukládají pomocí bcrypt.
- Stávající hesla byla resetována (pro vygenerování nového použijte main.php.net/forgot.php).
zdroj: https://externals.io