1. [Wiki](https://feex.it/wiki/)
2. [Hardware](https://feex.it/wiki/hardware/)
3. [Sistemi e architittura](https://feex.it/wiki/hardware/system/)
4. Shadow stacks CET

# Shadow stacks CET

Rifirimentu d'architittura: Feex

Chiamatu puru CET-SS

Li shadow stacks CET furnìscinu un statu prutettu pi l'indirizzu di ritornu p'aiutari a scupriri ritorni currutti ntô flussu di cuntrollu. La capacitati di shadow-stack dû prucissuri esti sulu un pricunnizzioni pi un prucessu prutettu 'n modu attivu.

## Chiḍḍu ca t'hà sapiri

Li shadow stacks CET furnìscinu un statu prutettu pi l'indirizzu di ritornu p'aiutari a scupriri ritorni currutti ntô flussu di cuntrollu. La capacitati di shadow-stack dû prucissuri esti sulu un pricunnizzioni pi un prucessu prutettu 'n modu attivu.

## Comu funziona

Na shadow stack manteni na còpia prutetta dâ nfurmazzioni di ritornu allatu dâ stack d'esecuzzioni urdinaria. Un ritornu prutettu cuntrolla la cuerenza secunnu li règuli di l'architittura. L'OS gistisci abbilitazzioni, pirmetti di mimoria e statu dî thread, mentri li runtime hannu a gistiri 'n modu currettu l'eccizzioni e li transizzioni di cuntestu.

## Unni e' ùtili

Na suvrascrittura dâ stack chi cancia un nurmali indirizzu di ritornu pò prudùciri n'eccizzioni di prutizzioni dû cuntrollu quannu non currispunni ô statu di ritornu prutettu. Un debugger o un runtime havi a capiri l'ambienti dâ shadow stack mmeci di trattàrila comu na stack scrivìbbili urdinaria.

## Comu cuntrollari lu supportu e l'abbilitazzioni

CPUID.07H.00H:ECX bit 7 annùmura la capacitati di shadow-stack. Usa l'interfaccia di statu ducumintata di l'OS pi prucessu o pi thread pi stabbiliri l'abbilitazzioni. Un crash non spiegatu addumanna di cuntrollari l'agghiurnamenti di software suppurtati e la cumpatibilitati prima di canciari la pulìtica di prutizzioni.

Capacitati, abbilitazzioni e applicazzioni s'hànnu a cuntrollari siparatamenti. Un prucissuri po suppurtari na prutizzioni mentri lu SO, l'applicazzioni o la pulìtica dâ màchina virtùali nun l'attivanu. Un campu di supportu nta un database nun e' n'attistazzioni d'un sistema 'n funzioni.

## Zoccu la funziunalitati nun stabbilisci

Li shadow stacks non stabbilìscinu lu supportu IBT, non prutègginu tutti li dati di l'applicazzioni e non lìmminanu ogni attaccu ô flussu di cuntrollu. N'etichetta di CPU non dimustra ca ogni esecutìbbili e libbrirìa caricata sunnu cummigghiati sutta la pulìtica di cumpatibilitati di l'OS.

## Cumpatibbilitati e pristazzioni nnâ pràtica

Manteni lu SO, lu firmware e lu runtime nterissatu sempri aggiurnati. Si na prutizzioni ammustra un prubbrema di cumpatibbilitati, usa prima la diagnòstica dû prudutturi e l'aggiurnamenti suppurtati. N'interrutturi ginèricu di prutizzioni po nfruinzari applicazzioni nun culligati e avissi a sèquiri na pulìtica splìcita di distribbuzzioni e ricùpiru.

## Na lista di virìfica pràtica

1. Riggistra lu mudellu esattu dû prucissuri o dâ piattafurma e li virsioni di l'applicazzioni, dû SO e dû runtime cuinvorti. Manteni la formulazzioni di l'erruri o dû requisitu riali.
2. Cuntrolla lu rifirimentu dû prudutturi pi ddu mudellu esattu, poi spizziona la capacitati effittiva e lu statu abbilitatu nta l'ambienti unni lu prugramma gira.
3. Cunfrunta ogni requisitu dû binariu o dû backend silizziunatu. Na funziunalitati cû nomu sìmili, un pseudònimu o n'etichetta ticnulòggica ginèrica nun abbàstanu.
4. Cunferma ca l'applicazzioni hà silizziunatu la mplimintazzioni privista. Usa la sò diagnòstica ducumintata e un fallback suppurtatu quannu li requisiti nun sunnu suddisfatti.
5. Fai un canciamentu suppurtatu a la vota e ripeti lu stissu caricu di travagghiu. Manteni dispunìbbili la cunfigurazzioni urigginali e lu pircorsu di ricùp ситуаazzioni.

## Si la funziunalitati e' ndicata ma lu software nun la po usari

Accumenza cû cumpunenti esattu ca fallisci. Un database d'hardware discrivi la capacitati riggistrata; lu sistema upirativu o l'hypervisor ponnu ammustrari n'ambienti effittivu diffirenti. N'erruri di struzzioni illigali addanna puru n'indàggini supra la struzzioni ca fallisci pi daveru e supra la build binaria, picchì la curruzzioni o na struzzioni nun currilata e nun suppurtata ponnu fari un sìntumu sìmili.

Installa la virsioni di l'applicazzioni, dû driver o dû runtime suppurtata pâ piattafurma esatta, e usa la build di basi o di fallback ducumintata dû prudutturi si n'hai bisognu. N'aggiurnamentu dû software nun po criari na struzzioni ca manca nnô prucissuri. Li canciamenti di firmware e di pulìtica di sicurizza avìssiru a sèquiri la prucidura dû prudutturi dû sistema e un pianu di ricùpiru mmeci d'un ricittariu d'uttimizzazzioni ginèricu.

## Funziunalitati currilati e distinzioni ùtili

[Control-flow Enforcement (CET)](https://feex.it/wiki/l/scn/hardware/system/cet/) · [CET-IBT](https://feex.it/wiki/l/scn/hardware/system/cet-ibt/) · [Execute Disable (NX)](https://feex.it/wiki/l/scn/hardware/system/execute-disable/)

## Funti e scanciu di st'esplicazzioni

[Intel 64 and IA-32 Architectures Software Developer's Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html) · [Kernel Linux: shadow stack di Control-flow Enforcement Technology](https://docs.kernel.org/arch/x86/shstk.html)

Sti rifirimenti stabbilìscinu lu cumpurtamentu architittùnicu e li requisiti dû software. Nun virìficanu di manera ndipinnenti ogni valuri di funziunalitati nta na pàggina d'un mudellu hardware culligatu. Pû supportu dû mudellu, usa li provi dû prudutturi di dda pàggina e cuntrolla la cunfigurazzioni effittiva dû sistema. St'artìculu nun duna un benchmark, na cirtificazzioni o na data di rivisioni ndipinnenti.

## Currilati

St'entità si cullèganu a st'artìculu. U tipu è ammustratu supra ogni culligamentu.

[Control-flow Enforcement (CET): Rifirimentu d'architittura](https://feex.it/wiki/l/scn/hardware/system/cet/)[CET-IBT: Rifirimentu d'architittura](https://feex.it/wiki/l/scn/hardware/system/cet-ibt/)[Execute Disable (NX): Rifirimentu d'architittura](https://feex.it/wiki/l/scn/hardware/system/execute-disable/)

## Funti e virìfica

Titularità editoriali: Feex. Nudda data di rivisioni nnipinnenti è riggistrata. [Comu facemu i ricerchi](https://feex.it/wiki/research/).

- [Intel 64 and IA-32 Architectures Software Developer's Manual ](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)· Li Vulumi 1 e 2 discrìvinu li famigghi di struzzioni muntuati e CPUID; lu Vulumi 3 discrivi statu, pagginazzioni, VMX e cuntrolli di prutizzioni. La ducumintazzioni d'architittura nun stabbilisci lu supportu pi un mudellu particulari.
- [Kernel Linux: shadow stack di Control-flow Enforcement Technology ](https://docs.kernel.org/arch/x86/shstk.html)· Distingui supportu hardware, marchi di binàriu, abbilitazzioni dû loader e prutizzioni attiva pi thread. Discrivi IBT e shadow stacks comu strumenti siparati.

## Fu ùtili st'artìculu?

Un sì o un no abbasta. Scegghi un mutivu si voi, o junci na nota curta.

Fatti 'n brevi

A curta identità di sta pàggina. Spicìfichi, funti e tutta a storia arrèstanu nta l'artìculu.

---

Source: [Canonical Feex Wiki page](https://feex.it/wiki/l/scn/hardware/system/cet-ss/)

[Developer guide](https://feex.it/wiki/developers/) | [API policy](https://feex.it/developers/api-policy/) | [Agent guidance](https://feex.it/wiki/llms.txt)
