InvoiceShelf એ CVE-2026-55610 માટે પેચ રિલીઝ કર્યો છે, જે એક ગંભીર ખામી છે જે કોઈપણ કંપનીના માલિકને બીજી કંપનીના યુઝર એકાઉન્ટ્સ હાઇજેક કરવાની મંજૂરી આપે છે. CVSS સ્કેલ પર 8.7 રેટિંગ ધરાવતી આ નબળાઈ, એપના Laravel કોડમાં ટેનન્ટ-સ્કોપ ચેક (tenant-scope check) ના અભાવને કારણે આવી હતી.

આ ખામી કેવી રીતે કામ કરતી હતી

InvoiceShelf એ Laravel પર બનેલું એક SaaS ટૂલ છે જે કંપનીઓને સિંગલ ડેશબોર્ડ પરથી યુઝર્સ, ઇન્વોઇસ અને સેટિંગ્સનું સંચાલન કરવાની મંજૂરી આપે છે. આ પ્લેટફોર્મ ટેનન્ટને ઓળખવા માટે કસ્ટમ હેડર વાંચે છે. જ્યારે કોઈ Owner યુઝર રેકોર્ડ માટે વિનંતી કરે છે, ત્યારે કોડ ફક્ત એટલું જ તપાસે છે કે, “શું વિનંતી કરનાર તેમની પોતાની કંપનીના Owner છે?”

તે ક્યારેય એ ચકાસતું નથી કે લક્ષિત યુઝર તે જ ટેનન્ટનો છે. Laravel નું ઇમ્પ્લિસિટ રૂટ-મોડલ બાઈન્ડિંગ (implicit route-model binding) યુઝર ID ને ગ્લોબલ યુઝર્સ ટેબલમાં એક રો (row) સાથે જોડે છે, અને ઓથોરાઈઝેશન પોલિસી ફક્ત વિનંતી કરનારની ભૂમિકા (role) ના આધારે વિનંતીને મંજૂરી આપે છે.

તેથી, એક હુમલાખોર:

  • વિનંતી URL માં કોઈપણ ન્યુમેરિક યુઝર ID આપી શકે છે.
  • ઇમેઇલ સહિતનો સંપૂર્ણ યુઝર રેકોર્ડ મેળવી શકે છે.
  • એવું અપડેટ કરી શકે છે જે પીડિતનો ઇમેઇલ, પાસવર્ડ ઓવરરાઈટ કરે છે અને એકાઉન્ટને સુપર-એડમિન તરીકે હુમલાખોરની કંપનીમાં ફરીથી સોંપે છે.

વ્યવહારમાં, એક દુષ્ટ Owner એ કંપની-મેનેજમેન્ટ ટૂલને યુનિવર્સલ એકાઉન્ટ-ટેકઓવર હથિયારમાં ફેરવી દીધું. આ માટે “Owner” થી વધુ કોઈ વિશેષાધિકારની જરૂર નહોતી.

કોણ અસરગ્રસ્ત છે

2.4.1 પહેલાનું વર્ઝન ચલાવતા તમામ InvoiceShelf ગ્રાહકો આનાથી અસરગ્રસ્ત હતા. કારણ કે આ ખામી કોર રિક્વેસ્ટ-હેન્ડલિંગ પાથમાં છે, તેથી કદ અથવા સુરક્ષા સ્થિતિને ધ્યાનમાં લીધા વિના, કોઈપણ ટેનન્ટને અન્ય કોઈપણ ટેનન્ટના Owner દ્વારા નિશાન બનાવી શકાય છે. તેની અસરમાં ગોપનીયતાનું નુકસાન (ઇમેઇલ એડ્રેસ) અને અખંડિતતાનું નુકસાન (અનધિકૃત પાસવર્ડ ફેરફારો, સુપર-એડમિન તરીકેની એલિવેશન) સામેલ છે.

પેચ

ડેવલપર્સે વર્ઝન 2.4.1 રિલીઝ કર્યું છે, જેમાં યુઝર રેકોર્ડ પર કોઈપણ રીડ અથવા રાઈટ ઓપરેશન પહેલા સ્પષ્ટ ટેનન્ટ ચેક ઉમેરવામાં આવ્યો છે. આ ફિક્સ ક્વેરીને સક્રિય કંપની આઇડેન્ટિફાયર (active company identifier) સુધી મર્યાદિત કરે છે, જે Laravel ને ફક્ત વિનંતી કરનારના ટેનન્ટના રો (rows) જ પરત કરવા માટે મજબૂર કરે છે.

ડેવલપર્સે શું શીખવું જોઈએ

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

ભવિષ્ય તરફ જોતા

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

મુખ્ય વાત: એક ખૂટતું ટેનન્ટ ચેક વિશેષાધિકૃત યુઝર રોલને યુનિવર્સલ બેકડોર (backdoor) માં ફેરવી શકે છે. યોગ્ય સ્કોપિંગ એ વૈકલ્પિક નથી; તે કોઈપણ મલ્ટી-ટેનન્ટ સિસ્ટમમાં ડેટા આઇસોલેશનનો પાયો છે.