Ki sa ki deseryalizasyon - ekzekisyon kòd a distans

Kijan Deseryalizasyon Ensekirite Vin Egzekisyon Kòd a Distans (epi Kijan Pou Trape Li Anvan Fizyon)

The Commit Sa te louvri yon pòt dèyè

Yo mete yon nouvo fonksyonalite ansanm pou jere objè telechaje pa itilizatè yo. Tout bagay reyisi tès yo, men kèk semèn apre, yon tès penetrasyon revele ke atakan yo ka egzekite kòmand sou sèvè a; rezilta yon deseryalizasyon ki pa an sekirite ki kache nan kòd la. Diferans ki genyen ant deseryalizasyon ak ekzekisyon kòd a distans ka piti anpil, sitou lè done seriyalize ki soti nan pakè sous ouvè oswa sèvis entèn yo fyab san validasyon.

Ki sa ki Deseryalizasyon nan Kòd, Poukisa li riske, e ki kote li kache

Nan langaj yon devlopè, kisa deseriyalizasyon ye? Se pwosesis pou pran done estriktire, JSON, XML, fòma binè, oswa objè seriyalize espesifik nan yon lang, epi transfòme yo tounen objè nan memwa.

Pou kont li, deseryalizasyon se inofansif e komen, pa egzanp:

  • JavaLi objè yo avèk ObjèAntreStream
  • PitonChaje done ak chajman konkonm
  • Node.jsAnaliz JSON ak JSON.parse

Risk la parèt lè yo aplike deseryalizasyon sou done ki pa fyab san validasyon. Yon atakè ka kreye opinyon ki deklanche yon chèn gadjèt, chemen kòd ki deja egziste yo itilize nan fason ki pa prevwa, sa ki ka mennen nan ekzekisyon kòd a distans.

Ensekirite deseryalizasyon souvan jwenn nan:

  • Pakè sous ouvè ak default ki pa an sekirite
  • Kòd Custom ki sipoze ke antre seriyalize a fyab
  • API twazyèm pati ap retounen objè seriyalize san verifikasyon
  • Bati atifak tankou:
    • Java .sè fichye ki gen objè pre-serializate.
    • Piton .pkl fichye modèl nan workflows aprantisaj machin.
    • Objè konfigirasyon seriyalize entegre nan imaj Docker oswa kontenè deplwaman
  • Enstalasyon tès yo tankou:

    • Ansyen done tès seri yo kopye soti nan snapshot pwodiksyon yo.
    • Chaj seryalize telechaje soti nan depo ekstèn pou tès pèfòmans oswa regresyon.

Yo ka mete fichye sa yo nan yon depo epi chaje yo otomatikman pandan tès oswa deplwaman, sa ki deklanche pwoblèm ki pa an sekirite. deseryalizasyon in CI/CD pipelines anvan menm kòd la rive nan pwodiksyon.

Soti nan Deseryalizasyon Ensekirite rive nan Egzekisyon Kòd a Distans: Chemen Atak la

Chèn eksplwatasyon pou deseryalizasyon ki pa an sekirite souvan swiv youn nan modèl sa yo:

  1. Done ki pa fyab antre nan aplikasyon an.
  2. Deseryalizasyon ki pa an sekirite rkree objè san restriksyon.
  3. Yon chèn gadjèt deklanche fonksyonalite ki deja egziste nan fason ki pa te prevwa.
  4. Atakan an ogmante privilèj yo epi li reyalize ekzekisyon kòd a distans.

Variantes:

  • Chèn gadjèt Java yo eksplwate ansyen bibliyotèk tankou Apache Commons.
  • Piton .pkl chaje modèl ak objè move entegre.
  • Analiz JSON Node.js avèk eval() oubyen enpòtasyon dinamik.

Flow:

				
					Untrusted Input → Deserialization → Gadget Chain → Remote Code Execution
				
			

Kijan pou w wè deseryalizasyon ki pa an sekirite anvan ou rantre ladan l

Detekte deseryalizasyon ki pa an sekirite anvan fizyon kòd yo pi bon mache pase ranje li apre deplwaman. Yon konbinezon analiz otomatik ak tès proaktif fonksyone pi byen:

  • Tès Sekirite Aplikasyon Estatik (SAST):
    • Konfigire eskanè yo pou detekte API ki riske tankou ObjèAntreStream, chajman konkonm, epi YAML.load san yon loader ki an sekirite.
    • Eskane tou de kòd sous la ak atifak konstwi/tèse pou jwenn enfòmasyon ki pa an sekirite. deseryalizasyon modèl.
    • Montre rezilta yo dirèkteman nan pull requests pou devlopè yo ka adrese yo anvan yo fizyone.
  • CI/CD Entegrasyon:

Egzanp travay:

				
					sql

Commit → SAST scan → PR alert → Fix before merge

				
			
  • Fizyon blòk sou dekouvèt deseryalizasyon kritik ki pa an sekirite pou anpeche kòd ki pa an sekirite rive nan branch pwodiksyon yo.
  • Tès Inite ak Antre Malveyan Simile:

    • Kreye chaj inofansif, kontwole ki imite objè atak seriyalize komen yo.
    • Teste kijan aplikasyon an jere yo; li ta dwe rejte, dezenfekte, oswa anrejistre done yo olye pou l trete yo avèg.
    • Mete tès sa yo nan sistèm otomatik la pipeline konsa yo fonksyone sou chak PR, yo detekte konpòtman deseryalizasyon ki pa an sekirite byen bonè.
    • Asire w ke chaj tès yo pa ka egzekite epi yo an sekirite pou estoke nan depo a, konsantre sèlman sou lojik deteksyon an.

Apwòch an kouch sa a konbine eskanè otomatik ak tès devlopè yo posede, sa ki asire ke chemen deseryalizasyon ki pa an sekirite yo idantifye epi retire byen lontan anvan yo ka vin vilnerabilite nan ekzekisyon kòd a distans.

Estrateji Prevansyon pou Devlopè yo: Anpeche Deseryalizasyon an Vin Egzekisyon Kòd a Distans

  1. Limit konfyans yoSèlman dezeryalize soti nan sous otantifye ak verifye.
  2. API ki an sekirite:

     

    • Java: Bibliyotèk an sekirite avèk validasyon.
    • Piton: Itilizasyon json.loads() sou pickle.loads() kote sa posib.
    • Node.js: Evite eval() oubyen ekzekisyon kòd dinamik.

       

  3. Lis otorizasyon ak schèmaRestriksyon sou kalite objè ki otorize yo. Aplike schèma JSON yo.
  4. Ijyèn depandansSiveye CVE ki mansyone deseryalizasyon oswa ekzekisyon kòd a distans.
  5. Revizyon Kòd: Ajoute deseryalizasyon verifikasyon sekirite pou modèl revizyon PR yo.

Nòt sou zouti: Zouti tankou Xygeni eskane kòd ak depandans pou deseryalizasyon ki pa an sekirite anvan fizyon, idantifye zòn ki gen gwo risk pou devlopè yo ka ranje yo byen bonè.

Egzanp Modèl Deteksyon atravè Lang yo (Pseudo-Kòd An Sekirite)

Tout egzanp ki anba yo se pseudo-kòd dezenfekte ki montre modèl deteksyon, yo pa exploit ki fonksyone:

Java – Deteksyon itilizasyon API ki pa an sekirite:

				
					java
// BAD: Accepting untrusted input without validation
ObjectInputStream in = new ObjectInputStream(userInputStream);
Object obj = in.readObject(); // Unsafe - no class type checks

// GOOD: Validate allowed classes before processing
if (allowedClasses.contains(obj.getClass().getName())) {
    process(obj); // Safe processing of approved classes
}

				
			

Python – Evite deseryalizasyon ki pa an sekirite:

				
					python
import pickle

# BAD: Loading untrusted serialized data directly
data = pickle.loads(untrusted_input)  # Unsafe - arbitrary object execution risk

# GOOD: Use JSON with schema validation
import json
data = json.loads(untrusted_input)  # Safe when validated against schema

				
			

Node.js – Anpeche ekzekisyon kòd dinamik:

				
					javascript
// BAD: Executing code from parsed data
let obj = JSON.parse(untrustedInput);
eval(obj.code); // Unsafe - allows arbitrary code execution

// GOOD: Use fixed logic without dynamic execution
let safeObj = JSON.parse(untrustedInput);
process(safeObj); // Handle only expected properties and values

				
			

Otomatize Deteksyon nan DevSecOps Pipelines: Detekte Deseryalizasyon Anvan Li Rive Nan Pwodiksyon

Otomatize deteksyon deseryalizasyon ki pa an sekirite asire yo detekte epi repare vilnerabilite yo anvan yo mennen nan ekzekisyon kòd a distans nan pwodiksyon.

Pipeline Fè enspeksyon

  • kouri SAST sou kòd sous, fichye konfigirasyon, ak atifak konstriksyon nan chak commit.
  • Detekte modèl deseriyalizasyon ki pa an sekirite nan kòd aplikasyon an ak Depandans yo.

Enspeksyon Atifak

  • Fè enspeksyon .ser, .pkl, ak lòt fichye serilize pou modèl ki pa an sekirite anvan yo deplwaye oswa menm fè tès yo.

Pull Request Bloke

  • Bloke fizyon si yo detekte yon deseryalizasyon ki pa an sekirite.
  • Montre fidbak ki ka pran aksyon nan PR yo pou akselere koreksyon an.

Aplikasyon Tès Inite

  • Mete tès inite ak antre move simile nan CI/CD pipeline
  • Konstriksyon yo echwe si aplikasyon an trete done seriyalize ki pa an sekirite olye pou l rejte yo.

Evite Fo Pozitif San Febli Règ yo

  • Pa dezaktive règ deteksyon yo pou "fèmen silans" alèt yo; sa ka pèmèt yon vrè deseryalizasyon ki pa an sekirite pase inapèsi.
  • Sèvi ak yon lis blan kontwole (lis otorize) pou modèl oswa depandans ki an sekirite deja konnen.
  • Mande validasyon sekirite anvan ou apwouve antre sou lis blan an.
  • Kenbe lis blan an anba kontwòl vèsyon epi revize li detanzantan pou asire tout eksepsyon yo rete jistifye epi an sekirite.

Wòl Xygeni a

  • Entegre dirèkteman nan CI/CD pipelines pou eskane tou de kòd sous la epi konstwi atifak yo.
  • Detekte modèl deseryalizasyon ki pa an sekirite ak depandans ki riske byen bonè nan sik lavi a.
  • Sipòte lis blan ki baze sou règleman ak revizyon sekirite obligatwa, pou balanse presizyon deteksyon ak pwodiktivite devlopè.

Rete Devan Egzekisyon Kòd a Distans Gras a Deseryalizasyon An Sekirite

Deseryalizasyon ki pa an sekirite ka rete inapèsi jiskaske li vin tounen yon chemen dirèk pou ekzekisyon kòd a distans. Pou anpeche li, ou bezwen:

  • Konprann sa ki deseryalizasyon ak kijan yo ka abize li.
  • Entegre deteksyon otomatik nan workflow devlopman an.
  • Revize depandans yo, atifak konstriksyon yo, ak done seriyalize yo itilize nan tès yo regilyèman.

Wòl pratik Xygeni nan pwosesis sa a:

  • Eskane Kòd SousIdantifye modèl deseryalizasyon ki pa an sekirite atravè plizyè lang anvan yo fizyone kòd la.
  • Analiz Atifak ak DepandansDetekte fichye seriyalize ki riske (.ser, .pkl, konfigirasyon entegre) ak konpozan twazyèm pati ki gen vilnerabilite li te ye.
  • Kontwòl ki baze sou règlemanSipòte yon lis otorizasyon kontwole ak validasyon sekirite, pou asire ke eksepsyon nesesè yo pa prezante risk reyèl.
  • Kòmantè Devlopè nan KontèksSiyalize kote egzak la ak kòz deseryalizasyon ki pa an sekirite a anndan an. pull requests, sa ki pèmèt devlopè yo ranje pwoblèm yo imedyatman epi konfime mitigasyon an atravè re-eskane.

Lè w entegre chèk tankou sa yo dirèkteman nan CI/CD, ekip yo ka detekte epi korije pwoblèm ki pa an sekirite yo deseryalizasyon anvan li janm gen yon chans pou l vin ekzekite kòd a distans nan pwodiksyon.

zouti-lojisyèl-sca-tools-konpozisyon-analiz-zouti
Priyorize, korije, epi pwoteje risk lojisyèl ou yo
Jwenn Kont Gratui ou.
Pa gen kat kredi obligatwa.

Pwoteje devlopman ak livrezon lojisyèl ou a

avèk Xygeni Product Suite