Studiu de caz: Evaluarea securității unui add-in Microsoft personalizat

Era jocurilor piratate ne-a învățat un lucru: licențierea nu a fost niciodată doar despre plăți. A fost întotdeauna și despre securitate.

Pornind de la un singur cont trial, echipa Zerotak a activat toate funcționalitățile enterprise ale unui add-in Microsoft Office, fără să interacționeze cu autentificarea, backend-ul sau serviciile de identitate Microsoft. Fără credențiale furate. Fără exploatarea serverului. Doar logica de runtime în care add-in-ul avea încredere pentru a-și aplica propriile reguli de licențiere.

Engagementul

Clientul dezvoltă un produs SaaS distribuit parțial sub forma unui add-in Microsoft Office. Întrebarea la care dorea un răspuns era clară și practică: poate un utilizator trial să obțină funcționalități de nivel enterprise fără să plătească pentru ele?

Am simulat un adversar realist: un utilizator legitim, cu acces trial valid și motivația de a-și extinde propriile drepturi de acces. Scope-ul a exclus în mod deliberat ocolirea autentificării și compromiterea backend-ului. Obiectivul nu era să pătrundem în sistem. Obiectivul era să testăm dacă add-in-ul poate aplica în mod sigur diferența dintre trial și enterprise după ce utilizatorul a obținut deja acces.

  • Industrie: SaaS
  • Locație: Europa
  • Livrare: Remote

Metodologie

Evaluarea s-a concentrat asupra runtime-ului de pe partea de client, unde add-in-ul ia efectiv deciziile de licențiere. Abordarea noastră a combinat mai multe direcții:

  • Testarea securității aplicației desktop, acoperind comportamentul runtime local și punctele de aplicare a controalelor de pe partea de client
  • Revizuirea validării licențelor și a drepturilor de acces, prin maparea modului în care produsul restricționează funcționalitățile trial față de cele enterprise
  • Manipularea runtime-ului, inclusiv modificarea logicii, manipularea stării și ocolirea fluxurilor de validare
  • Testarea interacțiunilor dintre client și servicii, analizând consistența requesturilor, confirmările drepturilor de acces și limitele de încredere
  • Reverse engineering asupra codului de pe partea de client, inclusiv decompilare, deobfuscare și debugging

Toate testele au fost realizate în condiții controlate, folosind un cont țintă dummy, fără impact asupra utilizatorilor reali și fără întreruperi operaționale. Activitatea a fost aliniată cu OWASP Application Security Verification Standard și cu mai multe alte standarde din industrie.

Constatare critică: Activarea licenței enterprise prin manipularea runtime-ului

Add-in-ul determina nivelul drepturilor de acces în timpul rulării, în codul de pe partea de client pe care îl puteam observa și influența. Această singură decizie de design a fost suficientă.

Pentru a ajunge la logica relevantă, am decompilat și deobfuscat add-in-ul. Aplicația era distribuită într-o formă obfuscată, ceea ce a încetinit analiza, dar nu a împiedicat-o. După ce codul a devenit lizibil, am localizat logica de validare a licenței care rula local, am identificat starea runtime folosită pentru determinarea drepturilor de acces și am manipulat acea stare astfel încât add-in-ul să trateze o identitate trial ca având o licență enterprise. Rezultatul a fost imediat. Funcționalitățile enterprise au devenit disponibile și complet funcționale, fără ca în spatele lor să existe o licență enterprise validă.

Accesul enterprise a fost obținut exclusiv prin manipularea runtime-ului. Fără vulnerabilități de autentificare. Fără vulnerabilități server-side. Add-in-ul a acordat funcționalități privilegiate deoarece a întrebat componenta greșită dacă utilizatorul avea dreptul să le acceseze, iar acea componentă se afla sub controlul nostru.

Problema critică este una structurală, nu un singur bug. Add-in-ul acorda prea multă încredere stării de pe partea de client pentru a lua deciziile de licențiere. Am influențat procesul decizional interacționând cu add-in-ul în moduri pe care acesta nu le anticipa, am forțat stări inconsistente ale drepturilor de acces în timpul execuției și am declanșat ramuri logice care nu revalidau drepturile de acces în momentele esențiale. Remedierea unei singure metode de manipulare le lasă pe celelalte deschise atât timp cât arhitectura tratează starea de pe partea de client drept sursă autoritară.

Lecția este clară. Obfuscarea nu este un control de securitate. Aceasta crește costul analizei, dar orice rulează pe partea de client poate fi citit, înțeles și modificat de persoana care controlează acel client. Drepturile de acces, licențierea și orice decizie care protejează veniturile sau accesul trebuie validate server-side, acolo unde utilizatorul nu poate ajunge la logica sau la starea din spatele acestora. Orice decizie importantă trebuie să fie luată pe o infrastructură pe care utilizatorul nu o controlează.

Ce a demonstrat această evaluare

Controalele de licențiere și de acordare a drepturilor de acces pot fi ocolite atunci când validarea are loc în timpul rulării, iar limitele de încredere depind de starea de pe partea de client. Funcționalitățile enterprise au fost obținute dintr-un cont trial exclusiv prin manipularea comportamentului runtime, fără exploatarea autentificării sau a sistemelor backend.

Remedierea este una arhitecturală, nu cosmetică. Deciziile privind drepturile de acces trebuie luate server-side, în spatele unor limite pe care clientul nu le poate influența. Restricționarea funcționalităților cu impact financiar trebuie validată într-un loc inaccesibil atacatorului, iar software-ul de pe partea de client trebuie să includă mecanisme rezistente la manipulare, care să facă modificările locale costisitoare, nu triviale.

Dacă veniturile tale depind de diferența dintre trial și paid, acea diferență trebuie aplicată într-un loc pe care utilizatorul nu îl poate modifica. Un ecran de autentificare nu este singura ta suprafață de atac. Uneori, cel mai valoros element al produsului este granița dintre două niveluri, iar această graniță este adesea cel mai puțin testată.

Testează-ți sistemul de licențiere înainte ca utilizatorii trial să o facă în locul tău.

Serviciile de testare a securității aplicațiilor oferite de Zerotak acoperă întreaga suprafață de atac de pe partea de client: add-in-uri Office și desktop, aplicarea drepturilor de acces și a licențelor, manipularea runtime-ului și proiectarea limitelor de încredere. Metodologia este aliniată cu OWASP ASVS și MITRE ATT&CK, iar serviciile sunt livrate remote, fără întreruperi pentru mediul tău de producție.

Dacă produsul tău aplică orice tip de control pe partea de client, presupune că cineva va testa acea limită. Mai bine noi decât ei. Constatări reale, remedieri reale, fără întreruperi în producție. Contactează-ne la contact@zerotak.com

Ready to get started?

Get in touch with one of our experts today to discuss your business needs.