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 →

Folder .git pubbliku: tnixxija ta' data sottovalutata

Għaliex webroot imqassam permezz ta' Git jista' jiżvela l-kodiċi sors kollu mal-istorja, kif tivverifikaw dan, tibblokkawh minnufih u tibnu d-deployment b'mod permanenti mingħajr folder .git.

Stat 6 min. qariŻvilupp sigur

Fil-qosor: Folder .git pubbliku jinħoloq meta websajt titqassam b'git clone jew git pull direttament fil-webroot u s-server tal-web ma jibblokkax folders moħbija. Imbagħad il-kodiċi sors kollu mal-istorja tal-verżjonijiet jista' jinġieb, inklużi dettalji tal-aċċess ikkummittjati kmieni. Ivverifikaw id-domains tagħkom b'sejħa sempliċi, ibblukkaw l-aċċess minnufih, biddlu d-deployment għal pakketti mingħajr .git u biddlu d-dettalji tal-aċċess mill-istorja.

Il-kodiċi sors biex jittieħed

Git huwa l-għodda standard tal-ġestjoni tal-verżjonijiet, u għal timijiet żgħar huwa ovvju li jintuża wkoll biex jitqassam: tgħaqqad mas-server, git pull, lest. Dan jaħdem b'mod affidabbli u huwa mgħaġġel. Imma għandu effett sekondarju li spiss ħadd ma jinduna bih.

Fil-folder tal-proġett hemm folder moħbi .git. Fih mhux biss l-istat attwali, imma kull fajl f'kull verżjoni li qatt ġiet ikkummittjata, flimkien ma' messaġġi tal-commits, ismijiet u indirizzi tal-posta tal-iżviluppaturi u referenzi għal servers. Jekk dan il-folder jinsab fil-webroot u s-server tal-web jagħtih, kulħadd jista' jġibu.

Għall-attakkanti dan huwa rigal. Bil-kodiċi sors jistgħu jiġu mfittxija vulnerabbiltajiet b'mod mirat, minflok ma jiġu ddeduċuti mill-barra. U fl-istorja spiss insibu affarijiet li kienu jidhru mħassra mdawwar: password tad-database mill-bidu, ċavetta tal-API, fajl tat-test b'data tal-klijenti.

Il-folder .git tagħkom huwa pubbliku? Hekk tivverifikawh

Il-verifika tieħu sekondi u ma tibdel xejn. Għal kull domain u subdomain itolbu fajl li jeżisti f'kull repository ta' Git:

# Mistenni: 403 jew 404
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.git/HEAD
curl -s -o /dev/null -w "%{http_code}\n" https://www.example.de/.git/config
# Fuq is-server: Hemm folders .git taħt il-webroots?
find /var/www /srv/www -maxdepth 4 -type d -name ".git" 2>/dev/null

Status 200 ifisser: il-folder huwa aċċessibbli. Oqogħdu attenti wkoll għal sottodirettorji. Xi drabi r-repository ma jinsabx fil-webroot innifsu, imma f'folder ta' plugin jew theme li jinżamm separatament b'Git.

Ivverifikaw ukoll ambjenti ta' staging u tat-test. Jiġu aġġornati b'Git aktar spiss mill-produzzjoni u spiss ikunu aċċessibbli taħt subdomains li jistgħu jiġu ddeduċuti.

Minnufih: ibblokka l-aċċess

Sakemm id-deployment jinbidel, regola fis-server tal-web tibblokka l-aċċess għal folders tal-ġestjoni tal-verżjonijiet. Blokk ġenerali għal fajls moħbija, kif deskritt f'Ipproteġi sewwa d-dettalji tal-aċċess u l-fajls .env, ikopri dan ukoll. Min irid jibblokka b'mod mirat biss il-ġestjoni tal-verżjonijiet juża regola aktar dejqa:

location ~ /\.(git|svn|hg)(/|$) {
    return 404;
}
RedirectMatch 404 /\.(git|svn|hg)(/|$)

Wara erġgħu ippruvaw il-verifika ta' hawn fuq, u mhux b'test tal-konfigurazzjoni, imma b'sejħa vera mill-barra: test ta' konfigurazzjoni b'suċċess jgħid biss li s-sintassi hija korretta, mhux li r-regola taħdem qabel regoli oħra għal fajls statiċi. B'panels bħal Plesk jew cPanel daħħlu r-regola fid-direttivi addizzjonali previsti għal dan, biex ma tintilifx mal-ħolqien li jmiss tal-konfigurazzjoni.

Aġixxu immedjatament

Jekk il-folder kien aċċessibbli, ittrattaw id-dettalji tal-aċċess kollha li qatt kienu fir-repository bħala magħrufa. Il-blokk waħdu mbagħad mhuwiex biżżejjed, il-valuri jridu jinbidlu.

Permanenti: qassam mingħajr .git fil-webroot

Il-blokk huwa sigurtà addizzjonali, mhux soluzzjoni. B'mod permanenti l-ġestjoni tal-verżjonijiet ma tappartjenix fuq is-server tal-produzzjoni. Modi mgħarrba, skont l-ambjent tagħkom:

Proċedura Kif taħdem Adattata għal
Pakkett tal-build mis-CI Il-pipeline tibni arkivju mingħajr .git, is-server jiftħu f'direttorju ġdid tar-release Timijiet b'CI/CD
git archive joħloq arkivju ta' stat mingħajr data tal-verżjonijiet proġetti żgħar mingħajr pipeline
rsync b'esklużjonijiet jittrasferixxi biss il-fajls meħtieġa servers klassiċi
Immaġni ta' container Il-kodiċi jiġi kkupjat fl-immaġni waqt il-build, .git eskluż b'.dockerignore Operat b'containers

Direttorju tar-release għal kull verżjoni b'link simboliku lejn l-istat attwali għandu vantaġġ ieħor: f'każ ta' problemi tistgħu terġgħu lura minnufih. Għal setups ta' containers CI/CD: ibni mill-ġdid awtomatikament immaġini PHP jiddeskrivi kif il-builds isiru riproduċibbli. Hemmhekk għandu jiġi vverifikat ukoll li .git ma jaslux fl-immaġni.

# Eżempju: oħloq pakkett ta' stat mingħajr data tal-verżjonijiet
git archive --format=tar.gz -o release.tar.gz HEAD

Fajls oħra tal-proġett li ma jappartjenux fil-webroot

Il-folder .git huwa l-eżempju l-aktar magħruf, imma mhux l-uniku. Min iqassam direttorji sħaħ tal-proġett iġib fil-webroot fajls oħra li m'għandhom xejn x'jagħmlu hemmhekk:

  • Folders ta' ambjenti ta' żvilupp bħal .idea jew .vscode, fejn estensjonijiet għall-upload ta' fajls xi drabi jaħżnu indirizzi ta' servers u dettalji tal-aċċess.
  • composer.json u composer.lock, li jiżvelaw il-verżjonijiet eżatti tal-libreriji kollha u b'hekk jiffaċilitaw it-tfittxija għal vulnerabbiltajiet magħrufa.
  • Konfigurazzjonijiet għal testijiet, għodod tal-build u pipelines, li jiżvelaw hostnames interni u proċessi.
  • Bqija ta' sistemi operattivi bħal .DS_Store, li fihom listi ta' fajls ta' direttorji sħaħ.

Is-soluzzjoni hija l-istess bħal mal-folder .git: agħti biss dak li jrid ikun pubbliku, idealment permezz ta' sottofolder proprju bħala webroot. Min xorta waħda jibdel id-deployment għal pakketti, jistabbilixxi miegħu lista ta' fajls esklużi u jivverifikaha ma' kull għodda ġdida fil-proġett.

Jekk il-folder kien miftuħ: ivverifika l-istorja u l-protokolli

Jekk jirriżulta li l-folder .git kien aċċessibbli, mexxu f'din l-ordni:

  1. Ibblokka l-aċċess u erġa' ipprova l-verifika.
  2. Fittex fl-istorja liema sigrieti qatt ġew ikkummittjati: fajls ta' konfigurazzjoni, .env, ċwievet, dumps tad-database.
  3. Biddel id-dettalji tal-aċċess, kollha li nstabu fil-pass 2, anke jekk illum ma jibqgħux fil-kodiċi.
  4. Evalwa l-protokolli tal-aċċess, jekk fajls taħt /.git/ ġewx mitluba bi status 200 u minn liema indirizzi. Kif issir din turi Evalwa l-logs tas-server tal-web wara attakk.
  5. Ivverifika l-kodiċi sors b'mod mirat, għax l-attakkanti issa jafuh. Dgħufijiet magħrufa għandhom jiġu rranġati bi prijorità.
  6. Iċċara l-protezzjoni tad-data, jekk data personali kienet fl-istorja, pereżempju esportazzjonijiet tat-test. Il-valutazzjoni tagħmilha l-uffiċjal tal-protezzjoni tad-data tagħkom.

Għodod għat-tfittxija ta' sigrieti f'repositories wara jappartjenu b'mod permanenti fil-pipeline. OWASP jirrakkomanda verifiki bħal dawn espliċitament, bħala hook qabel il-kummit u fis-CI.

Kif tgħin PHP SOS b'mod konkret?

  • Nivverifikaw id-domains u s-subdomains kollha tagħkom għal folders aċċessibbli tal-ġestjoni tal-verżjonijiet.
  • Nibblukkaw l-aċċess minnufih u nibdlu d-deployment għal pakketti mingħajr data tal-verżjonijiet.
  • Infittxu fl-istorja għal sigrieti u nakkumpanjaw l-iskambju tal-aċċessi affettwati.
  • Nevalwaw il-protokolli tal-aċċess u niddokumentaw jekk u meta ġiet imġiba data.

Dawn il-miżuri huma parti mill-Hardening tas-server għal servers tal-web PHP tagħna.

Mistoqsijiet frekwenti

Kif jinħoloq folder .git pubbliku?

Ġeneralment permezz ta' deployment b'git clone jew git pull direttament fil-webroot. Il-folder .git bl-istorja kollha tal-verżjonijiet imbagħad jinsab maġenb index.php, u mingħajr blokk is-server tal-web jagħti l-fajls tiegħu.

Huwa biżżejjed li jitħassar il-folder .git?

Għall-futur iva, għall-passat le. Jekk il-folder kien aċċessibbli, il-kontenut jista' diġà jkun ġie kkupjat. Dettalji tal-aċċess li xi darba kienu fir-repository għalhekk għandkom tibdluhom.

Jgħin li jitneħħew a posteriori dettalji tal-aċċess mill-istorja ta' Git?

Jevita li kopji ġodda jinkluduhom. Min diġà ġab ir-repository għad għandu l-istadji qodma. Id-deċiżiv għalhekk huwa l-iskambju tad-dettalji tal-aċċess, mhux biss il-kitba mill-ġdid tal-istorja.

Dan jolqot ukoll sistemi oħra ta' ġestjoni tal-verżjonijiet?

Iva. Anke folders bħal .svn jew .hg fihom data tal-proġett u qatt m'għandhom ikunu aċċessibbli fil-webroot. Blokk ġenerali għal fajls u folders bi punt fil-bidu jkopri dawn il-każijiet kollha.

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