throbber
Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 1 of 165 PageID #: 189
`Case 1:23-cv-00758-GBW Documenti12-1 Filed 09/01/23 Page 1 of 165 PagelD #: 189
`
`EXHIBIT A
`
` EXHIBIT A
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 2 of 165 PageID #: 190
`ee"NTTTT
`
`US010324702B2
`
`a2) United States Patent
`US 10,324,702 B2
`(0) Patent No.:
`Vishnepolskyetal.
`Jun. 18, 2019
`(45) Date of Patent:
`
`CLOUD SUFFIX PROXY AND A METHOD
`THEREOF
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`(54)
`
`(71)
`
`(72)
`
`Applicant: Adallom Technologies Ltd., Tel Aviv
`(IL)
`
`Inventors: Gregory Vishnepolsky, Rehovot (IL);
`Liran Moysi, Ramat Gan (IL)
`
`(73)
`
`Assignee:
`
`MICROSOFT ISRAEL RESEARCH
`
`AND DEVELOPMENT(2002) LTD.,
`Matam Haifa (IL)
`
`(*)
`
`Notice:
`
`Subject to any disclaimer, the term ofthis
`patent is extended or adjusted under 35
`U.S.C. 154(b) by 483 days.
`
`(21)
`
`Appl. No.: 14/847,469
`
`(22)
`
`Filed:
`
`Sep. 8, 2015
`
`(65)
`
`(63)
`
`Prior Publication Data
`
`US 2016/0077824 Al
`
`Mar. 17, 2016
`
`Related U.S. Application Data
`
`Continuation-in-part of application No. 14/539,980,
`filed on Nov. 12, 2014, now Pat. No. 9,438,565.
`(Continued)
`
`(51)
`
`Int. Cl.
`
`GO6F 9/44
`G06F 8/65
`
`(52)
`
`USS. Cl.
`
`(2018.01)
`(2018.01)
`(Continued)
`
`CPC wee GO06F 8/65 (2013.01); GO6F 16/958
`(2019.01); GO6F 17/2247 (2013.01);
`(Continued)
`Field of Classification Search
`None
`
`(58)
`
`6,397,246 Bl
`7,571,217 Bl
`
`5/2002 Wolfe
`8/2009 Saxena
`(Continued)
`
`FOREIGN PATENT DOCUMENTS
`
`JP
`JP
`
`2006526843 A
`2009289206 A
`
`11/2006
`12/2009
`
`(Continued)
`
`OTHER PUBLICATIONS
`
`“Final Office Action Issued in U.S. Appl. No. 14/539,980”, dated.
`Dec. 8, 2015, 13 Pages.
`
`(Continued)
`
`Primary Examiner — Insun Kang
`(74) Attorney, Agent, or Firm — M&B IP Analysts, LLC.
`
`(57)
`
`ABSTRACT
`
`A method and system for modifying network addresses of at
`least one cloud application. The method comprises receiving
`a webpagesent to a client device from the at least one cloud
`application, wherein a webpage designates at least one script
`loadedto the client device during runtime; injecting a piece
`of code to the webpage; receiving, by the injected piece of
`code, an attempt to load each of the at least one script;
`modifying the at least one script by suffixing each network
`address designated in the at least one script with a predefined
`network address; and sending the modified at least one script
`to the client device, wherein runtime execution of the
`modified at least one script on the client device causes
`redirection of future requests from the client device to the
`cloud application to the suffixed network address.
`
`See application file for complete search history.
`
`33 Claims, 4 Drawing Sheets
`
` 100
`Client Device 130-1
`Client Device 130-N
`
`Security
`Sandbox
`145
`
`eee
`
`Security
`Sandbox
`145
`
`110
`
`
`>
`
`|
`
`
`
`120
`
` Cloud
`Application
`
`
`115
`
`
`
`
`
`Suffix Proxy
`|
`' Security
`140
`' Sandbox !
`
`Managed
`Network
`Proxy
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 3 of 165 PageID #: 191
`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 3 of 165 PagelD #: 191
`
`US 10,324,702 B2
`Page 2
`
`Related U.S. Application Data
`
`(60) Provisional application No. 62/049,473, filed on Sep.
`12, 2014.
`
`(51)
`
`(2013.01)
`(2006.01)
`(2019.01)
`(2006.01)
`(2006.01)
`
`Int. Cl.
`GO6F 21/53
`GO6F 17/22
`GO6F 16/958
`HOAL 29/08
`HOAL 29/12
`(52) U.S. Cl
`CPC veseeeecseeen GO6F 21/53 (2013.01); HOAL 67/02
`(2013.01); HO4L 67/1002 (2013.01); HO4L
`67/2814 (2013.01); HO4L 61/301 (2013.01);
`HO4L 61/3055 (2013.01)
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`
`7,873,707 B1*
`
`7,958,232 Bl
`8,543,726 BL*
`
`8,856,869 Bl
`8,938,800 B2
`9,137,131 Bl
`9,154,479 BL
`9,369,437 B2*
`9,391,832 BL*
`9,438,625 BL*
`2006/0117388 Al
`2007/0016949 Al*
`
`2007/0180510 Al
`2008/0177691 Al
`2009/0077369 A1*
`
`2009/0083726 Al*
`
`1/2011 Subramanian .... GO6F 17/30887
`709/219
`
`6/2011 Colton et al.
`9/2013 Kann we. HO4L 63/0281
`709/219
`
`10/2014 Brinskelle
`1/2015 Bhargavaet al.
`9/2015 Sarukkaietal.
`10/2015 Sethi
`6/2016 Holloway........... HO4L 63/1416
`
`7/2016 Song we HO4L 29/14
`9/2016 Yang occ HO4L 63/1441
`6/2006 Nelsonet al.
`1/2007 Dunagan .............. GO6F 21/51
`726/22
`
`8/2007 Longet al.
`7/2008 Alperovitch et al.
`3/2009 Fujimaki ......0.... GO6F 17/212
`713/100
`3/2009 Amend .........0. HO04L 63/105
`TTI7L
`
`8/2009 Blum et al.
`2009/0217354 Al
`10/2009 Jungcketal.
`2009/0262741 Al
`11/2009 Dingetal.
`2009/0289206 Al
`4/2010 Jungcket al.
`2010/0103837 Al
`6/2010 Levow et al.
`2010/0146260 Al
`6/2010 Holostovet al.
`2010/0162346 Al
`2010/0313183 A1* 12/2010 Ellen wo G06Q 30/02
`TL7/110
`
`2010/0325357 Al
`2011/0029613 Al
`2011/0131478 Al*
`
`2011/0208838 Al
`2011/0257810 Al
`2011/0289434 Al
`2011/0289588 Al
`2012/0023160 Al
`2012/0030294 Al*
`
`2012/0036576 A1*
`
`2012/0116896 Al*
`
`2012/0137210 Al*
`
`2012/0174236 Al*
`
`2012/0278872 Al
`2013/0073609 Al*
`
`2013/0097706 Al
`2013/0097711 Al
`2013/0196396 Al
`
`12/2010 Reddyet al.
`2/2011 Hedditch
`6/2011 Tock wo HO04L 63/0823
`715/208
`
`8/2011 Thomaset al.
`10/2011 Leger
`11/2011 Kieft
`11/2011 Sahai etal.
`1/2012 Marmor
`2/2012 Piernot «0.0.0... GO06F 17/30902
`709/206
`2/2012 Tyer wee GO06F 21/554
`726/23
`5/2012 Holloway........... HO4L 61/1511
`705/14.73
`5/2012 Dillon ww. GO06F 17/30902
`715/234
`7/2012 Goodwin «0.0... HO4L 63/102
`726/27
`
`11/2012 Woelfel et al.
`3/2013 Connolly ......... GO6F 15/16
`709/203
`
`4/2013 Titonis et al.
`4/2013 Basavapatnaet al.
`8/2013 Beesonetal.
`
`2013/0212689 Al*
`
`8/2013 Ben-Natan ............. HO4L 63/20
`726/26
`2013/0276136 Al* 10/2013 Goodwin .........0.. HO4L 67/22
`726/27
`2013/0311863 Al* 11/2013 Gutkin .......0.. GO6F 17/30887
`715/208
`
`2013/0347094 Al
`2014/0020072 Al
`2014/0032759 Al
`2014/0109175 Al
`2014/0137273 Al
`2014/0173415 Al*
`
`2014/0201524 Al
`2014/0237545 Al
`2014/0282464 Al*
`
`2014/0282518 Al
`2014/0283000 Al
`2014/0344332 AL*
`
`2015/0066575 Al
`2015/0088968 AL*
`
`2016/0119344 A1l*
`
`2016/0330172 Al
`2017/0116349 Al*
`2017/0163675 AL*
`
`12/2013 Bettini et al.
`1/2014 Thomas
`1/2014 Barton etal.
`4/2014 Bartonetal.
`5/2014 Workman
`6/2014 Kattil Cherian .. GO6F 17/30861
`715/234
`
`7/2014 Dittrich
`8/2014 Mylavarapu et al.
`9/2014 El-Gillani 0... GO6F 8/61
`717/168
`
`9/2014 Banerjee
`9/2014 Radhakrishnan
`11/2014 Giebler ........ HO4L 67/2823
`709/203
`
`3/2015 Baikalovetal.
`3/2015 Wei wc nee HO4L 67/10
`709/203
`4/2016 Freitas Fortuna dos Santos ........
`HO4L 63/1466
`726/7
`
`11/2016 Muttik
`4/2017 Steiner... GO6F 17/30902
`6/2017 Warman .............. HO4L 63/1425
`
`FOREIGN PATENT DOCUMENTS
`
`JP
`JP
`JP
`WO
`WO
`WO
`
`2011511974 A
`2011257810 A
`2013196396 A
`2011094807 Al
`2012063282 Al
`2013091709 Al
`
`4/2011
`12/2011
`9/2013
`8/2011
`5/2012
`6/2013
`
`OTHER PUBLICATIONS
`
`“International Search Report and Written Opinion Issued in PCT
`Application No. PCT/US2015/049606”, dated Feb. 25, 2016, 7
`Pages.
`“Non-Final Office Action Issued in U.S. Appl. No. 14/539,980”,
`dated Jan. 26, 2015, 9 Pages.
`“Notice of Allowance Issued in U.S. Appl. No. 14/539,980”, dated.
`May 16, 2016, 4 Pages.
`“Notice of Allowance Issued in U.S. Appl. No. 14/539,980”, dated.
`May 4, 2016, 12 Pages.
`Magazinius, et al., “Architectures for Inlining Security Monitors in
`Web Applications”, In Proceedings of 6th International Symposium
`on Engineering Secure Software and Systems, Feb. 26, 2014, 18
`Pages.
`“Non Final Office Action Issued in U.S. Appl. No. 14/968,432”,
`dated Sep. 22, 2016, 17 Pages.
`“Supplementary Search Report Issued in European Patent Applica-
`tion No. 14860194.1”, dated May 31, 2017, 7 Pages.
`“Non-Final Office Action Issued in U.S. Appl. No. 14/968,432”,
`dated Jul. 28, 2017, 18 Pages.
`Patent Cooperation Treaty International Search Report and Written
`Opinion for PCT/US2014/065305, ISA/US, Alexandria, VA., dated.
`Mar. 3, 2015.
`“Final Office Action Issued in U.S. Appl. No. 14/968,432”, dated.
`Mar. 23, 2017, 21 Pages.
`“Office Action Issued in Australia Patent Application No. 2014346390”,
`dated Mar. 15, 2018, 3 Pages.
`“Office Action Issued in Colombian Patent Application No. 16-139041”,
`dated Nov. 24, 2017, 17 Pages.
`“Office Action Issued in Chile Patent Application No. 1116-2016”,
`dated Jan. 26, 2018, 9 Pages.
`“Office Action Issued in Mexican Patent Application No. MX/a/
`2016/006109”, dated Nov. 29, 2017, 2 pages. (W/o English Trans-
`lation).
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 4 of 165 PageID #: 192
`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 4 of 165 PagelD #: 192
`
`US 10,324,702 B2
`Page 3
`
`(56)
`
`References Cited
`OTHER PUBLICATIONS
`
`“Non Final Office Action Issued in U.S. Appl. No. 14/968,432”,
`dated Feb. 5, 2018, 19 Pages.
`“Office Action Issued in Japanese Patent Application No. 2016-
`530954”, dated Sep. 28, 2018, 4 Pages.
`“Office Action Issued in Chile Patent Application No. 1116-2016”,
`dated Jul. 3, 2018, 12 Pages.
`“Office Action Issued in Russian Patent Application No. 2016117971”,
`dated Jul. 9, 2018, 5 Pages.
`“Office Action Issued in Chinese Patent Application No. 201480061802.
`1”, dated Aug. 3, 2018, 11 Pages.
`“Second Office Action Issued in Chinese Patent Application No.
`201480061802.1”, dated Mar. 14, 2019, 7 Pages.
`“Supplementary Examination Report Issued in Singapore Patent
`Application No. 11201603471X”, dated Mar. 20, 2019, 3 Pages.
`
`* cited by examiner
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 5 of 165 PageID #: 193
`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 5 of 165 PagelD #: 193
`
`U.S. Patent
`
`Jun. 18, 2019
`
`Sheet 1 of 4
`
`US 10,324,702 B2
`
`Client Device 130-N
`
`
`
`
`
`
`Security
`Sandbox
`145
`
`
`
`
`
`
`100
`
`>
`
`Client Device 130-1
`
`
`
` Security
`eon
`Sandbox
`145
`
`110
`
`Cloud
`Application
`415
`
`
`Suffix Proxy
`1 Sandbox ; 140
`
`' Security
`|
`
`
`
` Managed
`Network
`
`Proxy
`120
`
`
`FIG. 1
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 6 of 165 PageID #: 194
`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 6 of 165 PagelD #: 194
`
`U.S. Patent
`
`Jun. 18, 2019
`
`Sheet 2 of 4
`
`US 10,324,702 B2
`
`START
`
`$210
`
`Receive a webpage sent toa
`client device
`
`$220
`
`Suffix a static network
`address designated in the
`
`received webpage
`
`$225
`
` Inject a piece of codeinto the
`
`webpage
`
`$230
`
` Receive any code dynamically
`
`loaded to the webpage
`
`S240
`
`Modify the received code
`
`Send new code to the client device
`
`$250
`
`FIG. 2
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 7 of 165 PageID #: 195
`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 7 of 165 PagelD #: 195
`
`U.S. Patent
`
`Jun. 18, 2019
`
`Sheet 3 of 4
`
`US 10,324,702 B2
`
`300
`
`START
`
`$310
`
`Receive a webpage sent toa
`client device
`
`Inject a piece of code into
`
`$320
`
`the webpage
` Sent the modified webpage to
`
`$330
`
`the client device
`
`$340
`
`
`
`Intercept encrypted text fields
`inserted into the DOM
`
`
` Decrypt any identified encrypted
`
`text fields
`
`$350
`
`$360
`
`Insert decrypted data of the
`identified encrypted text fields
`into the DOM
`
`
`
`
`
`END
`
`FIG. 3
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 8 of 165 PageID #: 196
`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 8 of 165 PagelD #: 196
`
`U.S. Patent
`
`Jun. 18, 2019
`
`Sheet 4 of 4
`
`US 10,324,702 B2
`
`140
`
`Processing
`system
`410
`
`420
`
`Security
`Sandbox
`module
`
`Fig. 4
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 9 of 165 PageID #: 197
`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 9 of 165 PagelD #: 197
`
`US 10,324,702 B2
`
`1
`CLOUD SUFFIX PROXY AND A METHOD
`THEREOF
`
`CROSS-REFERENCE TO RELATED
`APPLICATIONS
`
`2
`It would therefore be advantageousto provide a solution
`that would overcomethe deficiencies of the prior art tech-
`niques for capture and reconstruction of HTTPtraffic.
`
`SUMMARY
`
`This application claims the benefit of U.S. Provisional
`Application No. 62/049,473 filed on Sep. 12, 2014. This
`application is also a continuation-in-part of U.S. patent
`application Ser. No. 14/539,980 filed on Nov. 12, 2014, the
`contents of which are hereby incorporated by reference.
`
`TECHNICAL FIELD
`
`This application relates generally to securing communi-
`cations networks and systems by monitoring and securing
`communications, in particular by use of a suffix proxy.
`
`BACKGROUND
`
`In recent years more and more providers offer the ability
`to create computing environments in the cloud. For example,
`Amazon Web Services™(also known as AWS)launchedin
`2006 a service that provides users with the ability to con-
`figure an entire environment
`tailored to an application
`executed over a cloud platform. In general, such services
`allow for developing scalable applications in which com-
`puting resourcesare utilized to support efficient execution of
`the application.
`Organizations and businesses that develop, provide, or
`otherwise maintain cloud-based applications have become
`accustomedto rely on these services and implement various
`types of environments from complex websites to applica-
`tions and services provided as a software-as-service (SaaS)
`delivery model. Such services and applications are collec-
`tively referred to as “cloud applications.”
`Cloud applications are typically accessed by users using
`a client device via a web browser. Cloud applications
`include, among others, e-commerce applications, social
`media applications, enterprise applications, gaming applica-
`tions, media sharing applications, storage applications, soft-
`ware developmentapplications, and so on. Manyindividual
`users, businesses, and enterprises turn to cloud applications
`in lieu of “traditional” software applications that are locally
`installed and managed. For example, an enterprise can use
`Office® 365 online services for email accounts, rather than
`having an Exchange® Server maintained by the enterprise.
`Enterprises are increasingly adopting cloud-based SaaS
`offerings. These services are subject
`to varied network
`security risks. Known systems for securing these networks
`operate by inspecting traffic between servers operating the
`SaaS and the endpoint operated by a user. These known
`network security systemstypically require complex configu-
`ration of the endpoint which increases system complexity.
`Furthermore, in many cases, the endpoint may not be
`under the complete control of the enterprise, may be entirely
`unmanaged, or otherwise unconfigurable. In addition to the
`difficulties inherent in configuring and administering a user-
`controlled endpoint, it is difficult to ensuretraffic captivation
`for an entire session when network addresses are generated
`dynamically.
`In addition, modern web/cloud applications, such as the
`Google® Appsplatform,utilize a large amountof client side
`code (JavaScript). This can make a suffix proxy implemen-
`tation much more challenging, as basic proxy functions are
`insufficient and further intervention in the client side code is
`
`required.
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`A summary of several example embodiments of the
`disclosure follows. This summary is provided for the con-
`venience of the reader to provide a basic understanding of
`such embodiments and does not wholly define the breadth of
`the disclosure. This summary is not an extensive overview
`of all contemplated embodiments, and is intended to neither
`identify key or critical elements of all embodiments nor
`delineate the scope of any or all embodiments.
`Its sole
`purposeis to present some concepts of one or more embodi-
`ments in a simplified form as a prelude to the more detailed
`description that is presented later. For convenience, the term
`some embodiments may be used herein to refer to a single
`embodiment or multiple embodiments of the disclosure.
`Some embodiments of the disclosure relate to a method
`
`least one cloud
`for modifying network addresses of at
`application. The method comprises receiving a webpage
`sent to a client device from the at least one cloud application,
`wherein a webpage designates at least one script loaded to
`the client device during runtime; injecting a piece of code to
`the webpage; receiving, by the injected piece of code, an
`attempt to load each ofthe at least one script; modifying the
`at least one script by suffixing each network address desig-
`nated in the at least one script with a predefined network
`address; and sending the modified at least one script to the
`client device, wherein runtime execution of the modified at
`least one script on the client device causes redirection of
`future requests from the client device to the cloud applica-
`tion to the suffixed network address.
`Some embodiments of the disclosure relate to a system for
`modifying network addresses of at least one cloud applica-
`tion. The system comprises a processor; and a memory
`containing instructions that, when executed by the proces-
`sor, configure the system to: receive a webpage sent to a
`client device from the at least one cloud application, wherein
`a webpage designates at least one script loaded to the client
`device during runtime; inject a piece of code to the webpage;
`receive, by the injected piece of code, an attempt to load
`each ofthe at least one script; modify the at least one script
`by suffixing each network address designated in the at least
`one script with a predefined network address; and send the
`modified at least one script to the client device, wherein
`runtime execution of the modified at least one script on the
`client device causes redirection of future requests from the
`client device to the cloud applicationto the suffixed network
`address.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`The subject matter disclosed herein is particularly pointed
`out and distinctly claimed in the claimsat the conclusion of
`the specification. The foregoing and other objects, features,
`and advantagesof the disclosed embodiments will be appar-
`ent from the following detailed description taken in con-
`junction with the accompanying drawings.
`FIG. 1 is a diagram of a networked system utilized to
`describe the various disclosed embodiments.
`
`FIG. 2 is a flowchart illustrating the operation of the
`security sandbox according to one embodiment.
`FIG.3 is a flowchart illustrating a method for controlling
`changes to the DOM according to one embodiment.
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 10 of 165 PageID #: 198
`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 10 of 165 PagelD #: 198
`
`3
`FIG.4 is a block diagram of a suffix proxy implemented
`according to an embodiment.
`
`4
`110. Specifically, the managed network proxy 120 can be
`used to intercept, monitor, modify, and forward network
`communicationstraffic between client devices 130 and the
`
`US 10,324,702 B2
`
`DETAILED DESCRIPTION
`
`cloud computing platform 110.
`The managed network proxy 120 can be configured to
`detect and mitigate network threats against the cloud appli-
`It is important to note that the embodiments disclosed
`cations 115 and/or the infrastructure of the cloud computing
`herein are only examples of the many advantageous uses of
`platform 110. As non-limiting examples, the managed net-
`the innovative teachings herein.In general, statements made
`work proxy 120 can be configured to notify of suspicious
`in the specification of the present application do not neces-
`networktraffic and behavior; block threats; perform appli-
`sarily limit any of the various claimed embodiments. More-
`cation control, URLfiltering, and malwareprotection on the
`over, some statements may apply to someinventive features
`network traffic; establish visibility to application layer
`but not to others. In general, unless otherwise indicated,
`parameters (e.g.,
`list of users, devices,
`locations, etc.);
`singular elements may be in plural and vice versa with no
`generate profiles of users using the cloud applications 115;
`loss of generality. In the drawings, like numeralsreferto like
`provide alerts on specific or predefined events; generate
`parts through several views.
`audit logs; and so on. The architecture and operation of the
`By a way of example, the various disclosed embodiments
`managed network proxy 120 is discussed in U.S. patent
`can be configured to operate on network traffic between a
`application Ser. No. 14/539,980 assigned to the common
`network-based software as a service (SaaS) provider and a
`assignee, and incorporated herein by reference.
`client. As will be discussed in greater detail below,
`the
`According to certain embodiments, the suffix proxy 140 is
`disclosed embodiments allow for non-intrusive suffixing and
`configured to keep URLs and web accesses of a proxied
`un-suffixing of network addresses directed to the SaaS
`webpage within the hold of the managed network proxy 120.
`provider.
`That is, the modifications performed by the suffix proxy 140
`FIG. 1 is an exemplary and non-limiting diagram of a
`for a request to access a webpage of the cloud application
`networked system 100 utilized to describe the various dis-
`closed embodiments. The networked system 100 includes a
`115 allow directing subsequenttraffic to the managed net-
`
`cloud computing platform 110 which maybeaprivate cloud, work proxy 120.
`a public cloud, or a hybrid cloud providing computing
`In an embodiment, the suffix proxy 140 can be configured
`resources to applications or services executed therein. In an
`to inspect the network traffic and detect cloud-based appli-
`embodiment, the cloud computing platform 110 may be of
`cation’s 115 addresses. Examples
`for
`such addresses
`a SaaS platform.
`include, for example, uniform resource locators (URLs),
`Organizations and businesses that develop, provide, or
`uniform resource identifiers (URIs), and so on. As non-
`otherwise maintain cloud based applications have become
`limiting examples,
`the suffix proxy 140 can decompile,
`accustomed to relying on these services and implementing
`deconstruct, or disassemble networktraflic for inspection.
`various types of environments from complex websites to
`In an embodiment, the suffix proxy 140 can be configured
`applications and services provided as SaaS delivery models.
`to modify webpages and codes (e.g., JavaScript) executed
`Such services and applicationsare collectively referred to as
`therein and on the cloud-computing platform 110, so that no
`“cloud applications 115”.
`network addresses are provided to the client device 130 that
`would direct the client device 130 to access the cloud
`Cloud applications 115 are typically accessed by users
`using a client device via a web browser. Cloud applications
`115 include, among others, e-commerce applications, social
`media applications, enterprise applications, gaming applica-
`tions, media sharing applications, storage applications, soft-
`ware developmentapplications, and so on. Manyindividual
`users, businesses, and enterprises turn to cloud applications
`in lieu of “traditional” software applications that are locally
`installed and managed. For example, an enterprise can use
`Office® 365 online services for email accounts, rather than
`having an Exchange® Server maintained by the enterprise.
`The networked system 100 further includes a managed
`network proxy 120, client devices 130-1 through 130-N, and
`a suffix proxy 140 that are communicatively connected to a
`network 150. The network 150 may be, for example, a wide
`area network (WAN), a local area network (LAN),
`the
`Internet, and the like. Each of the client devices 130 may
`include, for example, a personal computer, a laptop, a tablet
`computer, a smartphone, a wearable computing device, or
`any other computing device.
`The client devices 130 are configured to access the one or
`more cloud applications 115 executed in the cloud comput-
`ing platform 110. A client device 130 may be a managed
`device or unmanaged device. A manageddeviceis typically
`secured by an IT personnel of an organization, while an
`unmanaged device is not. Referring to the above example,
`the work computer is a managed device while the home
`computer is an unmanaged device.
`The managed network proxy 120 is configured to secure
`any orall traffic and activities in a cloud computing platform
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`If such a network address is
`application 115 directly.
`detected, the suffix proxy 140 is configured to rewrite that
`address, for example, appending a predefined domain name
`to the original network address. The added domain name
`may refer or redirect the browser to the managed network
`proxy 120. For example, the URL (network address) http://
`www.somesite.com would be accessed through http://ww-
`w.somesite.com.network-proxy-service.com.
`Various
`embodiments for rewriting network address are disclosed
`below.
`The suffix proxy 140 can be configured to modify any
`content, including webpages, sent from the cloud application
`115. The suffix proxy 140 can be configured to inspect
`and/or decompile any content to identify any referred pages
`and/or URLspresentin the content and rewrite those URLs.
`As non-limiting examples, file types processed can include
`HTML or JavaScript and responses can include zipped
`responses or chunked responses.
`for URLs
`In one embodiment,
`for static webpages,
`embedded in such webpages a predefined suflix domain
`name is added. To this end, the suffix proxy 140 is config-
`ured to parse HTML webpages and replace the URLs
`detected using the regular expressions. A static webpage is
`a webpage that does not contain client-executable script
`(e.g., JavaScript) code.
`in order to suflix
`According to another embodiment,
`network addresses in a dynamic webpage, the suffix proxy
`140 is configured to analyze and modify code or scripts
`being loaded to a browser of the client device 130. For
`
`

`

`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 11 of 165 PageID #: 199
`Case 1:23-cv-00758-GBW Document 12-1 Filed 09/01/23 Page 11 of 165 PagelD #: 199
`
`US 10,324,702 B2
`
`5
`example, JavaScript can be modified by the suffix proxy 140
`to wrap any potential generation of network addresses that
`would directly access the cloud application 115. If direct
`access addresses are identified,
`the script and/or content
`generated by the script can be modified to rewrite the
`address to refer to the managed network proxy 120.
`In an embodiment, the suffix proxy 140 is configured to
`provide a security sandbox which is a runtime component
`executed over the client device 130. Certain function of the
`
`security sandbox can be performed in the suffix proxy. The
`security sandboxis labeled as a security sandbox 145. In an
`embodiment,
`the security sandbox 145 is configured to
`prevent access to the document object model (DOM) of a
`webpage. In particular, the security sandbox 145 prevents
`any access and modification to the DOM during run-time of
`the script. It should be noted that
`the operation of the
`security sandbox 145 to prevent access to the DOM does not
`require any installation of any software, such as plugins,
`add-ons, and the like in the client device 130 and/or the
`browser.
`
`Typically, a browser on a client device 130 can execute a
`script (e.g., JavaScript) that would change the DOM of a
`webpage during run-time. As a result, it is possible for the
`client device’s 130 browser to create or modify DOM
`elements with un-suffixed URLs. In order to prevent such
`action, the security sandbox 145, and hencethe suffix proxy
`140, are configuredto restrict the access of any embedded or
`loaded script code to the DOM.
`In an embodiment, the nature of the restriction can be
`such that changes to URLs in the DOM,byanoriginal script
`executed in the webpage, are monitored by the security
`sandbox 145. The script code monitoring by the suffix proxy
`140 can be invoked for read and write accesses to DOM
`elements. That is, writes of a URL into the DOMare suffixed
`with the predefined domain name, and reads of a URL from
`the DOMare un-suffixed. As a result, there can be separation
`between the URLs seen by “user” code (e.g.,
`the web-
`applications code) and the browseritself (the DOM,andthe
`JavaScript representation of it). As a result,
`the original
`script code can be effectively maintained and controlled by
`the security sandbox 145 and any communication with the
`original server (around the proxy) is prevented. It should be
`noted that an original script is any script embedded in the
`webpage not dynamically loaded to the webpage.
`In certain configurations, a script can be loaded to a
`webpageafter the webpageis rendered on the browser. Such
`a script is downloaded from a server (originally configured
`to serve the page) using any of several forms, including
`inline scripts inside HTML pages and any code, script, or
`contentfiles. Examples for such files include, for example,
`JavaScript, Cascading Style Sheets (CSS), and thelike.
`Typically, the browserof a client device 130 first loads the
`main HTML page, and then subsequently loads all refer-
`enced and inline scripts. Additional, scripts can also be
`loaded dynamically by the web application, using,
`for
`example, the ‘eval’ statement.
`Because dynamic code loading is initially performed by
`the statically loaded code (or, once loaded, other dynamic
`code), the security sandbox 145 can take control of execu-
`tion by modifying the static script code when the webpage
`is downloaded to the browser. The modifications to the code
`can be performed in such way that future dynamically
`loaded code will be modified during run-time and specific
`changes to the DOM canbeintercepted in order to enforce
`suffixing of certain URLs. This allows the webpage to
`remain under the control of the suffix proxy 140.
`
`20
`
`25
`
`30
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`6
`In an embodiment, the suffix proxy 140 and the security
`sandbox 145 are configured to modify the dynamic loaded
`code. The loaded code is received at the suffix proxy 140
`which is configured to analyze the code to determine all
`elements that potentially (explicitly or implicitly) contain,
`point, or otherwise refer to network addresses (URLs), and
`replace and/or wrap elements within code that enforces
`sufiixing of the network addresses. The new script code is
`loaded at the client device’s 130 browser. In some embodi-
`
`ments, caching of script codes can be employed to improve
`performance. The sandbox 145 during run-time resolves the
`wrappers in order to enforce suffix and un-sufhix of network
`addresses. As noted above, enforcing suffix or network
`addresses includes suffixing writes of an address (e.g., a
`URL) into the DOM with a predefined domain name, and
`un-suffixing any reads of an address from the DOM.
`As non-limiting examples, at least the following DOM
`elements and properties can be wrapped during the creation
`of the new script code:
`Properties of HTML elements that contain URLs, such as
`“TFRAME”, “STYLE”, “LINK”, “IMG”, “AUDIO”, “A”,
`“FORM”, “BASE” and “SCRIPT”, with the properties:
`“sre”, “href” and “action”. The getAttribute and setAttribute
`methods of these elements can also be used to set the
`
`aforementioned properties.
`Properties of HTML elements that can contain a DOM
`sub-tree(i.e., more HTML). For such elements, the “append-
`Child” method can be used to add elements (and code)
`dynamically and the “innerHTML”property can be used to
`add extra code.
`
`Properties of the “document” object may contain URLs or
`Hostnames, such as “cookie” and “domain” (both can con-
`tain the origin domain of the window). The “write” method
`can be used to add elements and code to the page.
`An “open” method of XMLHttpRequest objects contains
`a request URL. An “origin” property of “MessageEvent”
`objects contains the origin hostname. Methods and proper-
`ties of the “Window”object contain “location”, “postMes-
`sage’, “eval”, and “execScript”. The “location”redirects the
`frame to another URL or determines the current location of
`
`the frame. The “postMessage” method has an origin argu-
`ment. The “eval” and “execScript” properties are used to
`load code dynamically. Other such elements and properties
`exist, and any orall of them can be wrapped.
`In an embodiment, the wrapping of a DOM element, and
`thus the creation of a new code, is performed using static
`hooking of the code. In a non-limiting implantation, the
`static hooking includes: processing and extracting inline
`scripts in the HTML code of a webpage. Then, any script
`code is converted to a syntax tree, such as an Abstract Syntax
`Tree (AST). In an exemplary embodiment, the AST can be
`generated using the Mozilla® parser. The syntax tree is
`recursively traversed and calls to wrappers are inserted in
`certain nodes of the tree to allow for hooking. Finally, the
`new code is created from the modified nodes (with the
`inserted class) and sentto the client device’s 130 browser. In
`an embodiment, the new created code can be cached for
`further usage.
`It should be noted that the inserted wrappers can allow for
`DOMchangesto be intercepted during run-time. The wrap-
`pers can be applied to cover any or all potential DOM
`accesses. As non-limiting examples, the wrappers can be
`applied (inserted) to someorall the following syntax tree
`(AST) nodes:
`‘MemberExpression’,
`‘Identifier’, ‘Assign-
`mentExpression’, and ‘CallExpression’. For MemberEx-
`pression nodesany potential accesses to object properties of
`DOMobjects, subscription op

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket