IP Library Granted Patent US 12,639,449
Granted Patent B2
US 12,639,449 · App. 18/418,711 · Granted May 26, 2026

System and method for scanning containers for vulnerabilities

Inventors: Barel Tayouri (Jerusalem, IL); Amit Chitayate (Tel Aviv, IL); Ariel Shuper (Kfar Haroe, IL)
Assignee: WHITESOURCE LTD.
G06F21/577G06F2221/034
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 12,639,449
App. No.
18/418,711
Granted
May 26, 2026
Kind
B2
Abstract

A method, computerized apparatus and computer program product, the method comprising: obtaining a collection of entities including a source code file and a non-source-code file; identifying a bundle within the collection of entities; generating a call and dependency graph of the collection of entities, the graph comprising two or more nodes each associated with an entity, and at least one edge indicating a calling relationship between the nodes, said generating comprising: generating an initial call and dependency graph, indicating reachability of each of the collection of entities starting from an entry point; and pruning the initial call and dependency graph by reducing an edge according to collected heuristics, to obtain a pruned call and dependency graph; obtaining information about vulnerabilities associated with the bundle or any of the collection of entities; and providing an indication of a reachable vulnerability and an unreachable vulnerability in the pruned call and dependency graph.

Claims (64)

1 . A computer-implemented method comprising:

obtaining a collection of entities, the collection of entities including at least one source code file and at least one non-source-code file;

identifying at least one bundle within the collection of entities;

generating a call and dependency graph of the collection of entities, wherein the graph comprises at least two nodes each associated with an entity, and at least one edge indicating a calling relationship between the at least two nodes, said generating comprising:

generating an initial call and dependency graph, indicating reachability of each of the collection of entities starting from at least one entry point;

pruning the initial call and dependency graph by reducing at least one edge according to collected heuristics, to obtain a pruned call and dependency graph, wherein generating the collected heuristics comprises:

obtaining a plurality of training collections of files;

for at least one training collection of files from the plurality of collections of files:

obtaining an estimated reachability of the at least one training collection of files;

executing the at least one training collection of files;

generating an initial training dependency graph of the collection of files, indicating reachability of each of the collection of files;

pruning the initial training dependency graph according to collected heuristics to obtain a pruned dependency graph indicating enhanced reachability of each of the collection of files; and

updating the collected heuristics based on differences between the reachability of at least one part of at least one file from the training collection of files and the enhanced reachability of each of the collection of files;

adding to the pruned call and dependency graph an edge that was present in the initial call and dependency graph and eliminated during said pruning;

obtaining information about vulnerabilities associated with the at least one bundle or any of the collection of entities; and

providing an indication of at least one vulnerability reachable by the pruned call and dependency graph, and at least one vulnerability unreachable by the pruned call and dependency graph.

2 . The method of claim 1 , wherein adding the edge to the pruned call and dependency graph is subject to further training that is utilized in discovering a call by a first entity to a second entity.

3 . The method of claim 1 , wherein the bundle is at least one item selected from the group consisting of: a container, a virtual machine, and a file system of an operating system.

4 . The method of claim 1 , wherein generating the initial call and dependency graph and pruning the initial dependency graph is performed using static analysis or reverse engineering without executing code comprised in the collection of files.

5 . The method of claim 1 , wherein the non-source-code file is selected from the group consisting of: a configuration file; a setting file; a file containing information related to runtime of an operating system.

6 . The method of claim 1 , wherein pruning the initial call and dependency graph comprises removing from the initial call and dependency graph vulnerabilities indicated as reachable.

7 . The method of claim 1 , wherein the collected heuristics is based on additional data.

8 . The method of claim 1 , wherein generating and pruning the initial dependency graph uses an adaptation of “meet in the middle” approach.

9 . The method of claim 1 , wherein the collected heuristics are generated based also on a plurality of use cases.

10 . The method of claim 1 , further comprising repeating said obtaining the estimated reachability, said executing, said generating, said pruning and said updating for at least one other training collection of files.

11 . The method of claim 1 , wherein the least one training collection of files is a package.

12 . A computerized apparatus having a processor, the processor being configured to perform the steps of:

obtaining a collection of entities, the collection of entities including at least one source code file and at least one non-source-code file;

identifying at least one bundle within the collection of entities;

generating a call and dependency graph of the collection of entities, wherein the graph comprises at least two nodes each associated with an entity, and at least one edge indicating a calling relationship between the at least two nodes, said generating comprising:

generating an initial call and dependency graph, indicating reachability of each of the collection of entities starting from at least one entry point;

pruning the initial call and dependency graph by reducing at least one edge according to collected heuristics, to obtain a pruned call and dependency graph, wherein generating the collected heuristics comprises:

obtaining a plurality of training collections of files;

for at least one training collection of files from the plurality of collections of files:

obtaining an estimated reachability of the at least one training collection of files;

executing the at least one training collection of files;

generating an initial training dependency graph of the collection of files, indicating reachability of each of the collection of files;

pruning the initial training dependency graph according to collected heuristics to obtain a pruned dependency graph indicating enhanced reachability of each of the collection of files; and

updating the collected heuristics based on differences between the reachability of at least one part of at least one file from the training collection of files and the enhanced reachability of each of the collection of files;

adding to the pruned call and dependency graph an edge that was present in the initial call and dependency graph and eliminated during said pruning;

obtaining information about vulnerabilities associated with the at least one bundle or any of the collection of entities; and

providing an indication of at least one vulnerability reachable by the pruned call and dependency graph, and at least one vulnerability unreachable by the pruned call and dependency graph.

13 . The apparatus of claim 12 , wherein adding the edge to the pruned call and dependency graph, is subject to further training that is utilized in discovering a call by a first entity to a second entity.

14 . The apparatus of claim 12 , wherein the bundle is at least one item selected from the group consisting of: a container, a virtual machine, and a file system of an operating system.

15 . The apparatus of claim 12 , wherein generating the initial call and dependency graph and pruning the initial dependency graph is performed using static analysis or reverse engineering without executing code comprised in the collection of files, and using an adaptation of “meet in the middle” approach.

16 . The apparatus of claim 12 , wherein pruning the initial call and dependency graph comprises removing vulnerabilities indicated as reachable from the initial call and dependency graph.

17 . The apparatus of claim 12 , wherein the collected heuristics are generated based also on a plurality of use cases.

18 . The apparatus of claim 12 , wherein the at least one training collection of files is a package.

19 . A computer program product comprising a non-transitory computer readable medium retaining program instructions, which instructions when read by a processor, cause the processor to perform:

obtaining a collection of entities, the collection of entities including at least one source code file and at least one non-source-code file;

identifying at least one bundle within the collection of entities;

generating a call and dependency graph of the collection of entities, wherein the graph comprises at least two nodes each associated with an entity, and at least one edge indicating a calling relationship between the at least two nodes, said generating comprising:

generating an initial call and dependency graph, indicating reachability of each of the collection of entities starting from at least one entry point; and

pruning the initial call and dependency graph by reducing at least one edge according to collected heuristics, to obtain a pruned call and dependency graph, wherein generating the collected heuristics comprises:

obtaining a plurality of training collections of files;

for at least one training collection of files from the plurality of collections of files:

obtaining an estimated reachability of the at least one training collection of files;

executing the at least one training collection of files;

generating an initial training dependency graph of the collection of files, indicating reachability of each of the collection of files;

pruning the initial training dependency graph according to collected heuristics to obtain a pruned dependency graph indicating enhanced reachability of each of the collection of files; and

updating the collected heuristics based on differences between the reachability of at least one part of at least one file from the training collection of files and the enhanced reachability of each of the collection of files;

adding to the pruned call and dependency graph an edge that was present in the initial call and dependency graph and eliminated during said pruning;

obtaining information about vulnerabilities associated with the at least one bundle or any of the collection of entities; and

providing an indication of at least one vulnerability reachable by the pruned call and dependency graph, and at least one vulnerability unreachable by the pruned call and dependency graph.

Assignments (2)
SECURITY INTEREST Recorded Jul 1, 2025
From: WHITE SOURCE LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 071572/0376 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2024
From: TAYOURI, BAREL; CHITAYATE, AMIT; SHUPER, ARIEL
To: WHITESOURCE LTD.
Reel/Frame 067879/0231 →
Continuity (1)
Related Publication 20250238519A1 · Jul 24, 2025
References Cited (19)
US 8881288B1 · Levy · 2014 [cited by examiner]
US 8978010B1 · Thumfart · 2015 [cited by examiner]
US 10560364B1 · Kondaveeti · 2020 [cited by examiner]
US 20030200350A1 · Kumar · 2003 [cited by examiner]
US 20160277423A1 · Apostolescu · 2016 [cited by examiner]
US 20190347422A1 · Abadi · 2019 [cited by examiner]
US 20190362235A1 · Xu · 2019 [cited by examiner]
US 20200004964A1 · Soumenkov · 2020 [cited by examiner]
US 20200053116A1 · Soroush · 2020 [cited by examiner]
US 20230328094A1 · Brown · 2023 [cited by examiner]
US 20230418597A1 · Iwatsuka · 2023 [cited by examiner]
US 20240354406A1 · Belák · 2024 [cited by examiner]
US 20240370570A1 · Betthauser · 2024 [cited by examiner]
US 20250173443A1 · Ganz · 2025 [cited by examiner]
Utture, A., Liu, S., Kalhauge, C. G., & Palsberg, J. (May 2022). Striking a balance: pruning false-positives from static call graphs. In Proceedings of the 44th International Conference on Software Engineering (pp. 2043… [cited by examiner]
Le-Cong, T., Kang, H. J., Nguyen, T. G., Haryono, S. A., Lo, D., Le, X. B. D., & Huynh, Q. T. (Nov. 2022). Autopruner: transformer-based call graph pruning. In Proceedings of the 30th ACM joint European SW engineering c… [cited by examiner]
Ruaro, N., Zeng, K., Dresel, L., Polino, M., Bao, T., Continella, A., . . . & Vigna, G. (Oct. 2021). Syml: Guiding symbolic execution toward vulnerable states through pattern learning. In Proceedings of the 24th Interna… [cited by examiner]
Alvaro, P., & Galwani, S. (2017). Research for Practice: Tracing and Debugging Distributed Systems; Programming by Examples: Expert-curated Guides to the Best of CS Research. Queue, 15(1), 91-105. [cited by examiner]
Zhu, Hang et al. (2021). Network Planning with Deep Reinforcement Learning. In Proceedings of the 2021 ACM SIGCOMM 2021 Conference (SIGCOMM '21). Association for Computing Machinery, New York, NY, USA, 258-271. https://… [cited by applicant]