IP Library Granted Patent US 11,170,098
Granted Patent B1
US 11,170,098 · App. 16/528,702 · Granted Nov 9, 2021

System, method, and medium for protecting a computer browser from third-party computer code interference

Inventor: Gilad Ben-Dor (Petah Tiqwa, IL)
Assignee: Source Defense Ltd.
G06F21/54G06F9/44526H04L63/308G06F2221/033
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,170,098
App. No.
16/528,702
Granted
Nov 9, 2021
Kind
B1
Abstract

Computer system, methods, and non-transitory storage medium for protecting a client device that is browsing a website from some undesired actions of third-party software. JavaScript Instrumenter to Secured Code (JISC) code (e.g. JavaScript/WebAssembly) is tailored per website that defines a set of policies of what each third-party code can and cannot do. The server also tracks and analyzes data reports from the websites, and provides reports and alerts to website administrators. Therefore, a browser on a client device visiting the website, and thus executing the JISC code that is tailored for that specific website, is protected from the third-party code, without hindering the proper action of the third-party software and without the third-party knowing that their code was monitored and controlled. Third-party activity can be monitored by the system via the combination of functionality for or more of the following: Instrumentation; Intermittent-Execution; Back-Pack; Policy-Center; Evasion; Debugger; CORS-Proxy; and Flash-Wrapper.

Claims (44)

1. A system for limiting activity of user-code on a user computing device running a browser, the system comprising: a memory; a JavaScript Instrumenter to Secured Code (JISC) cloud running on a first server adapted to tailor a JISC module for a website running on a second server, wherein the second server is adapted to instruct the browser running on the user device to load the JISC module from the JISC cloud, wherein the user-code is known to be associated with the website such that the website instructs the browser to load the user-code, wherein the JISC module comprises a policy for the user-code, and wherein the JISC module running in the browser is adapted to:

load the user-code,

generate instrumented-code based on the user-code,

execute the instrumented-code, and

limit an activity of the instrumented-code according to the policy, wherein the JISC module is adapted for intermittent asynchronous execution of the instrumented-code; and

d) initiate of an intermission in the execution of the instrumented-code, by:

i. directing the browser, by the instrumented-code, to determine if a time to execute exceeds a set limit, and when the time limit is exceeded, instructing the browser, by the instrumented-code, to build a currently executing subroutine call-stack frame for a currently executing subroutine,

ii. when the currently executing subroutine is called by a subsequent caller subroutine, building a subsequent caller subroutine call-stack frame for the subsequent caller subroutine and referencing the currently executing subroutine's call-stack frame by the subsequent caller subroutine's call-stack frame,

iii. repeating ii for every subsequent caller subroutine, and when the currently executing subroutine or a subsequent caller subroutine is not called by another subsequent caller subroutine, then scheduling a comeback time.

2. The system of claim 1 , wherein the user-code is loaded as text.

3. The system of claim 1 , wherein the instrumented-code is one of JavaScript or Web Assembly code.

4. The system of claim 1 , wherein the JISC cloud is adapted to tailor the JISC module according to a browser type.

5. The system of claim 1 , wherein the JISC module adaptation to limit an activity includes an adaptation to throw an exception, ignore an activity, or evade an activity.

6. The system of claim 1 , wherein the JISC module comprises a back-pack object attached to at least one object that the user-code encounters, wherein the back-pack object stores state information for the at least one object that the user-code encounters.

7. The system of claim 1 , wherein the JISC module is adapted to determine whether to grant, deny, alter, or fully process HTTP requests in the user-code according to the policy.

8. The system of claim 7 , further comprising a cross-origin resource sharing (CORS)-proxy, for proxying the HTTP requests from the user-code that the JISC module has determined should be altered or fully processed according to the policy.

9. The system of claim 1 , further comprising a JISC debugging system adapted for one or more of showing the user-code un-instrumented, allowing evaluation of the user-code via a JISC debugging console, and setting a break-point in a specific location in the user-code.

10. The system of claim 1 , wherein the JISC cloud is adapted to record actions of the user-code for analysis and reporting.

11. A method for limiting activity of user-code on a user computing device running a browser, the method comprising:

a) tailoring a JISC module by a JavaScript Instrumenter to Secured Code (JISC) cloud running on a first server for a website running on a second server, wherein the JISC module comprises a policy for the user-code and wherein the user-code is known to be associated with the website such that the website instructs the browser to load the user-code;

b) instructing a browser running on the user device to load the JISC module from the JISC cloud by the website;

c) running the JISC module in the browser to:

load the user-code,

generate instrumented-code based on the user-code,

execute the instrumented-code, and

limit the activity of the instrumented-code according to the policy, wherein the JISC module is adapted for intermittent asynchronous execution of the instrumented-code; and

d) initiate an intermission in the execution of the instrumented-code, by:

i. directing the browser, by the instrumented-code, to determine if a time to execute exceeds a set limit, and when the time limit is exceeded, instructing the browser, by the instrumented-code, to build a currently executing subroutine call-stack frame for a currently executing subroutine,

ii. when the currently executing subroutine is called by a subsequent caller subroutine, building a subsequent caller subroutine call-stack frame for the subsequent caller subroutine and referencing the currently executing subroutine's call-stack frame by the subsequent caller subroutine's call-stack frame,

iii. repeating ii for every subsequent caller subroutine, and when the currently executing subroutine or a subsequent caller subroutine is not called by another subsequent caller subroutine, then scheduling a comeback time.

12. The method of claim 11 , further comprising: by the JISC module,

iv. following arrival of the comeback time, executing the instrumented-code in a top-level call-stack frame context,

v. restoring all local variables by the currently executing or subsequent caller subroutine and skipping to a restoration point,

vi. when a restore index references a call currently executing or subsequent caller subroutine command, calling the currently executing or subsequent caller subroutine in a next call-stack frame context, and

vii. when the restoration is complete, continuing execution normally without a call-stack context.

13. The method of claim 11 , further comprising loading the user-code as text.

14. The method of claim 11 , wherein the instrumented-code is one of JavaScript or WebAssembly code.

15. The method of claim 11 , further comprising adapting the JISC module according to a browser type by the JISC cloud.

16. The method of claim 11 , wherein limiting the activity comprises one of limiting the activity by throwing an exception, ignoring the activity, or evading the activity.

17. The method of claim 11 , wherein the JISC module comprises a back-pack object, the method further comprising attaching at least one object that the user-code encounters to the back-pack object, wherein the back-pack object stores state information for the at least one object that the user-code encounters.

18. The method of claim 17 , further comprising, by the JISC module: getting a reference to the back-pack object by attempting to get the back-pack using a WeakMap, and if the attempt fails, create a fresh back-pack for the object and store it in the WeakMap for later reference.

19. The method of claim 11 , further comprising: providing a CORS-proxy, and by the JISC module, granting, denying, altering, or fully processing HTTP requests of the user-code according to the policy, wherein HTTP requests that are altered or fully processed are proxied via the CORS-proxy.

20. The method of claim 11 , further comprising: providing a JISC debugging system adapted for one or more of: showing the user-code un-instrumented, allowing evaluation of the user code via a JISC debugging console, and setting a break-point in a specific location in the user-code.

21. The method of claim 11 , further comprising: by the JISC cloud, recording actions of user-code for analysis and reporting.

Assignments (2)
SECURITY INTEREST Recorded Aug 11, 2026
From: SOURCE DEFENSE LTD.
To: EASTWARD FUND MANAGEMENT, LLC
Reel/Frame 075606/0287 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 1, 2024
From: BEN-DOR, GILAD
To: SOURCE DEFENSE
Reel/Frame 068748/0281 →
Continuity (2)
Continuation 15347765 · Nov 9, 2016
Provisional Application 62253669 · Nov 10, 2015
Cited By (1)
US 12,711,041