be exploited to cause an unsafe memory behaviour.
For that, a safety knowledge base is constructed using
a formal representation of errors and recommenda-
tion reports and also requirement that can provided by
users. The created safety knowledge base is used to
improve the obtained formulas by adding safety con-
straints. The latter are checked by an SMT solver to
detect vulnerability bugs. We illustrate our approach
through an example. Definitely the efficiency of our
approach depends strongly on the relevancy of the
used safety knowledge base. The current work ad-
dresses the problem of extracting and using knowl-
edge of attack and software vulnerabilities directo-
ries to build safety properties patterns. An alterna-
tive solution would be to use interactive annotation
through an interface for the tool as it has been done
in (Thomas, 2015). The aim of our ongoing and fu-
ture work is to formalize more unsafe predicate in-
cluding pointer references, cast operations and more.
By expanding the knowledge data base, we can treat
a broader class of bugs, and can then identify more
vulnerabilities.
REFERENCES
2019 CWE Top 25 Most Dangerous Software Errors.
https://cwe.mitre.org/top25/archive/2019/2019 cwe
top25.html.
CERN Computer Security. https://security.web.cern.ch.
Aggarwal, A. and Jalote, P. (2006). Integrating static and
dynamic analysis for detecting vulnerabilities. In 30th
Annual International Computer Software and Appli-
cations Conference, volume 01, pages 343–350, USA.
IEEE Computer Society.
Ameur-Boulifa, R., Lugou, F., and Apvrille, L. (2018).
SysML model transformation for safety and secu-
rity analysis. In ISSA 2018:International workshop
on Interplay of Security, Safety and System/Software,
Spain. ACM IPCS.
Boudjema, E. H., Verlan, S., Mokdad, L., and Faure, C.
(2019). VYPER: Vulnerability detection in binary
code. volume 3. Wiley.
Cuoq, P., Kirchner, F., Kosmatov, N., Prevosto, V., Sig-
noles, J., and Yakobowski, B. (2012). Frama-C - A
software analysis perspective. In 10th International
Conference, SEFM 2012, Greece, October 1-5, 2012.
Proceedings, volume 7504 of Lecture Notes in Com-
puter Science, pages 233–247. Springer.
Dietz, W., Li, P., Regehr, J., and Adve, V. (2015). Un-
derstanding Integer Overflow in C/C++. ACM Trans.
Softw. Eng. Methodol., 25(1).
Graf, J., Hecker, M., and Mohr, M. (2013). Using JOANA
for Information Flow Control in Java Programs -
A Practical Guide. In Software Engineering 2013,
Aachen, volume P-215 of LNI, pages 123–138. .
Han, L., Zhou, M., Qian, Y., Fu, C., and Zou, D. (2019). An
optimized static propositional function model to de-
tect software vulnerability. IEEE Access, 7:143499–
143510.
Hohnka, M. J., Miller, J. A., Dacumos, K. M., Fritton,
T. J., Erdley, J. D., and Long, L. N. (2019). Evalu-
ation of compiler-induced vulnerabilities. Journal of
Aerospace Information Systems, 16(10):409–426.
Kosmatov, N. and Signoles, J. (2013). A lesson on run-
time assertion checking with Frama-C. In 4th Inter-
national Conference Runtime Verification RV 2013,
France, September 24-27, 2013. Proceedings, volume
8174 of Lecture Notes in Computer Science, pages
386–399. Springer.
Li, H., Kim, T., Bat-Erdene, M., and Lee, H. (2013).
Software vulnerability detection using backward trace
analysis and symbolic execution. In International
Conference on Availability, Reliability and Security,
ARES 2013, Germany, September 2-6, 2013, pages
446–454. IEEE Computer Society.
Ognawala, S., Ochoa, M., Pretschner, A., and Limmer,
T. (2016). Macke: Compositional analysis of low-
level vulnerabilities with symbolic execution. In 31st
IEEE/ACM International Conference on Automated
Software Engineering, ASE 2016, page 780–785,
USA. Association for Computing Machinery.
Seacord, R., Dormann, W., McCurley, J., Miller, P., Stod-
dard, R., Svoboda, D., and Welch, J. (2012). Source
Code Analysis Laboratory (SCALe). Technical Re-
port CMU/SEI-2012-TN-013, Software Engineering
Institute, Carnegie Mellon University, Pittsburgh, PA.
Thomas, T. (2015). Exploring the usability and effective-
ness of interactive annotation and code review for
the detection of security vulnerabilities. In 2015
IEEE Symposium on Visual Languages and Human-
Centric Computing, VL/HCC 2015, USA, October 18-
22, 2015, pages 295–296. IEEE Computer Society.
Van der Veen, V., Dutt-Sharma, N., Cavallaro, L., and Bos,
H. (2012). Memory Errors: The Past, the Present, and
the Future. In Research in Attacks, Intrusions, and
Defenses, pages 86–106, Berlin, Heidelberg. Springer
Berlin Heidelberg.
Wagner, D., Foster, J. S., Brewer, E. A., and Aiken, A.
(2000). A first step towards automated detection of
buffer overrun vulnerabilities. In Network and Dis-
tributed System Security Symposium, pages 3–17.
Wang, L., Zhang, Q., and Zhao, P. (2008). Automated de-
tection of code vulnerabilities based on program anal-
ysis and model checking. In 8th International Work-
ing Conference on Source Code Analysis and Manip-
ulation (SCAM 2008), 28-29 September 2008, China,
pages 165–173. IEEE Computer Society.
Younan, Y., Joosen, W., and Piessens, F. (2004). Code
injection in C and C++:A survey of vulnerabilities
and countermeasures. Technical report, Department
Computer Wetenschappen, Katholieke Universiteit NI
Leuven.
Zhang, D., Liu, D., Lei, Y., Kung, D. C., Csallner, C., and
Wang, W. (2010). Detecting vulnerabilities in C pro-
grams using trace-based testing. In IEEE/IFIP Inter-
national Conference on Dependable Systems and Net-
works, DSN 2010, USA, June 28 - July 1 2010, pages
241–250. IEEE Computer Society.
ICSOFT 2021 - 16th International Conference on Software Technologies
184