Siguranța Interfeței în Software-ul Multilingv

Sursă originală: http://www.cse.psu.edu/~gxt29/projects/multilingual.html

Gan Tang

Cele mai multe sisteme software reale sunt multilingve ; adică ele constau în componente dezvoltate în diferite limbi de programare. Sistemele software multilingve sunt convenabile în practică. Dezvoltatorii pot reutiliza modulele de cod existente și pot, de asemenea, să amestece și să se potrivească punctelor forte ale diferitelor limbi. De exemplu, imaginați-vă că un dezvoltator intenționează să efectueze compresie de date în Java. În loc să scrie tot codul pentru compresia datelor de la zero, poate reutiliza biblioteca ZLib C existentă și scrie o interfață subțire între Java și C, prin interfața nativă Java (JNI). De fapt, acesta este exact modul în care JDK de la Sun implementează clasele în java.util.zip.

Deși sistemele software multilingve sunt convenabile pentru dezvoltatori și în practică omniprezente, este dificil să se scrie software-ul multilingv sigur și fiabil. De obicei, programatorii trebuie să ia în considerare discrepanțele dintre limbi în privința unor aspecte cum ar fi caracteristicile lingvistice, aspectul datelor, gestionarea memoriei, ipotezele privind siguranța / securitatea și multe altele. De exemplu, Java are built-in suport pentru excepții și manipularea excepțiilor, în timp ce C nu. Prin urmare, atunci când dezvoltatorii scriu software care constă din cod Java și C, codul C trebuie să verifice existența excepțiilor în orice loc posibil și să furnizeze codul pentru a le gestiona. În caz contrar, se poate produce coruperea memoriei silențioase. După cum se poate imagina, acesta este un proces extrem de eronat.

Pentru a aborda problemele legate de siguranță și fiabilitate în software-ul multilingv, acest proiect vizează

  • Efectuați analize inter-lingvistice pe software-ul multilingv existent, pentru a identifica și elimina bug-uri critice de siguranță și pentru a efectua optimizarea inter-lingvistică;
  • Formalizați semantica interacțiunii lingvistice (în cadre precum JNI și .NET);
  • Mecanisme de proiectare care facilitează scrierea de software fiabil multilingv.

Publicații

  • Găsirea erorilor de numărare a referințelor în programele Python / C cu analiză afinică. S. Li și G. Tan. Proceedings of the 27th European Conference on Programming Oriented Object-Oriented Programming ( ECOOP ’14 ), Uppsala, Suedia, iulie 2014. [ lucrare ]
  • Analiza excepțiilor în interfața nativă Java. S. Li și G. Tan. Știința Programării Calculatoarelor ( SCP ), 2014. [ lucrare ]
  • JNI Light: Un model operațional pentru Core JNI. G. Tan. În structurile matematice în informatică. 2015. [ lucrare ]
  • JATO: Atomicitatea codului nativ pentru Java . S. Li, Y. Liu și G. Tan. În al 10-lea Simpozion Asiatic privind limbile și sistemele de programare ( APLAS ), decembrie 2012. [ lucrare ]
  • JET: Verificarea excepțiilor în Interfața Nativă Java . S. Li și G. Tan. Pentru a apărea în conferința internațională SIGPLAN ACM SIGPLAN privind programarea, sistemele, limbile și aplicațiile orientate pe obiecte ( OOPSLA ’11 ), octombrie 2011. [ lucrare ]
  • Găsirea de erori în situațiile excepționale ale programelor JNI . S. Li și G. Tan. În cea de-a 16-a Conferință ACM privind securitatea calculatoarelor și a comunicațiilor ( CCS ’09 ), noiembrie 2009. [ lucrare ]
  • Un studiu de securitate empirică a codului nativ în JDK. Gang Tan și Jason Croft. În USENIX Security 2008, San Jose, California, SUA, iulie 2008. Raportul tehnic însoțitor conține o descriere detaliată a erorilor identificate.
  • ILEA: Analiza inter-limbi străine din Java și C . Gang Tan și Greg Morrisett. În conferința ACM privind programarea orientată pe obiecte, sisteme, limbi și aplicații (OOPSLA), Montreal, Oct 2007.
  • Analiza de securitate din Codul nativ din JDK Sun . Jason Croft și Gang Tan. În cea de-a 23-a Conferință anuală privind aplicațiile pentru securitatea calculatoarelor (ACSAC), sesiune de lucru în curs, decembrie 2007.
  • Interfața Java Nativă sigură . Gang Tan, Andrew W. Appel, Srimat Chakradhar, Anand Raghunathan, Srivaths Ravi și Daniel Wang. În Simpozionul Internațional IEEE privind Ingineria Securității Software (ISSSE 06), paginile 97-106, martie 2006.

Participanți