Għal għexieren ta’ snin, l-ittestjar statiku tas-sigurtà tal-applikazzjonijiet (SAST) kien wieħed mill-aktar modi effettivi kif timijiet tas-sigurtà jkabbru r-reviżjoni tal-kodiċi.
Iżda meta bnejna Codex Security, għamilna għażla intenzjonata fid-disinn: ma bdejniex billi nimportaw rapport ta’ analiżi statika u nitolbu lill-aġent jagħmel triage tiegħu. Iddisinjajna s-sistema biex tibda mir-repożitorju nnifsu—l-arkitettura tiegħu, il-konfini tal-fiduċja, u l-imġiba intenzjonata tiegħu—u biex tivvalida dak li ssib qabel ma titlob lil persuna tqatta’ ħin fuqu.
Ir-raġuni hija sempliċi: l-aktar vulnerabbiltajiet diffiċli ġeneralment mhumiex problemi ta’ fluss tad-data. Jiġru meta l-kodiċi jidher li jinforza kontroll ta’ sigurtà, iżda dak il-kontroll fil-fatt ma jiggarantixxix il-proprjetà li s-sistema tiddependi fuqha. Fi kliem ieħor, l-isfida mhijiex biss li ssegwi kif id-data timxi minn ġo programm—imma li tiddetermina jekk id-difiżi fil-kodiċi jaħdmux tassew.
SAST spiss jiġi ppreżentat bħala pipeline ċar: tidentifika sors ta’ input mhux fdat, issegwi d-data fil-programm, u timmarka każijiet fejn dik id-data tasal f’sink sensittiv mingħajr sanitizzazzjoni. Huwa mudell eleganti, u jkopri ħafna bugs reali.
Fil-prattika, SAST irid jagħmel approssimazzjonijiet biex jibqa’ maniġġabbli fuq skala kbira—speċjalment f’codebases reali b’indirezzjoni, dispatch dinamiku, callbacks, reflection, u fluss ta’ kontroll tqil fuq frameworks. Dawn l-approssimazzjonijiet mhumiex kritika lejn SAST; huma r-realtà ta’ kif tipprova tagħmel raġunament dwar il-kodiċi mingħajr ma teżegwih.
Dan, waħdu, mhuwiex għaliex Codex Security ma jibdiex b’rapport SAST.
Il-kwistjoni aktar profonda hija x’jiġri wara li b’suċċess traċċa sors sa sink.
Anke meta l-analiżi statika traċċa korrettament input minn diversi funzjonijiet u saffi, xorta trid twieġeb il-mistoqsija li fil-fatt tiddetermina jekk teżistix vulnerabbiltà:
Ħu mudell komuni: il-kodiċi jsejjaħ xi ħaġa bħal sanitize_html() qabel jirrendi kontenut mhux fdat. Analizzatur statiku jista’ jara li s-sanitizer tħaddem. Dak li ġeneralment ma jistax jiddetermina huwa jekk dak is-sanitizer huwiex tassew biżżejjed għall-kuntest speċifiku ta’ rendering, template engine, imġiba tal-encoding, u trasformazzjonijiet downstream involuti.
Hawnhekk l-affarijiet isiru diffiċli. Il-problema mhijiex biss jekk id-data tasalx f’sink. Hija jekk il-kontrolli fil-kodiċi fil-fatt jirrestrinġux il-valur bil-mod kif is-sistema tassumi li jagħmlu.
Biex ngħiduha mod ieħor: hemm differenza kbira bejn “il-kodiċi jsejjaħ sanitizer” u “is-sistema hija sigura.”
Hawn mudell li jidher f’sistemi reali l-ħin kollu.
Applikazzjoni web tirċievi payload JSON, toħroġ redirect_url, tivvalidah kontra regex ta’ allowlist, tagħmel URL-decode tiegħu, u tgħaddi r-riżultat lil redirect handler.
Rapport klassiku minn sors sa sink jista’ jiddeskrivi l-fluss:
input mhux fdat → kontroll regex → URL decode → redirect
Iżda l-mistoqsija vera mhijiex jekk il-kontroll jeżistix. Hija jekk dak il-kontroll għadux jirrestrinġi l-valur wara t-trasformazzjonijiet li jiġu wara.
Jekk ir-regex jaħdem qabel id-decoding, fil-fatt jirrestrinġi l-URL decoded bil-mod kif ir-redirect handler jinterpretah?
Li twieġeb dan ifisser li tagħmel raġunament dwar il-katina kollha tat-trasformazzjoni: x’jippermetti r-regex, kif jaġixxu d-decoding u n-normalizzazzjoni, kif il-parsing tal-URL jittratta każijiet marġinali, u kif il-loġika tar-redirect tirriżolvi skemi u awtoritajiet.
Ħafna mill-vulnerabbiltajiet li jimportaw fil-prattika jidhru hekk: żbalji fl-ordni tal-operazzjonijiet, normalizzazzjoni parzjali, ambigwitajiet fil-parsing, u nuqqas ta’ qbil bejn validazzjoni u interpretazzjoni. Il-fluss tad-data jidher. Id-dgħufija tinsab f’kif ir-restrizzjonijiet jinfirxu—jew jonqsu milli jinfirxu—matul il-katina tat-trasformazzjoni.
Dan mhuwiex biss mudell teoretiku. F’CVE-2024-29041(jinfetaħ f’tieqa ġdida), Express kien affettwat minn kwistjoni ta’ open redirect fejn URLs iffurmati ħażin setgħu jevitaw implimentazzjonijiet komuni ta’ allowlist minħabba kif il-miri tar-redirect kienu encoded u mbagħad interpretati. Il-fluss tad-data kien dirett. Il-mistoqsija aktar diffiċli—u dik li ddeterminat jekk il-bug kienx jeżisti—kienet jekk il-validazzjoni kinitx għadha valida wara l-katina tat-trasformazzjoni.
Codex Security huwa mibni madwar għan sempliċi: inaqqas it-triage billi juri kwistjonijiet b’evidenza aktar b’saħħitha. Fil-prodott, dan ifisser li juża kuntest speċifiku għar-repożitorju (inkluż mudell ta’ theddid) u jivvalida kwistjonijiet b’sinjal għoli f’ambjent iżolat qabel ma jurihom.
Meta Codex Security jiltaqa’ ma’ konfini li jidhru bħala “validazzjoni” jew “sanitizzazzjoni,” ma jittrattax dan bħala checkbox. Jipprova jifhem x’qed jipprova jiggarantixxi l-kodiċi—u mbagħad jipprova jiċħad dik il-garanzija.
Fil-prattika, dan għandu t-tendenza li jidher bħala taħlita ta’:
- Qari tal-code path rilevanti bil-kuntest sħiħ tar-repożitorju, bħalma jagħmel riċerkatur tas-sigurtà, u tiftix għal nuqqas ta’ qbil bejn l-intenzjoni u l-implimentazzjoni. Dan jinkludi kummenti, iżda l-mudell mhux bilfors jemmen il-kummenti għalhekk jekk iżżid //Halvar says: this is not a bug fuq il-kodiċi tiegħek ma tħawwdux, jekk tassew hemm bug.
- Tnaqqis tal-problema għall-iżgħar parti li tista’ tiġi ttestjata (pereżempju, il-pipeline ta’ trasformazzjoni madwar input wieħed), sabiex tkun tista’ tagħmel raġunament dwarha mingħajr il-bqija tas-sistema fit-triq. F’dan is-sens, Codex Security jiġbed barra biċċiet żgħar ta’ kodiċi u mbagħad jikteb micro-fuzzers għalihom.
- Raġunament dwar restrizzjonijiet fuq diversi trasformazzjonijiet, minflok jittratta kull kontroll b’mod indipendenti. Fejn xieraq, dan jista’ jinkludi formalizzazzjoni bħala kwistjoni ta’ satisfiability. Fi kliem ieħor, nagħtu lill-mudell aċċess għal ambjent Python b’z3-solver u huwa tajjeb jużah meta jkun meħtieġ, bħalma persuna jkollha tagħmel meta twieġeb problema partikolarment ikkumplikata ta’ restrizzjonijiet fuq input. Dan huwa partikolarment utli biex tħares lejn integer overflows jew bugs simili fuq arkitetturi mhux standard.
- Eżekuzzjoni ta’ ipoteżijiet f’ambjent sandboxed ta’ validazzjoni meta jkun possibbli, biex tiddistingwi bejn “din tista’ tkun problema” u “din hija problema”. M’hemmx prova aħjar minn PoC sħiħ end-to-end bil-kodiċi kkumpilat fil-modalità debug.
Din hija l-bidla ewlenija: minflok tieqaf f’“jeżisti kontroll,” is-sistema timbotta lejn “l-invariant iżomm (jew le), u hawn l-evidenza”. U l-mudell jagħżel l-aħjar għodda għal dak ix-xogħol.
Reazzjoni raġonevoli hija: għaliex ma nagħmlux it-tnejn? Nibdew b’rapport SAST, imbagħad nużaw l-aġent biex jagħmel raġunament aktar profond.
Hemm każijiet fejn sejbiet precomputed huma ta’ għajnuna—speċjalment għal klassijiet dojoq u magħrufa ta’ bugs. Iżda għal aġent iddisinjat biex jiskopri u jivvalida vulnerabbiltajiet fil-kuntest, li tibda minn rapport SAST joħloq tliet modi prevedibbli ta’ falliment.
L-ewwel, jista’ jinkoraġġixxi tidjiq prematur. Lista ta’ sejbiet hija mappa ta’ fejn għodda diġà ħarset. Jekk tittrattaha bħala l-punt tat-tluq, tista’ xxaqleb is-sistema biex tonfoq sforz sproporzjonat fl-istess reġjuni, bl-użu tal-istess astrazzjonijiet, u titlef klassijiet ta’ kwistjonijiet li ma jaqblux mal-mod kif tara d-dinja l-għodda.
It-tieni, jista’ jintroduċi ġudizzji impliċiti li diffiċli tneħħihom. Ħafna sejbiet ta’ SAST jikkodifikaw assunzjonijiet dwar sanitizzazzjoni, validazzjoni, jew konfini tal-fiduċja. Jekk dawk l-assunzjonijiet huma żbaljati—jew sempliċement mhux kompluti—it-tmigħ tagħhom fil-linja ta’ raġunament jista’ jbiddel lill-aġent minn “investiga” għal “ikkonferma jew ċaħad,” li mhuwiex dak li rridu li jagħmel l-aġent.
It-tielet, jista’ jagħmilha aktar diffiċli li tevalwa s-sistema ta’ raġunament. Jekk il-pipeline jibda b’output ta’ SAST, isir diffiċli tissepara dak li l-aġent skopra bl-analiżi tiegħu stess minn dak li wiret minn għodda oħra. Dik is-separazzjoni hija importanti jekk trid tkejjel il-kapaċitajiet tas-sistema b’mod preċiż, li huwa meħtieġ biex is-sistema titjieb maż-żmien.
Għalhekk bnejna Codex Security biex jibda minn fejn tibda r-riċerka tas-sigurtà: mill-kodiċi u l-intenzjoni tas-sistema, bil-validazzjoni tintuża biex tgħolli l-livell ta’ kunfidenza qabel ninterrompu lil persuna.
L-għodod SAST jistgħu jkunu eċċellenti f’dak li huma ddisinjati għalih: jinfurzaw standards ta’ kodifikazzjoni sigura, jaqbdu kwistjonijiet sempliċi minn sors sa sink, u jidentifikaw mudelli magħrufa fuq skala kbira b’tradeoffs prevedibbli. Jistgħu jkunu parti b’saħħitha minn defense-in-depth.
Dan il-post huwa aktar dejjaq: huwa dwar għaliex aġent iddisinjat biex jagħmel raġunament dwar l-imġiba u jivvalida s-sejbiet m’għandux jibda xogħlu marbut ma’ lista statika ta’ sejbiet.
Ta’ min isemmi wkoll limitazzjoni relatata ta’ ħsieb purament minn sors sa sink: mhux kull vulnerabbiltà hija problema ta’ fluss tad-data. Ħafna fallimenti reali huma problemi ta’ stat u invariant—bypasses tal-workflow, lakuni fl-awtorizzazzjoni, u bugs tat-tip “is-sistema tinsab fl-istat ħażin”. Għal dawn it-tipi ta’ bugs, valur ikkontaminat ma jasalx f’“sink perikoluż” wieħed. Ir-riskju jinsab f’dak li l-programm jassumi li dejjem se jkun veru.
Nistennew li l-ekosistema tal-għodod tas-sigurtà tkompli titjieb: analiżi statika, fuzzing, runtime guards, u workflows aġentiċi kollha se jkollhom rwoli.
Li rridu li Codex Security ikun tajjeb fih huwa l-parti li tiswa l-aktar lit-timijiet tas-sigurtà: li ddawwar “dan jidher suspettuż” f’“dan huwa reali, hawn kif ifalli, u hawn soluzzjoni li taqbel mal-intenzjoni tas-sistema.”
Jekk trid titgħallem aktar dwar kif Codex Security jiskennja repożitorji, jivvalida sejbiet, u jipproponi soluzzjonijiet, ara id-dokumentazzjoni tagħna(jinfetaħ f’tieqa ġdida).


