Abẹrẹ apa olupin - ipalara ssti - awọn ẹru ssti

Apẹẹrẹ Abẹrẹ Ẹgbẹ́ Server pẹlu Awọn apẹẹrẹ Koodu Otitọ

Báwo ni Abẹ́rẹ́ Àwòrán Ẹ̀gbẹ́ Server ṣe ń ṣiṣẹ́ lẹ́yìn àwọn ìṣẹ̀lẹ̀ náà

Abẹrẹ awoṣe apa olupin waye nigbati titẹ sii olumulo ba wa ni titẹ taara sinu ẹrọ awoṣe kan ati pe a ṣe ayẹwo laisi mimọ tabi iyasọtọ to dara. Eyi ṣẹda ailagbara SSTI ti o fun laaye ikọlu lati fi awọn ẹru SSTI ti a ṣe ni pataki sinu (fun apẹẹrẹ, {{7*7}} nínú Jinja2), èyí tí ẹ̀rọ náà yóò ṣe àyẹ̀wò rẹ̀, èyí tí yóò mú kí ohun gbogbo láti ìfihàn dátà sí ìṣiṣẹ́ kódì àìdánimọ̀ nínú àyíká olupin náà. Nítorí pé àwọn ẹ̀rọ àpẹẹrẹ onírúurú ń fi àwọn ohun àti API tó yàtọ̀ síra hàn, àwọn ẹrù SSTI yàtọ̀ síra nípasẹ̀ ìpìlẹ̀ ṣùgbọ́n wọ́n ní ewu kan náà: wọ́n jẹ́ kí ìtẹ̀sí tí a kò gbẹ́kẹ̀lé sá àsálà fún ìṣàn ìṣàfihàn tí a retí, wọ́n sì ń ṣiṣẹ́ nígbà tí ohun èlò náà bá ń ṣiṣẹ́, èyí tí ó sábà máa ń yọrí sí ìṣiṣẹ́ kódì jíjìnnà pátápátá tàbí ìṣípo ní ẹ̀gbẹ́ tí a kò bá ṣàyẹ̀wò rẹ̀.

Àpẹẹrẹ tó kéré jùlọ tó lè pani lára ​​ní Jinja2

from flask import request, render_template_string @app.route("/hello") def hello():     name = request.args.get("name", "world")     # ❌ Vulnerable: directly rendering user input     return render_template_string("Hello " + name) 

Tí olùlò bá fi ránṣẹ́ ?orúkọ={{7*7}}, àpù náà yóò ṣe àyẹ̀wò rẹ̀, yóò sì padà wá Kaabo 49Àìlera SSTI niyẹn nínú ìwé ìkẹ́kọ̀ọ́ náà.

Àpẹẹrẹ tó kéré jùlọ tó lè pani lára ​​nínú Twig

// ❌ Vulnerable Twig usage $template = $twig->createTemplate("Welcome " . $_GET['user']); echo $template->render([]); 

Olùkọlù kan le fi awọn ẹrù SSTI sinu ara bii {{7*7}} láti fi hàn pé àwọn ìlànà náà ń ṣiṣẹ́. Ewu naa: abẹrẹ ti o rọrun le pọ si kika awọn faili, ṣiṣe awọn aṣẹ OS, tabi yiyi jinle sinu awọn amayederun.

Àwọn Ìlòkúlò Àgbáyé Gíga: Àwọn Ìsanwó SSTI Tí Ó Ń Fa Ìṣiṣẹ́ Kóòdù Láti Ọ̀nà Àìsí

Nígbà tí àìlera SSTI bá ti wáyé, àwọn olùkọlù máa ń gbìyànjú láti yí padà láti ìṣírò ẹ̀rí-ìrònú sí gbogbogbòò RCEÀwọn ẹ̀rọ àwòṣe onírúurú ló máa ń bójú tó àwọn ẹrù iṣẹ́ ní ọ̀nà ọ̀tọ̀ọ̀tọ̀.

Awọn ẹrù Jinja2

  • {{7*7}} → Iṣe iṣiro
  • {{config.items()}} → Awọn atunto olupin ti n jo.
  • {{ ”.__class__.__mro__[2].__subclasses__() }} → ọ̀nà sí RCE

Awọn ẹrù iyàrá iyara

  • #set($x=”7″)${x} → Abẹrẹ abẹ́rẹ́
  • #set($a=$class.inspect(“java.lang.Runtime”)) → Iwọle si akoko iṣiṣẹ taara

Àwọn ẹrù ẹ̀ka igi

  • {{7*7}} → iṣiro
  • {{app.request.server.all}} → Awọn iyipada ayika
  • {{_self.env.registerUndefinedFilterCallback(‘system’)}} → Ṣiṣẹ́ àwọn koodu

Àwọn ẹrù SSTI wọ̀nyí fihàn bí àìlera kan náà nínú àwọn ẹ̀rọ onírúurú ṣe ń yọrí sí onírúurú lo awọn ipa ọna, ṣùgbọ́n wọ́n máa ń léwu nígbà gbogbo.

Ibi ti Abẹrẹ Apa Server fi pamọ si CI/CD-Awọn ohun elo ti a wakọ

Abẹrẹ awoṣe ẹgbẹ olupin kii ṣe eewu ohun elo wẹẹbu nikan; o han ni igbalode CI/CD pipelines ju. Àwọn ibi ìpamọ́ tí a sábà máa ń fi pamọ́ sí ni:

  • Awọn aworan atọka Helm ní Kubernetes, níbi tí a ti ń ṣe àgbékalẹ̀ àwọn iye àwòṣe ní ọ̀nà tí ó yàtọ̀ síra
  • Awọn awoṣe imeeli tí ó so àwọn ìṣàkójọpọ̀ àwọn ohun tí olùlò ń ṣàkóso pọ̀
  • Dashboards níbi tí a ti fi àwọn ìkọ̀wé ìbéèrè tàbí dátà ìṣètò sínú àwọn àpẹẹrẹ
  • Àwọn ìwé àfọwọ́kọ DevOps tí ó ń ṣe HTML/Markdown nípa lílo àwọn ẹ̀rọ templating.

apere:

# ❌ Insecure Helm values with user input configMap:   appMessage: "{{ .Values.message }}" 

IfIfiranṣẹ .Awọn iye. wá láti inú ìtẹ̀wọlé tí a kò gbẹ́kẹ̀lé, ó ń ṣe àgbékalẹ̀ àwòṣe ẹ̀gbẹ́ olupin nínú ìfiránṣẹ́ rẹ pipeline ara rẹ.

Dídènà SSTI pẹ̀lú Àwọn Àpẹẹrẹ Àwòrán Aláàbò àti Ìṣàyẹ̀wò Aláìdúró

Láti dín àwọn àìlera SSTI kù nílò àwọn ìlànà kódì tó dára jù àti wíwá ìwádìí ní ìbẹ̀rẹ̀.

Awọn awoṣe ti o ni aabo

  • ❌ Má ṣe lò ó àwòṣe_okùn_ìwé_àwòṣe_àwòṣe tabi deede
  • ✅ Lo àwọn fáìlì àwòṣe tí a ti sọ tẹ́lẹ̀ kí o sì ṣe àtúnṣe àwọn oníyípadà tí a ti sọ di mímọ́
  • ✅ Àwọn ẹ̀rọ àwòṣe Sandbox nígbàtí ó bá wà
  • ✅ Ṣàyẹ̀wò kí o sì sá fún ìtẹ̀síwájú olùlò kí o tó ṣe àgbékalẹ̀ rẹ̀

Ìtọ́jú kúkì tí kò ní ààbò tàbí tí kò ní ààbò (ewu ìtẹ̀síwájú tó báramu)

# ❌ Insecure: session cookie without flags response.set_cookie("session", token) # ✅ Secure: session cookie hardened response.set_cookie("session", token, httponly=True, secure=True, samesite="Strict") 

Àkójọ Àyẹ̀wò Kékeré fún Àwọn Olùgbékalẹ̀

  • Má ṣe fi ìtẹ̀síwájú olùlò hàn tààràtà láé
  • Lo àwọn àpẹẹrẹ tí a fi sandbox ṣe nígbà tí a bá lè ṣe àtìlẹ́yìn rẹ̀
  • Mú kí o sì jẹ́rìí gbogbo àwọn oníyípadà àwòṣe
  • Yẹra fún àwọn olùṣàyẹ̀wò àwòṣe àdáni
  • Ṣe ìwòye kódù fún àwòṣe_okùn_ìwé_àwòṣe_àwòṣe tàbí àwọn àpẹẹrẹ ìsopọ̀ okùn

Ayẹwo aimi àti àwọn àwọ̀n igi lè ṣàmì sí àwọn ilé tí ó léwu kí wọ́n tó dé ibi iṣẹ́.

Fifi awọn ayẹwo SSTI sinu DevSecOps Pipelines

Wíwá àwòṣe ẹ̀gbẹ́ olupin ní ìbẹ̀rẹ̀ jẹ́ ohun tó rọrùn jù, ó sì ní ààbò ju títúnṣe rẹ̀ lẹ́yìn náà lọ. Àwọn ẹgbẹ́ DevSecOps gbọ́dọ̀ fi àwọn ìwé ẹ̀rí sí i pipelines:

  • Commit hooks: kọ commits pẹlu awọn iṣẹ eewu (àwòṣe_okùn_ìwé_àwòṣe_àwòṣe)
  • Àwọn olùṣàyẹ̀wò àìdúró: ṣe ayẹwo fun ewu abẹrẹ awoṣe ẹgbẹ olupin ninu koodu awoṣe
  • Ìfìdí múlẹ̀ ìgbẹ́kẹ̀lé: ṣe àmì sí àwọn ẹ̀rọ àwòṣe ìgbàanì pẹ̀lú àwọn àìlera SSTI tí a mọ̀
  • Pipeline ẹnu-bode: Àkọsílẹ̀ náà ń parapọ̀ títí tí àwọn àyẹ̀wò SSTI yóò fi kọjá

Nípa ṣíṣe àwárí ẹrù SSTI jẹ́ apá kan CI/CD, o ṣe idiwọ fun koodu ti a le lo lati firanṣẹ nigbagbogbo.

Má ṣe jẹ́ kí àwòṣe ìfúnni-ẹ̀gbẹ́ olupin yọ́ sínú àkójọpọ̀ rẹ

Abẹrẹ awoṣe apa olupin kan le pọ si lati awọn ọgbọn iṣiro ({{7*7}}) sí ìmúṣẹ kódì jíjìnnà pátápátá. Àwọn àìlera SSTI kò hàn nínú àwọn ohun èlò wẹ́ẹ̀bù nìkan ṣùgbọ́n nínú CI/CD pipelines, awọn aworan Helm, ati awọn awoṣe imeeli.

Awọn ọna pataki keyaways

  • Má ṣe fi àwọn àpẹẹrẹ oníṣe aláìṣeéṣe hàn láé
  • Ṣe àyẹ̀wò kí o sì sọ gbogbo àwọn oníyípadà oníyípadà di mímọ́
  • Àwọn ẹ̀rọ onírúru (Jinja2, Velocity, Twig) ní oríṣiríṣi ẹrù SSTI, ṣùgbọ́n gbogbo wọn ni a lè fi ohun ìjà ṣe
  • Lo ìwádìí àìdánilójú àti àwọn ẹnu ọ̀nà ìfàsẹ́yìn-kíákíá nínú pipelines
  • Awọn awoṣe ayẹwo ni akopọ rẹ nigbagbogbo

Awọn irinṣẹ bi Xygeni ran awọn ẹgbẹ lọwọ lati ṣawari lilo awoṣe ti ko ni aabo, dènà awọn ailagbara SSI, ati fi ipa mu awọn iṣe aabo kọja pipelineàwọn s àti àwọn ìgbẹ́kẹ̀lé. Nínú DevSecOps, ṣíṣe àyẹ̀wò àwọn ẹrù SSTI gẹ́gẹ́ bí ewu tó ga jùlọ ṣe pàtàkì nítorí pé abẹ́rẹ́ kan ṣoṣo nínú rẹ pipeline tàbí àpù náà lè ba gbogbo àyíká rẹ jẹ́.

àwọn irinṣẹ́ ìwádìí-àkójọpọ̀-ẹ̀rọ-sca-tools
Ṣe àfiyèsí, ṣe àtúnṣe, kí o sì dáàbò bo àwọn ewu sọ́fítíwè rẹ
Gba Akaunti Ọfẹ rẹ.
Ko si kaadi kirẹditi ti o nilo.

Ṣe aabo fun idagbasoke ati ifijiṣẹ sọfitiwia rẹ

pẹlu Xygeni Product Suite