ડિસેરિયલાઇઝેશન શું છે - રિમોટ કોડ એક્ઝેક્યુશન

કેવી રીતે અસુરક્ષિત ડિસેરિયલાઇઝેશન રિમોટ કોડ એક્ઝેક્યુશન બની જાય છે (અને મર્જ કરતા પહેલા તેને કેવી રીતે પકડવું)

સામગ્રીનું કોષ્ટક

અવશ્ય વાંચવા જેવી પોસ્ટ્સ

રસપ્રદ નવીનતમ પોસ્ટ્સ

આ Commit જેણે પાછળનો દરવાજો ખોલ્યો

વપરાશકર્તા દ્વારા અપલોડ કરાયેલા ઑબ્જેક્ટ્સને હેન્ડલ કરવા માટે એક નવી સુવિધા મર્જ કરવામાં આવી છે. બધું પરીક્ષણોમાંથી પસાર થાય છે, પરંતુ અઠવાડિયા પછી, પેન્ટેસ્ટ દર્શાવે છે કે હુમલાખોરો સર્વર પર આદેશો ચલાવી શકે છે; કોડમાં છુપાયેલા અસુરક્ષિત ડિસેરિયલાઇઝેશનનું પરિણામ. ડિસેરિયલાઇઝેશનથી રિમોટ કોડ એક્ઝિક્યુશન સુધીનું અંતર ખતરનાક રીતે નાનું હોઈ શકે છે, ખાસ કરીને જ્યારે ઓપન સોર્સ પેકેજો અથવા આંતરિક સેવાઓમાંથી સીરીયલાઇઝ્ડ ડેટાને માન્યતા વિના વિશ્વાસ કરવામાં આવે છે.

કોડમાં ડિસેરિયલાઇઝેશન શું છે, તે શા માટે જોખમી છે, અને તે ક્યાં છુપાયેલું છે

ડેવલપરની દ્રષ્ટિએ, ડિસેરિયલાઇઝેશન શું છે? તે સ્ટ્રક્ચર્ડ ડેટા, JSON, XML, બાઈનરી ફોર્મેટ અથવા ભાષા-વિશિષ્ટ સીરીયલાઇઝ્ડ ઑબ્જેક્ટ્સને લેવાની અને તેમને મેમરીમાં પાછા ઑબ્જેક્ટમાં ફેરવવાની પ્રક્રિયા છે.

તેના પોતાના પર, ડિસેરિયલાઇઝેશન હાનિકારક અને સામાન્ય છે, ઉદાહરણ તરીકે:

  • જાવા: સાથે વસ્તુઓ વાંચવી ઑબ્જેક્ટઇનપુટસ્ટ્રીમ
  • પાયથોન: ડેટા લોડ કરી રહ્યું છે પિકેલ.લોડ
  • Node.js: JSON ને આની સાથે પાર્સ કરી રહ્યું છે JSON.parse

જ્યારે માન્યતા વિના અવિશ્વસનીય ડેટા પર ડિસેરિયલાઇઝેશન લાગુ કરવામાં આવે છે ત્યારે જોખમ દેખાય છે. હુમલાખોર ગેજેટ ચેઇનને ટ્રિગર કરે છે તેવા ઇનપુટ બનાવી શકે છે, હાલના કોડ પાથનો ઉપયોગ અનિચ્છનીય રીતે થાય છે, જે રિમોટ કોડ એક્ઝેક્યુશન તરફ દોરી શકે છે.

અસુરક્ષિત ડિસેરિયલાઇઝેશન ઘણીવાર આમાં જોવા મળે છે:

  • ઓપન સોર્સ પેકેજો અસુરક્ષિત ડિફોલ્ટ્સ સાથે
  • કસ્ટમ કોડ જે ધારે છે કે શ્રેણીબદ્ધ ઇનપુટ વિશ્વસનીય છે
  • તૃતીય-પક્ષ API ચકાસણી વિના શ્રેણીબદ્ધ ઑબ્જેક્ટ પરત કરી રહ્યા છે
  • કલાકૃતિઓ બનાવો જેમ કે:
    • જાવા .સેર પૂર્વ-સિરિયલાઇઝ્ડ ઑબ્જેક્ટ્સ ધરાવતી ફાઇલો.
    • પાયથોન .પીકેએલ મશીન લર્નિંગ વર્કફ્લોમાં મોડેલ ફાઇલો.
    • ડોકર છબીઓ અથવા ડિપ્લોયમેન્ટ કન્ટેનરમાં એમ્બેડ કરેલા સીરીયલાઇઝ્ડ કન્ફિગરેશન ઑબ્જેક્ટ્સ
  • ટેસ્ટ ફિક્સર જેમ કે:

    • પ્રોડક્શન સ્નેપશોટમાંથી કોપી કરાયેલ જૂનો શ્રેણીબદ્ધ પરીક્ષણ ડેટા.
    • પ્રદર્શન અથવા રીગ્રેશન પરીક્ષણો માટે બાહ્ય ભંડારોમાંથી ડાઉનલોડ કરાયેલ શ્રેણીબદ્ધ પેલોડ્સ.

આ ફાઇલોને રિપોઝીટરીમાં દાખલ કરી શકાય છે અને પરીક્ષણો અથવા ડિપ્લોયમેન્ટ દરમિયાન આપમેળે લોડ કરી શકાય છે, જે અસુરક્ષિત બનાવે છે. ડિસેરિયલાઇઝેશન in CI/CD pipelineકોડ ઉત્પાદન સુધી પહોંચે તે પહેલાં.

અસુરક્ષિત ડિસેરિયલાઇઝેશનથી રિમોટ કોડ એક્ઝેક્યુશન સુધી: ધ એટેક પાથ

અસુરક્ષિત ડિસેરિયલાઇઝેશન માટેની શોષણ સાંકળ ઘણીવાર આમાંથી એક પેટર્નને અનુસરે છે:

  1. અવિશ્વસનીય ઇનપુટ એપ્લિકેશનમાં પ્રવેશે છે.
  2. અસુરક્ષિત ડિસેરિયલાઇઝેશન પ્રતિબંધો વિના વસ્તુઓને ફરીથી બનાવે છે.
  3. ગેજેટ ચેઇન અણધારી રીતે હાલની કાર્યક્ષમતાને ટ્રિગર કરે છે.
  4. હુમલાખોર વિશેષાધિકારો વધારે છે અને રિમોટ કોડ એક્ઝેક્યુશન પ્રાપ્ત કરે છે.

ચલો

  • જાવા ગેજેટ ચેઇન્સ અપાચે કોમન્સ જેવી જૂની લાઇબ્રેરીઓનો ઉપયોગ કરે છે.
  • પાયથોન .પીકેએલ એમ્બેડેડ દૂષિત વસ્તુઓ સાથે મોડેલ લોડિંગ.
  • Node.js JSON સાથે વિશ્લેષણ કરી રહ્યું છે eval() અથવા ગતિશીલ આયાતો.

પ્રવાહ:

મર્જ કરતા પહેલા અસુરક્ષિત ડિસેરિયલાઇઝેશન કેવી રીતે શોધી શકાય

કોડ મર્જ થાય તે પહેલાં અસુરક્ષિત ડિસેરિયલાઇઝેશનને પકડવું એ ડિપ્લોયમેન્ટ પછી તેને ઠીક કરવા કરતાં ઘણું સસ્તું છે. ઓટોમેટેડ વિશ્લેષણ અને પ્રોએક્ટિવ ટેસ્ટિંગનું સંયોજન શ્રેષ્ઠ કાર્ય કરે છે:

  • સ્ટેટિક એપ્લિકેશન સુરક્ષા પરીક્ષણ (SAST):
    • જોખમી API શોધવા માટે સ્કેનર્સ ગોઠવો જેમ કે ઑબ્જેક્ટઇનપુટસ્ટ્રીમ, પિકેલ.લોડ, અને YAML.load સલામત લોડર વિના.
    • સોર્સ કોડ બંને સ્કેન કરો અને અસુરક્ષિત માટે આર્ટિફેક્ટ્સ બનાવો/પરીક્ષણ કરો ડિસેરિયલાઇઝેશન પેટર્ન.
    • તારણો સીધા માં પ્રદર્શિત કરો pull requests જેથી વિકાસકર્તાઓ મર્જ કરતા પહેલા તેમને સંબોધિત કરી શકે.
  • CI/CD એકત્રિકરણ:

ઉદાહરણ વર્કફ્લો:

  • અસુરક્ષિત કોડને ઉત્પાદન શાખાઓ સુધી પહોંચતા અટકાવવા માટે મહત્વપૂર્ણ અસુરક્ષિત ડિસેરિયલાઇઝેશન તારણો પર બ્લોક મર્જ.
  • સિમ્યુલેટેડ દૂષિત ઇનપુટ્સ સાથે યુનિટ ટેસ્ટ:

    • બનાવો હાનિકારક, નિયંત્રિત પેલોડ્સ જે સામાન્ય શ્રેણીબદ્ધ હુમલાના પદાર્થોની નકલ કરે છે.
    • એપ્લિકેશન તેમને કેવી રીતે હેન્ડલ કરે છે તેનું પરીક્ષણ કરો; તેણે ઇનપુટને આંખ આડા કાન કરીને પ્રક્રિયા કરવાને બદલે તેને નકારવું, સેનિટાઇઝ કરવું અથવા લોગ કરવું જોઈએ.
    • આ પરીક્ષણોને સ્વચાલિતમાં શામેલ કરો pipeline તેથી તેઓ દરેક પીઆર પર ચાલે છે, અને અસુરક્ષિત ડિસેરિયલાઇઝેશન વર્તણૂકને વહેલા પકડી લે છે.
    • ખાતરી કરો કે ટેસ્ટ પેલોડ્સ બિન-એક્ઝિક્યુટેબલ છે અને રિપોઝીટરીમાં સંગ્રહિત કરવા માટે સલામત છે, ફક્ત શોધ તર્ક પર ધ્યાન કેન્દ્રિત કરો.

આ સ્તરીય અભિગમ ડેવલપર-માલિકીના પરીક્ષણો સાથે સ્વચાલિત સ્કેનીંગને જોડે છે, જે સુનિશ્ચિત કરે છે કે અસુરક્ષિત ડિસેરિયલાઇઝેશન પાથને ઓળખવામાં આવે છે અને તે રિમોટ કોડ એક્ઝેક્યુશન નબળાઈઓ બની શકે તે પહેલાં તેને દૂર કરવામાં આવે છે.

વિકાસકર્તાઓ માટે નિવારણ વ્યૂહરચનાઓ: ડિસેરિયલાઇઝેશનને રિમોટ કોડ એક્ઝેક્યુશન બનતા અટકાવવું

  1. વિશ્વાસની સીમાઓ: ફક્ત પ્રમાણિત, ચકાસાયેલ સ્ત્રોતોમાંથી જ ડીસીરિયલાઇઝ કરો.
  2. સલામત API:

     

    • જાવા: માન્યતા સાથે સુરક્ષિત લાઇબ્રેરીઓ.
    • પાયથોન: ઉપયોગ કરો json.loads() પર અથાણું.લોડ્સ() જ્યાં શક્ય હોય.
    • Node.js: ટાળો eval() અથવા ગતિશીલ કોડ અમલ.

       

  3. મંજૂરી સૂચિઓ અને સ્કીમા: માન્ય ઑબ્જેક્ટ પ્રકારોને પ્રતિબંધિત કરો. JSON સ્કીમા લાગુ કરો.
  4. નિર્ભરતા સ્વચ્છતા: ડિસેરિયલાઇઝેશન અથવા રિમોટ કોડ એક્ઝેક્યુશનનો ઉલ્લેખ કરતા CVE માટે મોનિટર કરો.
  5. કોડ સમીક્ષાઓ: ઉમેરો ડિસેરિયલાઇઝેશન પીઆર સમીક્ષા નમૂનાઓ માટે સલામતી તપાસ.

ટૂલિંગ નોંધ: ટૂલ્સ જેવા કે ઝીગેની મર્જ કરતા પહેલા અસુરક્ષિત ડિસેરિયલાઇઝેશન માટે કોડ અને ડિપેન્ડન્સી સ્કેન કરો, ઉચ્ચ-જોખમવાળા વિસ્તારોને ઓળખો જેથી વિકાસકર્તાઓ તેમને વહેલા ઠીક કરી શકે.

ભાષાઓમાં શોધ પેટર્નનું ઉદાહરણ (સલામત સ્યુડો-કોડ)

નીચે આપેલા બધા ઉદાહરણો સેનિટાઇઝ્ડ સ્યુડો-કોડ છે જે શોધ પેટર્ન દર્શાવે છે, કામ કરતા શોષણો નથી:

જાવા - અસુરક્ષિત API ઉપયોગ શોધી રહ્યું છે:

પાયથોન - અસુરક્ષિત ડિસેરિયલાઇઝેશન ટાળવું:

Node.js - ડાયનેમિક કોડ એક્ઝેક્યુશન અટકાવવું:

DevSecOps માં ઓટોમેટિક ડિટેક્શન Pipelines: ઉત્પાદન સુધી પહોંચે તે પહેલાં ડિસેરિયલાઇઝેશનને પકડવું

અસુરક્ષિત ડિસેરિયલાઇઝેશનની શોધને સ્વચાલિત કરવાથી ખાતરી થાય છે કે નબળાઈઓ પકડીને સુધારેલ છે ઉત્પાદનમાં રિમોટ કોડ એક્ઝેક્યુશન તરફ દોરી જાય તે પહેલાં.

Pipeline સ્કેનિંગ

  • ચલાવો SAST સોર્સ કોડ, રૂપરેખાંકન ફાઇલો અને દરેક પર બિલ્ડ આર્ટિફેક્ટ્સ પર commit.
  • એપ્લિકેશન કોડ અને બંનેમાં અસુરક્ષિત ડિસેરિયલાઇઝેશન પેટર્ન શોધો નિર્ભરતા.

આર્ટિફેક્ટ નિરીક્ષણ

  • સ્કેન કરો .સેર, .પીકેએલ, અને પરીક્ષણો ડિપ્લોય કરતા પહેલા અથવા તો ચલાવતા પહેલા અસુરક્ષિત પેટર્ન માટે અન્ય શ્રેણીબદ્ધ ફાઇલો.

Pull Request બ્લોકીંગ

  • જો અસુરક્ષિત ડિસેરિયલાઇઝેશન મળી આવે તો મર્જને બ્લોક કરો.
  • ઉપચારને ઝડપી બનાવવા માટે PR માં કાર્યક્ષમ પ્રતિસાદ દર્શાવો.

યુનિટ ટેસ્ટ અમલીકરણ

  • માં સિમ્યુલેટેડ દૂષિત ઇનપુટ્સ સાથે યુનિટ પરીક્ષણો શામેલ કરો CI/CD pipeline
  • જો એપ્લિકેશન અસુરક્ષિત સીરીયલાઇઝ્ડ ડેટાને નકારવાને બદલે પ્રક્રિયા કરે છે, તો નિષ્ફળતા બને છે.

નિયમોને નબળા પાડ્યા વિના ખોટા હકારાત્મક વિચારો ટાળવા

  • ચેતવણીઓને "શાંત" કરવા માટે શોધ નિયમોને અક્ષમ કરશો નહીં; આ વાસ્તવિક અસુરક્ષિત ડિસેરિયલાઇઝેશનને શોધ્યા વિના પસાર થવા દે છે.
  • જાણીતા સલામત પેટર્ન અથવા નિર્ભરતા માટે નિયંત્રિત વ્હાઇટલિસ્ટ (મંજૂરી-સૂચિ) નો ઉપયોગ કરો.
  • વ્હાઇટલિસ્ટ એન્ટ્રીઓને મંજૂરી આપતા પહેલા સુરક્ષા માન્યતા જરૂરી છે.
  • વ્હાઇટલિસ્ટને વર્ઝન કંટ્રોલ હેઠળ રાખો અને સમયાંતરે તેની સમીક્ષા કરો જેથી ખાતરી કરી શકાય કે બધા અપવાદો વાજબી અને સલામત રહે.

ઝાયજેનીની ભૂમિકા

  • સીધા જ તેમાં એકીકૃત થાય છે CI/CD pipelineસોર્સ કોડ સ્કેન કરવા અને આર્ટિફેક્ટ્સ બનાવવા બંને માટે.
  • જીવનચક્રની શરૂઆતમાં અસુરક્ષિત ડિસેરિયલાઇઝેશન પેટર્ન અને જોખમી નિર્ભરતા શોધે છે.
  • ફરજિયાત સુરક્ષા સમીક્ષા સાથે નીતિ-આધારિત વ્હાઇટલિસ્ટિંગને સમર્થન આપે છે, વિકાસકર્તા ઉત્પાદકતા સાથે શોધ ચોકસાઈને સંતુલિત કરે છે.

સુરક્ષિત ડિસેરિયલાઇઝેશન દ્વારા રિમોટ કોડ એક્ઝેક્યુશનમાં આગળ રહેવું

અસુરક્ષિત ડિસેરિયલાઇઝેશન રિમોટ કોડ એક્ઝેક્યુશનનો સીધો માર્ગ ન બને ત્યાં સુધી ધ્યાન બહાર રહી શકે છે. તેને રોકવા માટે જરૂરી છે:

  • ડિસેરિયલાઇઝેશન શું છે અને તેનો દુરુપયોગ કેવી રીતે થઈ શકે છે તે સમજવું.
  • ડેવલપમેન્ટ વર્કફ્લોમાં ઓટોમેટેડ ડિટેક્શન એમ્બેડ કરવું.
  • નિયમિતપણે ડિપેન્ડન્સીની સમીક્ષા કરવી, આર્ટિફેક્ટ્સ બનાવવી અને પરીક્ષણોમાં ઉપયોગમાં લેવાતા શ્રેણીબદ્ધ ડેટા.

આ પ્રક્રિયામાં ઝાયજેનીની વ્યવહારુ ભૂમિકા:

  • સોર્સ કોડ સ્કેનિંગ: કોડ મર્જ થાય તે પહેલાં બહુવિધ ભાષાઓમાં અસુરક્ષિત ડિસેરિયલાઇઝેશન પેટર્ન ઓળખે છે.
  • આર્ટિફેક્ટ અને ડિપેન્ડન્સી વિશ્લેષણ: જોખમી શ્રેણીબદ્ધ ફાઇલો શોધે છે (.સેર, .પીકેએલ, એમ્બેડેડ રૂપરેખા) અને જાણીતી નબળાઈઓ સાથે તૃતીય-પક્ષ ઘટકો.
  • નીતિ-આધારિત નિયંત્રણો: સુરક્ષા માન્યતા સાથે નિયંત્રિત મંજૂરી-સૂચિને સપોર્ટ કરે છે, ખાતરી કરે છે કે જરૂરી અપવાદો વાસ્તવિક જોખમો રજૂ કરતા નથી.
  • સંદર્ભમાં વિકાસકર્તા પ્રતિસાદ: અંદર અસુરક્ષિત ડિસેરિયલાઇઝેશનનું ચોક્કસ સ્થાન અને કારણ દર્શાવે છે. pull requests, વિકાસકર્તાઓને તાત્કાલિક સમસ્યાઓનું નિરાકરણ કરવાની અને ફરીથી સ્કેન દ્વારા ઘટાડાની પુષ્ટિ કરવાની મંજૂરી આપે છે.

આ જેવા ચેકને સીધા જ એકીકૃત કરીને CI/CD, ટીમો અસુરક્ષિતને પકડી શકે છે અને સુધારી શકે છે ઉત્પાદનમાં રિમોટ કોડ એક્ઝેક્યુશનમાં આગળ વધવાની તક મળે તે પહેલાં ડિસેરિયલાઇઝેશન.

સ્કા-ટૂલ્સ-સોફ્ટવેર-રચના-વિશ્લેષણ-ટૂલ્સ
તમારા સોફ્ટવેર જોખમોને પ્રાથમિકતા આપો, સુધારણા કરો અને સુરક્ષિત કરો
તમારું મફત ખાતું મેળવો.
કોઈ ક્રેડિટ કાર્ડ જરૂરી નથી.

તમારા સોફ્ટવેર ડેવલપમેન્ટ અને ડિલિવરી સુરક્ષિત કરો

ઝાયજેની પ્રોડક્ટ સ્યુટ સાથે