IP Library Granted Patent US 9,536,080
Granted Patent B2
US 9,536,080 · App. 14/726,292 · Granted Jan 3, 2017

Method for validating dynamically loaded libraries using team identifiers

Inventors: Gregory I. Kerr (Cupertino, CA); Pierre-Olivier J. Martel (Mountain View, CA); Love Hornquist Astrand (Cupertino, CA); Peter Kiehtreiber (Cupertino, CA); Ivan Krstic (San Francisco, CA)
Assignee: Apple Inc.
G06F21/52G06F21/51G06F21/64G06F2221/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 9,536,080
App. No.
14/726,292
Granted
Jan 3, 2017
Kind
B2
Abstract

According to one embodiment, in response to a request received from an application by a launch module hosted by an operating system and executed by a processor to dynamically load a library, a library validation module hosted by the operating system extracts a first team identifier (ID) from the application, where the first team ID identifies an application provider that provides the application. The library validation module extracts a second team ID from the library, where the second team ID identifies a library provider that provides the library. The first team ID and the second team ID are compared to determine whether the first team ID matches the second team ID. In response to determining that the first team ID matches the second team ID, the launch module launches the library to allow the application communicate with the library; otherwise, the request is denied.

Claims (56)

1. A computer-implemented method for validating dynamically loaded libraries, the method comprising:

in response to a request received from an application by a launch module hosted by an operating system of a data processing system and executed by a processor to dynamically load a library, extracting by a library validation module hosted by the operating system a first team identifier (ID) from the application, wherein the first team ID identifies an application provider that provides the application;

extracting by the library validation module a second team ID from the library, wherein the second team ID identifies a library provider that provides the library;

comparing the first team ID and the second team ID to determine whether the first team ID matches the second team ID;

in response to determining that the first team ID matches the second team ID, launching by the launch module the library to allow the application communicate with the library; and

denying the request if the first team ID does not match the second team ID.

2. The method of claim 1 , wherein the first team ID is inserted into a first binary image of the application, and wherein the first binary image having the first team ID is signed using a first certificate provided by a trusted entity.

3. The method of claim 2 , wherein the second team ID is inserted into a second binary image of the library, and wherein the second binary image having the second team ID is signed using a second certificate provided by the trusted entity.

4. The method of claim 3 , further comprising examining the second certificate to determine whether the second certificate is still valid, wherein the comparison of the first team ID and the second team ID is performed only if the second certificate is still valid.

5. The method of claim 1 , further comprising:

determining whether the library is provided and installed as a bundle including the operating system in the data processing system; and

loading the library in response to determining that the library is provided as part of operating system.

6. The method of claim 5 , wherein determining whether the library is provided and installed as a bundle comprises determining whether the library has been installed and stored in a first predetermined directory of a file system associated with the operating system.

7. The method of claim 5 , further comprising:

determining whether the application is a third-party application that is not provided in the bundle; and

performing comparing the first and second team IDs, in response to determining that the application is a third-party application.

8. The method of claim 7 , wherein determining whether the application is provided in the bundle comprises determining whether the application has been installed and stored in a second predetermined directory of a file system associated with the operating system.

9. The method of claim 7 , further comprising denying the request to load the library if the application is not a third-party application and the library is a third-party library.

10. A non-transitory machine-readable medium having instructions stored therein, which when executed by a processor, cause the processor to perform a method for validating dynamically loaded libraries, the method comprising:

in response to a request received from an application by a launch module hosted by an operating system of a data processing system to dynamically load a library, extracting by a library validation module hosted by the operating system a first team identifier (ID) from the application, wherein the first team ID identifies an application provider that provides the application;

extracting by the library validation module a second team ID from the library, wherein the second team ID identifies a library provider that provides the library;

comparing the first team ID and the second team ID to determine whether the first team ID matches the second team ID;

in response to determining that the first team ID matches the second team ID, launching by the launch module the library to allow the application communicate with the library; and

denying the request if the first team ID does not match the second team ID.

11. The non-transitory machine-readable medium of claim 10 , wherein the first team ID is inserted into a first binary image of the application, and wherein the first binary image having the first team ID is signed using a first certificate provided by a trusted entity.

12. The non-transitory machine-readable medium of claim 11 , wherein the second team ID is inserted into a second binary image of the library, and wherein the second binary image having the second team ID is signed using a second certificate provided by the trusted entity.

13. The non-transitory machine-readable medium of claim 12 , wherein the method further comprises examining the second certificate to determine whether the second certificate is still valid, wherein the comparison of the first team ID and the second team ID is performed only if the second certificate is still valid.

14. The non-transitory machine-readable medium of claim 10 , wherein the method further comprises:

determining whether the library is provided and installed as a bundle including the operating system in the data processing system; and

loading the library in response to determining that the library is provided as part of operating system.

15. The non-transitory machine-readable medium of claim 14 , wherein determining whether the library is provided and installed as a bundle comprises determining whether the library has been installed and stored in a first predetermined directory of a file system associated with the operating system.

16. The non-transitory machine-readable medium of claim 14 , wherein the method further comprises:

determining whether the application is a third-party application that is not provided in the bundle; and

performing comparing the first and second team IDs, in response to determining that the application is a third-party application.

17. The non-transitory machine-readable medium of claim 16 , wherein determining whether the application is provided in the bundle comprises determining whether the application has been installed and stored in a second predetermined directory of a file system associated with the operating system.

18. The non-transitory machine-readable medium of claim 16 , wherein the method further comprises denying the request to load the library if the application is not a third-party application and the library is a third-party library.

19. A data processing system, comprising:

a processor; and

a memory storing instructions, which when executed by the processor, cause the processor to perform a method, the method including

in response to a request received from an application by a launch module hosted by an operating system to dynamically load a library, extracting by a library validation module hosted by the operating system a first team identifier (ID) from the application, wherein the first team ID identifies an application provider that provides the application,

extracting by the library validation module a second team ID from the library, wherein the second team ID identifies a library provider that provides the library,

comparing the first team ID and the second team ID to determine whether the first team ID matches the second team ID,

in response to determining that the first team ID matches the second team ID, launching by the launch module the library to allow the application communicate with the library, and

denying the request if the first team ID does not match the second team ID.

20. The system of claim 19 , wherein the first team ID is inserted into a first binary image of the application, and wherein the first binary image having the first team ID is signed using a first certificate provided by a trusted entity.

21. The system of claim 20 , wherein the second team ID is inserted into a second binary image of the library, and wherein the second binary image having the second team ID is signed using a second certificate provided by the trusted entity.

22. The system of claim 21 , wherein the method further comprises examining the second certificate to determine whether the second certificate is still valid, wherein the comparison of the first team ID and the second team ID is performed only if the second certificate is still valid.

23. A computer-implemented method for validating a dynamically loaded second program, the method comprising:

receiving from a first program by a launch module hosted by an operating system and executed by a processor to dynamically load and communicate with the second program;

extracting by a library validation module hosted by the operating system a first team identifier (ID) from the first program, wherein the first team ID identifies a first program provider that provides the first program;

extracting by the library validation module a second team ID from the second program, wherein the second team ID identifies a second program provider that provides the second program;

comparing the first team ID and the second team ID to determine whether the first team ID matches the second team ID;

in response to determining that the first team ID matches the second team ID, launching by the launch module the second program to allow the first program communicate with the second program; and

denying the request if the first team ID does not match the second team ID.

24. The method of claim 23 , wherein the first team ID is inserted into a first binary image of the first program, and wherein the first binary image having the first team ID is signed using a first certificate provided by a trusted entity.

25. The method of claim 24 , wherein the second team ID is inserted into a second binary image of the second program, and wherein the second binary image having the second team ID is signed using a second certificate provided by the trusted entity.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 21, 2015
From: KERR, GREGORY I.; MARTEL, PIERRE-OLIVIER J.; ASTRAND, LOVE HORNQUIST; KIEHTREIBER, PETER; KRSTIC, IVAN
To: APPLE INC.
Reel/Frame 036395/0205 →
Continuity (1)
Related Publication 20160350529A1 · Dec 1, 2016