The Commit Izay nanokatra varavarana ambadika
Nampiarahina ny endri-javatra vaovao iray mba hikarakarana ireo zavatra nalefan'ny mpampiasa. Nandalo fitsapana avokoa ny zava-drehetra, saingy herinandro vitsivitsy taty aoriana, nisy pentest naneho fa afaka manatanteraka baiko ao amin'ny mpizara ireo mpanafika; vokatry ny tsy fiarovana amin'ny deserialization miafina ao amin'ny kaody izany. Mety ho kely dia kely ny elanelana eo amin'ny deserialization sy ny fanatanterahana kaody lavitra, indrindra rehefa azo itokisana ny angona serialized avy amin'ny fonosana open source na serivisy anatiny raha tsy misy fanamarinana.
Inona no atao hoe Deserialization ao amin'ny Code, Nahoana no mampidi-doza izany, ary Aiza no iafenany
Raha ny amin'ny mpamorona rindrambaiko, inona no atao hoe deserialization? Dingana iray amin'ny fakana angona voarafitra, JSON, XML, endrika binary, na zavatra serialized manokana amin'ny fiteny iray izany, ary mamerina azy ireo ho zavatra ao amin'ny fitadidiana.
Izy irery, fanalana andiany tsy mampidi-doza ary mahazatra, ohatra:
- Java: Mamaky zavatra amin'ny ObjectInputStream
- PythonFampidirana angona amin'ny pickle.load
- Node.jsFamakafakana ny JSON amin'ny alalan'ny JSON.parse
Miseho ny risika rehefa ampiharina amin'ny angon-drakitra tsy azo itokisana ny deserialization tsy misy fanamarinana. Ny mpanafika dia afaka mamorona fidirana izay miteraka rojo gadget, lalan'ny kaody efa misy ampiasaina amin'ny fomba tsy nahy, izay mety hitarika amin'ny fanatanterahana kaody lavitra.
mampidi-doza fanalana andiany matetika hita ao amin'ny:
- Fonosana loharano misokatra miaraka amin'ny safidy tsy azo antoka
- Kaody manokana izay mihevitra fa azo itokisana ny fidirana mitohy
- API an'ny antoko fahatelo mamerina zavatra mitohy tsy misy fanamarinana
- Manangana zavatra tranainy toy ny:
- Java .ser rakitra misy zavatra efa voarafitra mialoha.
- Python .pkl rakitra modely ao amin'ny workflows fianarana milina.
- Zavatra fikirakirana mitohy tafiditra ao anaty sary Docker na fitoeran-javatra fametrahana
- Java .ser rakitra misy zavatra efa voarafitra mialoha.
- Fitaovana fitsapana toy ny:
- Angon-drakitra fitsapana tranainy nasiam-panoratana nalaina tahaka avy amin'ny sary famantarana ny famokarana.
- Entana alefa mitohy alaina avy amin'ny tahiry ivelany ho an'ny fitsapana fampisehoana na regression.
- Angon-drakitra fitsapana tranainy nasiam-panoratana nalaina tahaka avy amin'ny sary famantarana ny famokarana.
Ireo rakitra ireo dia azo ampidirina ao anaty tahiry ary ampidirina ho azy mandritra ny fitsapana na fametrahana, ka miteraka olana tsy azo antoka. fanalana andiany in CI/CD pipelines na dia mbola tsy tonga amin'ny famokarana aza ny kaody.
Avy amin'ny Deserialization tsy azo antoka mankany amin'ny Fanatanterahana kaody lavitra: Ny lalan'ny fanafihana
Ny rojo fanararaotana ho an'ny deserialization tsy azo antoka dia matetika manaraka ny iray amin'ireto lamina ireto:
- Fidirana tsy azo itokisana no miditra ao amin'ny fampiharana.
- Ny deserialization tsy azo antoka dia mamerina mamorona zavatra tsy misy fameperana.
- Mampihetsi-po ny fiasa efa misy amin'ny fomba tsy nahy ny rojo fitaovana elektronika iray.
- Mampitombo ny tombontsoa azo avy amin'ny "host" ny mpanafika ary manatanteraka ny fampiharana kaody lavitra.
Variants:
- Manararaotra ireo tranomboky tranainy toa ny Apache Commons ireo rojo fitaovana Java.
- Python .pkl Fametrahana modely misy zavatra mampidi-doza tafiditra ao anatiny.
- Famakafakana JSON Node.js miaraka amin'ny eval() na fanafarana mavitrika.
Flow:
Untrusted Input → Deserialization → Gadget Chain → Remote Code Execution
Ahoana no hamantarana ny Deserialization tsy azo antoka alohan'ny Merge
Mora kokoa ny misambotra ny deserialization tsy azo antoka alohan'ny fampiraisana kaody noho ny manamboatra izany aorian'ny fametrahana azy. Ny fitambaran'ny fanadihadiana mandeha ho azy sy ny fitsapana mialoha dia miasa tsara indrindra:
- Fitsapana fiarovana ny fampiharana statika (SAST):
- Amboary ny scanner mba hamantarana ireo API mampidi-doza toy ny ObjectInputStream, pickle.load, ary YAML.load raha tsy misy "loader" azo antoka.
- Skanera ny kaody loharano ary amboary/andramo ny artifacts raha misy tsy azo antoka fanalana andiany lamina.
- Asehoy mivantana ao amin'ny pull requests mba hahafahan'ny mpamorona mamaha azy ireo alohan'ny hampiraisana azy.
- Amboary ny scanner mba hamantarana ireo API mampidi-doza toy ny ObjectInputStream, pickle.load, ary YAML.load raha tsy misy "loader" azo antoka.
- CI/CD Integration:
Ohatra fampandehanana asa:
sql
Commit → SAST scan → PR alert → Fix before merge
- Mitambatra ny bloc amin'ny zavatra hita momba ny deserialization tsy azo antoka mba hisorohana ny kaody tsy azo antoka tsy ho tonga any amin'ny sampana famokarana.
- Fitsapana singa miaraka amin'ny fidirana ratsy nohadihadiana:
- mamorona entana tsy mampidi-doza sy voafehy izay manahaka ireo zavatra fanafihana mifanesy mahazatra.
- Andramo ny fomba fiasan'ny fampiharana azy ireo; tokony handà, hanadio, na handray an-tsoratra ny fidirana izy fa tsy hikirakira izany an-jambany.
- Ampidiro ao amin'ny fitsapana mandeha ho azy ireo fitsapana ireo pipeline noho izany dia miasa amin'ny PR rehetra izy ireo, ka mahatratra mialoha ny fitondran-tena tsy azo antoka amin'ny fanesorana ny serivisiny.
- Ataovy azo antoka fa tsy azo ampiharina ny entana fitsapana ary azo antoka ny fitahirizana azy ao amin'ny tahiry, mifantoka amin'ny lojika fitadiavana fotsiny.
- mamorona entana tsy mampidi-doza sy voafehy izay manahaka ireo zavatra fanafihana mifanesy mahazatra.
Ity fomba fiasa misy sosona ity dia mampifangaro ny fitiliana mandeha ho azy amin'ny fitsapana an'ny mpamorona, izay miantoka fa voafaritra sy esorina ela be ny lalan'ny deserialization tsy azo antoka alohan'ny mety ho lasa fahalemena amin'ny fanatanterahana kaody lavitra.
Tetikady fisorohana ho an'ny mpamorona: Fisorohana ny Deserialization tsy ho lasa fampiharana kaody lavitra
- Fetra azo itokisanaEsory amin'ny serivisinao ihany ny fampahalalana avy amin'ny loharano voamarina sy voamarina.
- API azo antoka:
- Java: Tranomboky azo antoka miaraka amin'ny fanamarinana.
- Python: Fampiasana json.loads() over pickle.loads() raha azo atao.
- Node.js: Fadio eval() na fampiharana kaody dinamika.
- Java: Tranomboky azo antoka miaraka amin'ny fanamarinana.
- Lisitra azo avela sy tetika: Mametra ny karazana zavatra azo atao. Ampiharo ny tetika JSON.
- Fahadiovana amin'ny fiankinan-dohaAraho maso ireo CVE miresaka momba ny deserialization na ny fanatanterahana kaody lavitra.
- Fanamarihana kaody: Ampio fanalana andiany fanamarinana fiarovana amin'ny môdely famerenana PR.
Fanamarihana momba ny fitaovana: Fitaovana toy ny Xygeni Mijery kaody sy fiankinan-doha raha misy tsy azo antoka ny deserialization alohan'ny hampiraisana, mamantatra ireo faritra mampidi-doza mba hahafahan'ny mpamorona manamboatra azy ireo mialoha.
Ohatra amin'ny lamina famantarana amin'ny fiteny samihafa (Kaody sandoka azo antoka)
Ireo ohatra rehetra etsy ambany dia pseudo-code nodiovina izay mampiseho lamina famantarana, fa tsy exploit miasa:
Java - Fitiliana ny fampiasana API tsy azo antoka:
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 - Fisorohana ny deserialization tsy azo antoka:
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 – Fisorohana ny fanatanterahana kaody dinamika:
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
Fandehanana mandeha ho azy ny fitadiavana ao amin'ny DevSecOps Pipelines: Fisamborana ny Deserialization alohan'ny hahatongavany amin'ny famokarana
Ny fanaovana mandeha ho azy ny fitadiavana ny tsy azo antoka dia miantoka ny tratra ary amboarina ny fahalemena alohan'ny hitarihany amin'ny fanatanterahana kaody lavitra mandritra ny famokarana.
Pipeline scanning
- Run SAST amin'ny kaody loharano, rakitra fikirakirana, ary artifact fananganana isaky ny commit.
- Mamantatra ireo lamina tsy azo antoka amin'ny deserialization ao amin'ny kaody fampiharana sy miankina.
Fanaraha-maso ny zavatra simba
- Scan .ser, .pkl, ary rakitra mitohy hafa ho an'ny lamina tsy azo antoka alohan'ny fametrahana na fampandehanana fitsapana aza.
Pull Request fanakanana
- Mitambatra ny bloc raha hita fa misy deserialization tsy azo antoka.
- Asehoy ao amin'ny PR ny valin-teny azo ampiharina mba hanafainganana ny fanarenana.
Fampiharana ny fitsapana singa
- Ampidiro ao amin'ny "unit tests" ireo "simulated malware inputs" CI/CD pipeline
- Miova ny tsy fahombiazana raha toa ka mikirakira angona mitohy tsy azo antoka ny fampiharana fa tsy mandà izany.
Fisorohana ny hevitra diso nefa tsy mampihena ny fitsipika
- Aza ajanona ny fitsipika momba ny fitadiavana mba "hampanginana" ireo fanairana; mety hamela ny fanairana tsy azo antoka handalo tsy ho hita izany.
- Mampiasà lisitra fotsy voafehy (lisitra-allow) ho an'ireo lamina na fiankinan-doha azo antoka fantatra.
- Mitaky fanamarinana fiarovana alohan'ny hanekena ny fidirana ao amin'ny lisitra fotsy.
- Tazomy eo ambany fanaraha-maso ny dikan-teny ny lisitra fotsy ary avereno jerena tsy tapaka mba hahazoana antoka fa ara-dalàna sy azo antoka ny tranga rehetra.
Ny anjara asan'i Xygeni
- Midira mivantana amin'ny CI/CD pipelines mba hijerena ny kaody loharano sy hananganana artifacts.
- Mamantatra ireo lamina deserialization tsy azo antoka sy ireo fiankinan-doha mampidi-doza eo am-piandohan'ny tsingerim-piainany.
- Manohana ny fampidirana lisitra fotsy mifototra amin'ny politika miaraka amin'ny famerenana fiarovana tsy maintsy atao, mandanjalanja ny fahamarinan'ny fitadiavana amin'ny vokatra azo avy amin'ny mpamorona.
Mijanona ho eo alohan'ny fanatanterahana kaody lavitra amin'ny alàlan'ny Deserialization azo antoka
Mety tsy ho voamarika ny deserialization tsy azo antoka mandra-pahatongany ho lalana mivantana mankany amin'ny fanatanterahana kaody lavitra. Ny fisorohana izany dia mitaky:
- Mahatakatra ny atao hoe deserialization sy ny fomba azo anararaotana azy.
- Fampidirana ny fitiliana mandeha ho azy ao amin'ny fizotran'ny fampandrosoana.
- Mandinika tsy tapaka ireo fiankinan-doha, manorina artifacts, ary angon-drakitra mitohy ampiasaina amin'ny fitsapana.
Ny anjara asan'ny Xygeni amin'ity dingana ity:
- Fijerena ny kaody loharano: Mamantatra ireo lamina tsy azo antoka amin'ny deserialization amin'ny fiteny maro alohan'ny hampiarahana ny kaody.
- Famakafakana ny Artifact sy ny Fiankinan-doha: Mamantatra ireo rakitra mitohitohy mampidi-doza (.ser, .pkl, embedded config) sy ireo singa avy amin'ny antoko fahatelo izay fantatra fa manana fahalemena.
- Fanaraha-maso mifototra amin'ny politika: Manohana lisitra azo avela voafehy miaraka amin'ny fanamarinana fiarovana, izay miantoka fa tsy hampiditra risika tena izy ireo tranga maningana ilaina.
- Hevitra avy amin'ny mpamorona ao anatin'ny toe-javatra misy azy: Maneho ny toerana marina sy ny antony mahatonga ny tsy fahazoana antoka ao anatiny pull requests, ahafahan'ny mpamorona rindrambaiko mamaha ny olana avy hatrany ary manamafy ny fampihenana izany amin'ny alàlan'ny famerenana mijery.
Amin'ny fampidirana ireo fanamarinana toy izao mivantana ao anatin'ny CI/CD, afaka misambotra sy manamboatra ny tsy fandriampahalemana ireo ekipa deserialization alohan'ny ahafahany miitatra amin'ny fanatanterahana kaody lavitra amin'ny famokarana.







