Nibnu sandbox sigura u effettiva biex nippermettu l-Codex fuq Windows
Minn David Wiesen, membru tal-istaff tekniku
Meta ngħaqadt mat-tim tal-inġinerija ta’ Codex f’Settembru 2025, Codex għall-Windows ma kellux implimentazzjoni ta’ sandbox u dan ifisser li l-utenti tal-Windows kienu mġiegħla jagħżlu bejn żewġ għażliet taħt il-livell mixtieq meta jużaw l-aġenti tal-ikkowdjar ta’ OpenAI:
- L-approvazzjoni ta’ kważi kull kmand (anke dawk ta’ qari) li aġent tal-ikkowdjar ried iħaddem hija ineffiċjenti u tedjanti. Benefiċċju ewlieni tal-użu ta’ Codex huwa li m’għandekx għalfejn tagħmel ix-xogħol tedjanti kollu waħdek.
- L-attivazzjoni tal-modalità tal-Aċċess Sħiħ: li tħalli lil Codex jesegwixxi l-kmandi kollha mingħajr approvazzjoni jew restrizzjonijiet u b’hekk jippermetti operazzjoni aktar veloċi b'inqas kontroll.
Codex, l-aġent tal-ikkowdjar tagħna, jaħdem fuq il-laptops tal-iżviluppaturi — kemm jekk permezz tas-CLI, tal-estensjoni tal-IDE, jew tal-app tad-desktop. Dan jimmaniġġja konverżazzjoni bejn bniedem fuq tastiera u mudell li jaħdem fil-cloud biex iwettaq l-inferenza.
Codex jaħdem bil-permessi ta’ utent reali b’mod awtomatiku, li jfisser li jista’ jagħmel dak kollu li jagħmel l-utent. Dan huwa b'saħħtu u potenzjalment perikoluż. Il-mudell tal-ikkowdjar jista’ jagħti struzzjonijiet lill-harness biex iħaddem kmandi lokalment, mit-tħaddim ta’ testijiet sal-qari jew l-editjar ta’ fajl sal-ħolqien ta’ fergħa ta’ Git. Għalhekk, il-modalità default ta’ Codex tipprova ssib bilanċ tajjeb bejn l-effettività u s-sigurtà. Din il-modalità default tippermetti lil Codex jaqra fajls minn kważi kullimkien u jikteb fajls ġewwa l-workspace tiegħek (jiġifieri, id-direttorju fejn qed tħaddem Codex), mingħajr aċċess għall-internet sakemm ma tispeċifikax li trid dan. Biex tinkiseb din ir-restrizzjoni awtomatika fuq il-kitba ta’ fajls u l-aċċess għan-network fi ħdan limiti siguri, Codex jeħtieġ ambjent sandbox li fil-fatt jinforza dawn ir-restrizzjonijiet.
Sandbox hija ambjent ta’ eżekuzzjoni ristretta. Meta żviluppatur juża Codex, is-sistema operattiva tal-kompjuter tiegħu tniedi kmand b’permessi mnaqqsa u dawk ir-restrizzjonijiet jiġu propagati ’l isfel fis-siġra tal-proċessi. Kull kmand ta’ Codex jitħaddem fis-sandbox mill-bidu nett u kull proċess dixxendenti jibqa’ ġewwa l-istess konfini.
Codex għandu bżonn karatteristiċi ta’ iżolament infurzati mis-sistema operattiva tal-kompjuter biex jimplimenta sandbox effettiva. Xi sistemi operattivi jipprovdu utilitajiet li jagħmlu dan tajjeb (eż., Seatbelt fuq macOS, seccomp jew bubblewrap fuq Linux); madankollu, Windows bħalissa ma jipprovdix dan it-tip ta’ kapaċità b’mod nattiv.
Sabiex Codex ikun sigur u pjaċevoli biex jintuża fuq Windows daqskemm diġà hu f'postijiet oħra, kellna nimplimentaw is-sandbox tagħna stess.
Windows joffri xi għodod u elementi bażiċi għall-iżolament. Għalkemm l-ebda waħda minnhom ma ssodisfat kompletament ir-rekwiżiti tagħna, eżaminajna għadd ta’ soluzzjonijiet potenzjali—speċifikament, it-tikkettar ta' AppContainer, Windows Sandbox u Mandatory Integrity Control.
AppContainer
- X’inhu: AppContainer hija s-sandbox nattiva ta' Windows, mudell ta' iżolament ibbażat fuq il-kapaċitajiet mibni għal apps li jispeċifikaw b'mod ċar ir-rekwiżiti tal-aċċess tagħhom minn qabel.
- Għaliex: Tappella għax joffri fruntiera reali tal-OS minflok restrizzjonijiet tal-aħjar sforz.
- Għaliex le: Codex mhuwiex app waħda b’ambitu strett. Dan iħaddem flussi tax-xogħol miftuħa għall-iżviluppaturi: shells, Git, Python, maniġers tal-pakketti, għodod tal-bini u kwalunkwe binjarji li l-aġent jiddeċiedi li għandu bżonn. Fil-prattika, dan għamel lil AppContainer mhux adattata għall-problema. Kien iżolament qawwi, iżda għal klassi ta’ tagħbijiet tax-xogħol ħafna aktar dejqa minn “ħalli aġent jopera bħal żviluppatur.”
Windows Sandbox
- X’inhu: Windows Sandbox hija VM simplifikata u temporanja ta’ Microsoft. Ikollok desktop ġdid tal-Windows b’konfini ta’ iżolament b’saħħtu u dak kollu li tagħmel fih jisparixxi meta s-sessjoni tintemm.
- Għaliex: Interessanti għal raġunijiet ovvji—ferm aktar kompatibbli ma’ software arbitrarju minn AppContainer u mill-perspettiva tas-sigurtà, hija kaxxa ferm aktar robusta.
- Għaliex le: Codex għandu jaġixxi direttament fuq il-checkout, l-għodod u l-ambjent attwali tal-utent, mhux fuq desktop temporanju separat li jintrema u li jeħtieġ konfigurazzjoni u pont bejn il-host u l-guest. Kellu wkoll problema fundamentali tal-prodott: Windows Sandbox lanqas biss huwa disponibbli fuq l-SKUs ta’ Windows Home.
Tikkettar tal-integrità tal-Mandatory Integrity Control (MIC)
- X’inhu: Windows għandha kunċett imsejjaħ “livelli ta’ integrità”, bħal baxx, medju u għoli, li jiddeterminaw kemm is-sistema tafda l-oġġetti u l-proċessi. Ir-regola bażika hija li proċess b’integrità aktar baxxa ma jistax jikteb f’oġġett b’livell ta’ integrità ogħla, anki jekk l-ACL normali kieku tippermetti li tagħmel dan. Pereżempju, proċess b’integrità baxxa jitqies bħala inqas fdat, għalhekk Windows jimblokkah milli jikteb f’oġġetti normali b’integrità medja, sakemm dawk l-oġġetti ma jkunux ittikkettati mill-ġdid b’mod espliċitu biex jippermettu dan.
- Għaliex: MIC kienet tidher eleganti fuq il-karta—ħaddem Codex b’integrità baxxa, ittikketta mill-ġdid l-għeruq li jistgħu jinkitbu bħala ta’ integrità baxxa u ħalli lil Windows jinforza l-projbizzjoni tal-kitba kullimkien ieħor. Dan kien jagħtina mogħdija mhux tal-amministratur b’mekkaniżmu reali tal-OS warajh.
- Għaliex mhux: Bħall-ACLs, it-tikketti tal-integrità jimmodifikaw is-sistema tal-fajls reali tal-host u f’dan il-każ il-bidla semantika hija partikolarment wiesgħa. L-immarkar ta’ workspace bħala ta’ integrità baxxa ma jfissirx biss li “Codex jista’ jikteb hawn.” Dan ifisser li proċessi ta’ integrità baxxa b’mod ġenerali jistgħu jiktbu hemmhekk. Fuq magna reali ta’ żviluppatur, dan jittrasforma l-checkout attwali tal-utent f’punt ta’ integrità baxxa għall-host, li huwa ferm aktar riskjuż milli jingħataw ACLs immirati bir-reqqa għal disinn wieħed ta’ sandbox. Anki jekk l-għodod għall-iżviluppaturi b’integrità medja jibqgħu jaħdmu, il-mudell ta’ fiduċja sottostanti tal-workspace nbidel b’mod li diffiċli jinżamm taħt kontroll u saħansitra iktar diffiċli jiġi ġġustifikat.
Wara li evalwajna l-għażliet kollha bħala mhux vijabbli, bdejna nfasslu s-soluzzjoni tagħna stess biex noħolqu esperjenza ta’ kwalità għolja ta’ Codex għall-utenti tal-Windows.
L-ewwel prototip funzjonali tagħna uża taħlita ta’ kunċetti u għodod ta' Windows biex jimplimenta l-iżolament li kellna bżonn. Mill-bidu nett, wieħed mill-għanijiet kien li dan jaħdem mingħajr ma jirrikjedi elevazzjoni, jiġifieri li Codex ma jkollux bżonn juri prompt lill-utent għal privileġġi ta’ amministratur sempliċement biex jikkonfigura jew iħaddem is-sandbox. Dan kien ifisser li nsibu kif nistabbilixxu limiti raġonevoli fuq żewġ affarijiet: operazzjonijiet ta’ kitba fil-fajls u aċċess għan-network.
Kieku ma nillimitawx il-kitbiet fil-fajls bl-ebda mod, ikollna problema ta’ sigurtà. Kieku nillimitaw wisq il-kitbiet fil-fajls, is-sandbox kienet tnaqqas il-produttività tal-utenti, għax ikollha titlob approvazzjoni kontinwa. Biex insolvu din il-problema, striħajna fuq żewġ komponenti importanti ta’ Windows: SIDs u tokens b’restrizzjoni fuq il-kitba.
SID, jew identifikatur tas-sigurtà, huwa l-identità li Windows jassoċja mal-permessi. Kull utent għandu SID, il-gruppi għandhom SIDs u anke sessjoni ta’ login waħda tingħata s-SID tagħha stess. Pereżempju, sessjoni attwali li tkun imdaħħal fiha jista’ jkollha SID bħal S-1-5-5-X-Y. Is-SID assenjat lill-grupp tal-amministraturi lokali jista’ jkun S-1-5-32-544.
Windows tippermettilek ukoll li toħloq SIDs sintetiċi li ma jikkorrispondux għal utent reali iżda xorta jistgħu jidhru f’ACLs (listi ta’ kontroll tal-aċċess), li jiddefinixxu min jista’ jaqra/jikteb/jeżegwixxi fajls jew direttorji speċifiċi. Dan jagħmel lis-SIDs element primittiv utli għas-sandbox tagħna: nistgħu noħolqu SIDs esklussivament biex jintużaw mis-sandbox ta’ Codex, mingħajr ma jinterferixxu ma’ xi ħaġa oħra fuq il-kompjuter.
It-tokens tal-proċess huma oġġetti tas-sigurtà f'Windows li jiddefinixxu l-identità u l-privileġġi għal proċess li jkun qed jaħdem. Huma jiddeterminaw liema azzjonijiet jista’ jwettaq proċess. Token ristrett għall-kitba huwa tip partikolari ta’ token tal-proċess li jġiegħel lil Windows iwettaq kontroll addizzjonali tal-aċċess fuq operazzjonijiet ta’ kitba.
Sabiex kitba tirnexxi, iridu jgħaddu żewġ verifiki:
- L-identità normali tal-utent (it-token 'owner') għandha titħalla tagħmel dan
- Mill-inqas SID wieħed fil-lista ristretta tal-SIDs tat-token jeħtieġ li jingħata aċċess ukoll
Fil-prattika, dawn il-kontrolli ppermettewlna nużaw ACLs biex niddefinixxu b'mod preċiż fejn is-sandbox seta’ jimmodifika s-sistema tal-fajls, li offra l-livell ta’ granularità meħtieġ għall-operazzjonijiet ta’ kitba.
Bis-SIDs u tokens b’restrizzjoni fuq il-kitba, is-sandbox tagħna mingħajr privileġġi għolja kien jaħdem b’dan il-mod:
- Is-sistema tas-sandbox ħolqot SID sintetiku bl-isem
sandbox-write. - Is-SID
sandbox-writeingħata aċċess ta’ kitba, eżekuzzjoni u tħassir għal- Id-direttorju tax-xogħol attwali
- Kwalunkwe
writable_rootsaddizzjonali kkonfigurati f’config.toml.
- Il-konfigurazzjoni tas-sandbox ċaħdet b’mod espliċitu l-aċċess għall-kitba lil dak l-istess SID għal postijiet li jistgħu jinqraw biss fi ħdan postijiet li jistgħu jinkitbu bħal:
<cwd>/.git<cwd>/.codex<cwd>/.agents
- Codex nieda kmandi taħt token b’restrizzjoni tal-kitba li l-lista ristretta ta’ SID tiegħu tinkludi
Everyone, is-SID tas-sessjoni attwalment illoggjata u s-SID sintetikusandbox-write.
Dan il-fluss solva b’mod effettiv il-limitazzjoni tal-operazzjonijiet ta’ kitba fil-fajls u deher promettenti. Issa kellna bżonn soluzzjoni biex nillimitaw l-aċċess għan-network tas-sandbox.
Il-limitazzjoni tal-aċċess għan-network hija parti importanti mill-ambjent iżolat; mingħajrha, kodiċi malizzjuż jista’ jesfiltra d-dejta mill-magna lejn l-Internet. Minħabba li ridna nevitaw rekwiżit ta’ elevazzjoni tal-privileġġi, kellna għażliet limitati biex nimblukkaw b’mod effettiv it-traffiku tan-network. L-għodod li ridna nużaw, bħal Windows Firewall, ġeneralment ma setgħux jiġu installati mingħajr il-permessi ta’ amministratur.
Mingħajr Windows Firewall bħala għażla, illimitajna dak li stajna nikkontrollaw. Ippruvajna nagħmlu l-ambjent sekondarju falliment- magħluq għat-tipi ta’ għodod tan-network li l-iżviluppaturi fil-fatt jużaw, sabiex il-kmandi ta’ Git, l-installaturi tal-pakketti, eċċ., ifallu fis-sandbox u l-utent ikollu japprova kwalunkwe operazzjoni li tinvolvi l-internet. L-idea kienet li jiġu diżattivati r-rotot ovvji ta’ ħarba: tibgħat traffiku li jagħraf il-proxy lejn punt ta' tmiem mejjet, tagħmel it-trasport tal-HTTP(S) ta’ Git l-istess u tagħmel lil Git fuq SSH ifalli minnufih. Barra minn hekk, żidna direttorju żgħir denybin fil-bidu ta’ PATH u erġajna rranġajna PATHEXT sabiex l-iskripts stub ta’ SSH u SCP jiġu riżolti qabel il-binarji reali.
Pereżempju, hawn xi wħud mit-trikkib speċifiku tal-ambjent li użajna biex nillimitaw l-aċċess għan-network:
HTTPS_PROXY=http://127.0.0.1:9ALL_PROXY=http://127.0.0.1:9GIT_HTTPS_PROXY=http://127.0.0.1:9NO_PROXY=localhost,127.0.0.1,::1GIT_SSH_COMMAND=cmd /c exit 1
Dan qabad ħafna mit-traffiku normali mmexxi mill-għodod, iżda xorta kien wieħed konsultattiv biss. Proċess jista’ jinjora l-ambjent, jevita PATH, jew jiftaħ sockets direttament—riskjuż wisq.
Bħal kull implimentazzjoni interessanti ta’ software, l-ewwel prototip kellu xi vantaġġi u żvantaġġi. Għalkemm wettaq ix-xogħol b’ftit biss kapaċitajiet standard ta’ Windows, ippermetta kitbiet fis-sistema tal-fajls espliċiti ħafna u granulari, u kien jaħdem mingħajr privileġġi elevati—b’hekk naqqas il-ħtieġa li l-utenti jaċċettaw prompt eċċessivi ta’ elevazzjoni jew ikunu amministraturi fuq il-magna lokali tagħhom—kellu xi żvantaġġi reali, li xi wħud minnhom skwalifikawh milli jsir id-disinn finali tagħna:
- Veloċità tal-konfigurazzjoni: L-applikazzjoni tal-ACLs tal-workspace tista’ teħtieġ ħafna riżorsi skont it-topoloġija tad-direttorju tal-workspace.
- Impronta: Applikajna ACLs reali għas-sistema tal-iżviluppatur, għalkemm l-impronta mhijiex partikolarment invażiva għax l-ACLs kollha applikati jirrigwardaw SID sintetiku maħluq apposta li jintuża biss mis-sandbox.
- Semantika diffiċli biex tinbidel: Id-dipendenza fuq ACLs għal restrizzjonijiet ibbażati fuq il-fajls tfisser li huwa għali u kumpless li tinbidel is-semantika tas-sandbox. Filwaqt li fuq macOS, nistgħu nbiddlu b’mod dinamiku kif niġġeneraw il-fajl
.sbplużat biex jiġi kkonfigurat Seatbelt, is-sandbox ta’ Windows tista’ teħtieġ operazzjoni bil-mod u intensiva biex jiġu aġġustati l-ACLs. - Il-protezzjoni tan-network hija dgħajfa. Kif issemma qabel, kien meqjus bħala "konsultattiv", seta' faċilment jiġi evitat minn programmi li jużaw l-istack tan-networking tagħhom stess u ma kienx maħsub biex jiflaħ kodiċi malizzjuż.
L-ewwel tliet problemi huma inerenti f’implimentazzjoni personalizzata ta’ sandbox li hija biżżejjed flessibbli biex tappoġġja flussi aġentiċi. Madankollu, l-istorja tas-soppressjoni tan-network kienet differenti.
Minbarra li aġent malizzjuż jista’ faċilment jevita s-soppressjoni tan-network ibbażata fuq l-ambjent, ħafna kodiċi/binarji b’intenzjonijiet tajbin jistgħu wkoll jevitawha jekk ma jirrispettawx il-varjabbli tal-proxy tal-ambjent jew jekk jużaw kodiċi tan-network tagħhom stess ibbażat fuq sockets. Ħassejna li dan l-aspett kien biżżejjed biex nikkunsidraw li ninvestu f’modalità sandbox aħjar.
Biex niksbu trażżin aħjar tan-network, ridna nużaw Windows Firewall, li jippermettilna nimblukkaw it-traffiku tan-network ħiereġ għall-utenti jew għall-programmi. Sfortunatament, ma stajniex noħolqu b’mod effettiv regola tal-firewall funzjonali li tapplika biss għall-kmandi mnedija mill-mezz ta’ Codex għal diversi raġunijiet:
- Windows ma jippermettix it-tqabbil ta’ regola tal-firewall mal-identità mhux prinċipali ta’ token ristrett. Dan ifisser li ma stajniex napplikaw regola tal-firewall għal "kwalunkwe token li jinkludi s-SID sintetiku tagħna fil-lista ta’ SID ristretti tiegħu."
- Għalkemm nistgħu noħolqu regola tal-firewall li taqbel ma’ binarju speċifiku, din tippermettilna biss nillimitaw in-netwerking għal
codex.exeinnifsu. Ma japplikax għall-proċessi li l-aġent iniedi f’isem l-utent, bħal proċessi ta’ Git jew Python. - Dimensjonijiet oħra ta’ tqabbil tal-firewall kellhom il-forma ħażina wkoll. Ir-regoli b’ambitu għall-utent xorta kienu jaqblu mal-utent reali tal-Windows fid-disinn mhux elevat, mhux biss mal-proċess iben ristrett. Ir-regoli tal-mogħdija tal-programm kienu ġenerali wisq: setgħu jimblukkaw
codex.exejewpython.exeb’mod ġenerali, iżda mhux din l-eżekuzzjoni iżolata waħda ta’python.exe. Ir-regoli bbażati fuq il-port jew fuq l-indirizz kienu wkoll politika kompletament żbaljata. Pereżempju, ma ridniex nimblukkaw il-port 443; ridna nimblukkaw aċċess arbitrarju lejn barra għal din is-siġra speċifika ta’ proċessi ristretti.
Biex napplikaw regola tal-firewall speċifikament għall-kmandi tagħna li jitħaddmu fis-sandbox, kellna nħaddmuhom bħala prinċipal separat, mhux bħala l-utent “reali”. Dan l-approċċ wassalna għal triq ġdida, waħda li fiha llaxkajna r-restrizzjoni tagħna ta’ “l-ebda elevazzjoni”.
L-iterazzjoni li jmiss tas-sandbox, li hija l-implimentazzjoni attwali tagħna, teħtieġ permessi amministrattivi elevati waqt il-konfigurazzjoni. Għalhekk nirreferi għaliha bħala “is-sandbox bi privileġġi elevati.” Fil-konfini fejn Codex iniedi kmand fis-sistema, is-sandbox bi privileġġi elevati jidher bħall-wieħed mingħajr privileġġi elevati. Għadu jħaddem proċessi sekondarji taħt token ristrett—b’mod simili, token write_restricted bl-istess lista SID ristretta ta’ [Kulħadd, Logon, Sintetiku]—madankollu, il-prinċipal ta’ dan it-token m’għadux l-utent ta' Windows attwali iżda wieħed minn żewġ utenti lokali maħluqa mill-Codex innifsu:
CodexSandboxOffline(dak immirat mir-regoli tal-firewall)CodexSandboxOnline(dak li mhuwiex fil-mira tar-regoli tal-firewall)
Dan id-dettall li jidher żgħir fil-fatt għandu implikazzjonijiet kbar għas-sandbox, għal min jista’ jużah u għall-kumplessità tal-konfigurazzjoni tagħha u tal-eżekuzzjoni tagħha waqt it-tħaddim.
Viżwalment huwa simili għall-prototip mhux elevat, bl-introduzzjoni ta’ regoli tal-firewall u utent iddedikat tal-Windows, li fil-fatt iħaddem il-kmandi. (Madankollu, l-introduzzjoni ta’ dawn il-kunċetti ġodda tfisser li hemm aktar xogħol ta’ konfigurazzjoni xi jsir qabel ma s-sandbox ikun jista’ jibda jħaddem u jipproteġi l-kmandi.)
Id-disinn tas-sandbox mingħajr privileġġi għolja kellu pass sempliċi ta’ konfigurazzjoni, iżda kien relattivament żgħir:
- Oħloq SID sintetiku jekk ikun meħtieġ
- Applika l-ACLs għas-SID sintetiku sandbox-write
Madankollu, is-sandbox bil-privileġġi elevati għandu aktar x’jagħmel.
- Oħloq SID sintetika, jekk għadha ma nħolqotx
- Jekk l-utenti tas-sandbox online u offline għadhom ma nħolqux, oħloqhom
- Aħżen il-kredenzjali tal-utenti li għadhom kif inħolqu lokalment u kkrittahom billi tuża l-API tal-Protezzjoni tad-Dejta ta’ Windows (DPAPI) f’post fejn l-utenti tas-sandbox ma jistgħux fil-fatt jaqrawhom
- Oħloq regoli tal-firewall li jimblukkaw l-aċċess kollu għan-netwerk lejn barra għall-utent
CodexSandboxOfflinejew, jekk diġà jeżistu, ivvalida li huma korretti
Hemm diffikultà addizzjonali fl-istadju tal-konfigurazzjoni. Is-sandbox ta’ Codex hija mistennija li jkollha aċċess għall-qari ekwivalenti għal dak tal-utent attwali tal-Windows. Fis-sandbox mhux elevata, fejn is-SID prinċipali tat-token ristrett kien tal-utent tal-Windows, dan inkiseb b’suċċess. Madankollu, dan ma jiġix b’xejn meta l-prinċipal isir utent ġdid ta’ CodexSandbox. Ħafna direttorji rilevanti fuq Windows jagħtu permessi ta’ qari u eżekuzzjoni lil “Authenticated Users”. Eżempju notevoli wieħed huwa d-direttorju tal-profil tal-utent. B’default, l-utenti tal-Windows ma jistgħux jaqraw id-direttorji tal-profil ta’ utenti oħra tal-Windows, għalhekk anke operazzjonijiet sempliċi ta’ qari ta’ fajls ma jirnexxux f’ħafna xenarji.
Biex nindirizzaw dan, żidna saff ieħor mal-proċess ta’ tħejjija tas-sandbox—wieħed għall-għoti tal-ACLs moqrija lill-utenti tas-sandbox fejn tali ACLs jistgħu ma jkunux diġà jeżistu. Pereżempju, għal xi direttorji tal-Windows użati b'mod komuni:
C:\Users\<real-user>C:\Windows\C:\Program Files\C:\Program Files (x86)\C:\ProgramData\
Minħabba li din il-lista ta’ direttorji hija fuq bażi tal-aħjar sforz u l-installazzjoni ta’ ACLs fuq kull wieħed minnhom tista’ tkun għalja ħafna, inħaddmu din il-loġika b’mod asinkroniku sabiex il-pass tal-konfigurazzjoni tas-sandbox, li jimblokka lill-utenti, ma jkollux għalfejn jistennihom jitlestew.
Iżolajna l-loġika tal-konfigurazzjoni f’binarju separat, parzjalment biex naqsmu l-konfini tal-UAC biss meta jkun meħtieġ. Iżda r-raġuni aktar fil-fond kienet arkitettonika: il-konfigurazzjoni tas-sandbox għandha rwol fundamentalment differenti minn codex.exe. Iż-żamma tal-loġika tal-konfigurazzjoni tas-sandbox f’binarju ddedikat ippermettiet lil codex.exe jibqa’ harness normali, mingħajr privileġġi elevati; żammet il-makkinarju tal-konfigurazzjoni għal Windows biss milli jintefaħ codex.exe fuq pjattaformi oħra; iddiżakkoppjat ix-xogħol tal-konfigurazzjoni li jdum aktar għaddej mit-tul tal-ħajja tal-proċess ewlieni; u tatna post wieħed fejn nittrattaw il-mogħdijiet differenti tal-konfigurazzjoni li kellha bżonn is-sandbox.
Minħabba l-mod kif jaħdmu l-konfini tal-login tal-utent u tat-token ta’ Windows, ma stajniex nibqgħu noħolqu token ristrett u nniedu proċess taħtu bl-istess mod kif stajna nagħmlu bis-sandbox mhux elevata. Biex fil-fatt inniedu kmandi bħala utent ta' Windows differenti, l-ewwel idea tagħna kienet il-fluss li ġej:
codex.exetaħdem bħala l-utent awtentiku tal-Windows. Imbagħad, f’sekwenza, Codex:- Issejjaħ
LogonUserW(...)għall-utent tas-sandbox. - Issejjaħ
CreateRestrictedToken(...)fuq dak it-token tal-utent tas-sandbox. - Billi juża dak it-token ristrett tal-utent tas-sandbox, isejjaħ
CreateProcessAsUserW(...)biex iniedi l-proċess finali.
- Issejjaħ
Fil-prattika, dan il-fluss li ridna ma ħadimx minħabba barriera ta’ privileġġi f'CreateProcessAsUserW(...). Dan ifisser li codex.exe seta’ joħloq token ristrett għall-utent tas-sandbox, iżda ma setax iniedi b’mod affidabbli proċess tifel b’dak it-token min-naħa tal-konfini tal-utent reali. Kellna bżonn proċess li kien diġà qed jaħdem bħala l-utent tas-sandbox—dan kien jippermetti li l-pass tar-restrizzjoni u t-tnedija finali jseħħu fuq in-naħa tal-konfini tal-utent tas-sandbox minflok fuq in-naħa tal-utent reali.
Dak ir-rekwiżit wassal għal codex-command-runner.exe, binarju ġdid li l-uniku kompitu tiegħu huwa li joħroġ token ristrett u jniedi l-kmand mitlub. Minflok nitolbu lil codex.exe jagħmel il-fluss kollu waħdu (utent reali → utent tas-sandbox → token ristrett → proċess sekondarju), naqsmu l-fluss fi tnejn:
Parti 1
codex.exejsejjaħCreateProcessWithLogonW(...)biex iniedicodex-command-runner.exebħala l-utent tas-sandbox, mingħajr ma jkollu juża token ristrett.
Parti 2
- Fi ħdan il-ġeneratur,
OpenProcessToken(GetCurrentProcess(), ...)jiftaħ it-token proprju tal-ġeneratur, li diġà jappartjeni lill-utent tas-sandbox. - Il-ġeneratur isejjaħ
GetTokenInformation(...)biex jiġbed is-SID tal-logon tas-sandbox, imbagħadCreateRestrictedToken(...)biex jibni t-token ristrett finali. - Waqt li jkun għadu ġewwa l-ġeneratur, isejjaħ
CreateProcessAsUserW(...)b’dak it-token ristrett biex iniedi l-proċess child reali.
Albert Einstein qal, “Kollox għandu jsir kemm jista’ jkun sempliċi, iżda mhux aktar sempliċi.” F’dan l-ispirtu, id-disinn tagħna solva b’mod adegwat kull problema. L-arkitettura finali għandha l-erba’ saffi li koprejna qabel:
codex.exeinnifsucodex-windows-sandbox-setup.exegħall-immaniġġjar tax-xogħol kollu relatat mal-konfigurazzjoni bi privileġġi għoljin.codex-command-runner.exegħat-tħaddim ta’ kmandi b’tokens ristretti- Il-proċess sekodanrju
Meta bdejt dan il-proġett, ma kellix idea ċara ta’ fejn kien se jispiċċa. L-approċċ tiegħi kien li nibda billi nimplimenta strumentazzjoni fil-kapaċità tas-sandbox fil-konfini bejn Codex u s-sistema operattiva. Dan l-approċċ jaqbel mill-qrib ma’ kif is-sandbox ta’ Codex huwa implimentat fuq macOS u Linux.
Hekk kif tgħallimt aktar dwar l-għodod speċifiċi li jipprovdi Windows u permezz ta’ għexieren ta’ deċiżjonijiet li jibbilanċjaw is-sigurtà u l-faċilità tal-użu, is-sistema kibret sal-forma attwali tagħha—diversi fajls binarji utenti personalizzati, regoli tal-firewall, pass ta’ setup elevat, proċessi asinkroniċi u aktar.
Mhijiex sistema partikolarment sempliċi, iżda kull element ta’ kumplessità ġie miżjud għax kien meħtieġ, biex jinbena ambjent sandbox li jkun kemm sigur kif ukoll, kemm jista’ jkun, ma jkunx ta’ xkiel għall-utent.
Fil-ħidma tagħna biex nipprovdu esperjenza tajba tal-utent għall-utenti ta’ Codex fuq Windows, l-għan tagħna kien li noħolqu xi ħaġa sikura mingħajr ma nikkompromettu l-utilità tagħha—wara kollox, l-iskop ewlieni tal-użu ta’ Codex huwa li l-aġenti jkunu jistgħu jwettqu xogħol mingħajr il-ħtieġa tal-attenzjoni kostanti tiegħek.
Waħda mill-akbar lezzjonijiet minn dan il-proġett kienet li Windows ma pprovdilniex primitiva waħda li tikkorrispondi b’mod ċar għal “aġent awtonomu u sigur għall-ikkowdjar.” Għaqqadna diversi għodod u kunċetti biex noħolqu xi ħaġa koerenti. Xi ideat inizjali ma wasslux għal imkien. Id-disinn finali kien ibridu ta’ prototipi preċedenti, fejn kull wieħed minnhom solva parti mill-problema.
Il-lezzjoni l-oħra kienet li s-sigurtà għal aġent tal-ikkowdjar hija sfida differenti mis-sigurtà tal-applikazzjonijiet aktar tradizzjonali. Codex irid jaħdem għall-flussi tax-xogħol reali tal-iżviluppaturi. Ix-xogħol ta’ inġinerija kien dwar l-ibbilanćjar bejn il-kompatibbiltà ma’ tagħbijiet tax-xogħol ta’ aħenti u l-infurzar reali. Dik it-tensjoni sawret il-kompromessi fid-disinn finali.
Tixtieq tara s-sandbox ta’ Codex fl-azzjoni? Ipprovaha.


