
5.2.2  Code Integrity 
Before the application code itself is executed, it needs 
to be checked for its integrity and this can be trivially 
done using the already established session key and 
verifying the MAC and nonce computed on the client 
with the ones sent by the webserver. 
5.2.3  Data Integrity 
During execution, the Web application might request 
data from the webserver. Our approach is to, during 
the  code  transformation  phase,  scan  all  calls  that 
result  in  these  data  exchanges  (such  as  calls  to 
XMLHttpRequest() in JavaScript) and inject the logic 
necessary to perform integrity checks on these data 
(i.e. generate and verify the MACs and nonces). In 
this way, we can also guarantee the integrity of the 
data at the Web application being executed under the 
code protection mechanism. 
6  CONCLUSION 
We have presented a framework, inspired by existing 
building blocks, which delineates a possible future for 
Web application integrity protection. Our framework 
relies  heavily  on  an  obfuscation-based  code 
protection  mechanism,  which  enforces  a  trust 
boundary inside the browser. In this work, we focus 
on outlining this complete Web Application integrity 
framework.  
As discussed, WoT applications are set to become 
omnipresent, and our framework becomes even more 
relevant under this assumption. Supporting different 
types  of  devices  (interoperability),  with  different 
capabilities is one important aspect to be addressed 
by our implementation. We note however that there 
are  already  very  capable  platforms  for  WoT 
applications (Sin and Shin, 2016). Proof-of-concept 
implementation  and  performance  evaluation  (e.g. 
evaluating  overhead  introduced  by  our  code 
transformations) of our proposed framework are left 
as a future work. 
REFERENCES  
Atzori, L., Iera, A., and Morabito, G. (2010). The internet 
of things: A survey. Computer networks, 54(15), 2787-
2805. 
Borgolte,  K.,  Kruegel,  C.,  and  Vigna,  G.  (2013).  Delta: 
Automatic  Identification  of  Unknown  Web-based 
Infection  Campaigns.  In  Proceedings  of  the  2013  
ACM  SIGSAC  Conference  on  Computer  and#38; 
Communications  Security  (pp.  109–120).  New  York, 
NY,  USA:  ACM.  https://doi.org/10.1145/2508859. 
2516725 
Chang, H., Atalla, M. J. (2001). Protecting Software Code 
by  Guards.  ACM  Workshop  on  Digital  Rights 
Management. 
Chow, S., Eisen, P., Johnson, H., and Van Oorschot, P. C. 
(2002, August). White-box cryptography and an AES 
implementation. In International Workshop on Selected 
Areas in Cryptography (pp. 250-270). Springer Berlin 
Heidelberg. 
Collberg, C. S., and Thomborson, C. (2002). Watermark-
ing,  Tamper-proofing,  and  Obfuscation:  Tools  for 
Software Protection. IEEE Trans. Softw. Eng., 28(8), 
735–746. https://doi.org/10.1109/TSE.2002.1027797 
Cox,  B.,  Evans,  D.,  Filipi,  A.,  Rowanhill,  J.,  Hu,  W., 
Davidson, J., … Hiser, J. (2006). N-variant Systems: A 
Secretless Framework for Security Through Diversity. 
In  Proceedings  of  the  15th  Conference  on  USENIX 
Security Symposium - Volume 15. Berkeley, CA, USA: 
USENIX Association.  
Cylon.js.  (2017,  October).  Retrieved  from 
https://cylonjs.com/ 
Diffie, W., Van Oorschot, P. C., and Wiener, M. J. (1992). 
Authentication  and  authenticated  key  exchanges. 
Designs, Codes and cryptography, 2(2), 107-125. 
Garg, S., Gentry, C., Halevi, S., Raykova, M., Sahai, A., 
and Waters, B. (2013, October). Candidate indistingui-
shability obfuscation and functional encryption for all 
circuits. In Foundations of Computer Science (FOCS), 
2013 IEEE 54th Annual Symposium on (pp. 40-49).  
Göktas, E., Athanasopoulos, E., Bos, H., and Portokalidis, 
G.  (2014).  Out  of  control:  Overcoming  control-flow 
integrity.  In  2014  IEEE  Symposium  on  Security  and 
Privacy (pp. 575–589). IEEE. 
Gupta,  S.  and  Gupta,  B.  B.,  2017.  Cross-Site  Scripting 
(XSS) attacks and defense mechanisms: classification 
and  state-of-the-art.  International  Journal  of  System 
Assurance Engineering and Management, 8(1), pp.512-
530. 
Hallgren,  P.  A.,  Mauritzson,  D.  T.,  and  Sabelfeld,  A. 
(2013). GlassTube: A Lightweight Approach to  Web 
Application  Integrity.  In  Proceedings  of  the  Eighth 
ACM  SIGPLAN  Workshop  on  Programming 
Languages and Analysis for Security (pp. 71–82). 
Huang,  Y.,  Stavrou,  A.,  Ghosh,  A.  K.,  and  Jajodia,  S. 
(2008).  Efficiently  Tracking  Application  Interactions 
Using Lightweight Virtualization. In Proceedings of the 
1st ACM Workshop on Virtual Machine Security (pp. 
19–28).  New  York,  NY,  USA:  ACM.  https://doi.org/ 
10.1145/1456482.1456486 
IoT.js. (2017, October). Retrieved from http://iotjs.net/ 
Kapravelos, A., Grier, C., Chachra, N., Kruegel, C., Vigna, 
G., and Paxson, V. (2014). Hulk: Eliciting Malicious 
Behavior in Browser Extensions. In Proceedings of the 
23rd USENIX Conference on Security Symposium (pp. 
641–654).  Berkeley,  CA, USA:  USENIX  Association. 
Retrieved  from  http://dl.acm.org/citation.cfm?id=267 
1225.2671266 
ICISSP 2018 - 4th International Conference on Information Systems Security and Privacy
492