information, we obtain an information flow analysis
that can detect harmful flows in computer programs.
We validated our approach using 9 hand-crafted pro-
grams with complex data flows and verified that all
harmful flows were discovered by the analysis.
Our work shows that an information flow analysis
can be obtained by making only minor changes to a
modular analysis. The resulting analysis is modular,
meaning that it scales well to large programs, and in-
dependent of a particular lattice or context sensitivity.
Future work may consider distinguishing different
types of taint tags, e.g., to reflect levels of information
sensitivity where low-sensitive data may e.g., be al-
lowed at some sinks in a program. Another improve-
ment would be to extend our validation and evalua-
tion using larger programs, allowing e.g., to evaluate
the precision of the analysis (i.e., the number of false
positives found by the analysis). Our implementation
already supports these bigger programs.
ACKNOWLEDGEMENTS
This work was partially supported by the Research
Foundation – Flanders (FWO) (grant No. 11F4822N)
and by the Cybersecurity Initiative Flanders.
REFERENCES
Andreasen, E. S., Møller, A., and Nielsen, B. B. (2017).
Systematic approaches for increasing soundness and
precision of static analyzers. In SOAP 2017, Proc.,
pages 31–36.
Chong, S. and Myers, A. C. (2004). Security policies for
downgrading. In CCS 2004, Proc., pages 198–209.
Cousot, P. and Cousot, R. (1977). Abstract interpretation: a
unified lattice model for static analysis of programs by
construction or approximation of fixpoints. In POPL
1977, Proc., pages 238–252.
Cousot, P. and Cousot, R. (2002). Modular Static Pro-
gram Analysis. In CC 2002, Proc., pages 159–179.
Springer.
De Bleser, J., Sti
´
evenart, Q., Nicolay, J., and De Roover, C.
(2017). Static Taint Analysis of Event-driven Scheme
Programs. In ELS, pages 80–87.
Denning, D. E. (1976). A lattice model of secure informa-
tion flow. Commun. ACM, 19(5):236–243.
Hedin, D. and Sabelfeld, A. (2012). A perspective on
information-flow control. In Software safety and se-
curity, pages 319–347. IOS Press.
Might, M. and Shivers, O. (2006). Improving flow analyses
via γcfa: Abstract garbage collection and counting. In
ICFP 2020, Proc., pages 13–25.
Nicolay, J., De Roover, C., De Meuter, W., and Jonck-
ers, V. (2011). Automatic Parallelization of Side-
Effecting Higher-Order Scheme Programs. In SCAM
2011, Proc., pages 185–194. IEEE.
Nicolay, J., Sti
´
evenart, Q., De Meuter, W., and De Roover,
C. (2017). Purity analysis for JavaScript through ab-
stract interpretation. Journal of Software: Evolution
and Process, 29(12).
Nicolay, J., Sti
´
evenart, Q., De Meuter, W., and De Roover,
C. (2019). Effect-driven Flow Analysis. In VMCAI
2019, Proc., pages 247–274. Springer.
Pauck, F., Bodden, E., and Wehrheim, H. (2018). Do an-
droid taint analysis tools keep their promises? In ES-
EC/FSE 2018, Proc., pages 331–341.
Russo, A. and Sabelfeld, A. (2010). Dynamic vs. static
flow-sensitive security analysis. In CSF 2010, pages
186–199. IEEE.
Scull Pupo, A. L., Christophe, L., Nicolay, J., Roover, C. d.,
and Gonzalez Boix, E. (2018). Practical information
flow control for web applications. In RV 2018, Proc.,
pages 372–388. Springer.
Shivers, O. (1991). Control-Flow Analysis of Higher-Order
Languages. Doctoral dissertation, Carnegie Mellon
University, Pittsburgh, PA, USA.
Staicu, C.-A., Torp, M. T., Sch
¨
afer, M., Møller, A., and
Pradel, M. (2020). Extracting taint specifications for
javascript libraries. In ICSE 2020, Proc., pages 198–
209.
Sti
´
evenart, Q., Nicolay, J., De Meuter, W., and De Roover,
C. (2015). Detecting Concurrency Bugs in Higher-
Order Programs through Abstract Interpretation. In
PPDP 2015, Proc., pages 232–243.
Sti
´
evenart, Q., Nicolay, J., De Meuter, W., and De Roover,
C. (2019). A general method for rendering static anal-
yses for diverse concurrency models modular. Journal
of Systems and Software, 147:17–45.
Sti
´
evenart, Q., Van Es, N., Van der Plas, J., and De Roover,
C. (2021). A parallel worklist algorithm and its explo-
ration heuristics for static modular analyses. Journal
of Systems and Software, 181:111042.
Van der Plas, J., Sti
´
evenart, Q., and De Roover, C. (2023).
Result Invalidation for Incremental Modular Analy-
ses. In Dragoi, C., Emmi, M., and Wang, J., editors,
VMCAI 2023, Proc., volume 13881 of Lecture Notes
in Computer Science, pages 296–319. Springer.
Van der Plas, J., Sti
´
evenart, Q., Van Es, N., and De Roover,
C. (2020). Incremental Flow Analysis through Com-
putational Dependency Reification. In SCAM 2020,
Proc., pages 25–36. IEEE Computer Society.
Van Es, N., Sti
´
evenart, Q., Van der Plas, J., and De Roover,
C. (2020). A Parallel Worklist Algorithm for Modular
Analyses. In SCAM 2020, Proc., pages 1–12. IEEE.
Van Es, N., Van der Plas, J., Sti
´
evenart, Q., and De Roover,
C. (2020). MAF: A Framework for Modular Static
Analysis of Higher-Order Languages. In SCAM 2020,
Proc. IEEE Computer Society.
Zanotti, M. (2002). Security typings by abstract interpre-
tation. In International Static Analysis Symposium,
pages 360–375. Springer.
MODINF: Exploiting Reified Computational Dependencies for Information Flow Analysis
427