<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Miltiadis Siavvas, Centre for Research &amp; Technology – Hellas, Author at IoTAC</title>
	<atom:link href="https://iotac.eu/author/siavvasmiti-gr/feed/" rel="self" type="application/rss+xml" />
	<link>https://iotac.eu/author/siavvasmiti-gr/</link>
	<description>Internet of Things Access Control</description>
	<lastBuildDate>Fri, 13 Jan 2023 13:36:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.2.9</generator>

<image>
	<url>https://iotac.eu/wp-content/uploads/2020/11/cropped-favicon-32x32.jpg</url>
	<title>Miltiadis Siavvas, Centre for Research &amp; Technology – Hellas, Author at IoTAC</title>
	<link>https://iotac.eu/author/siavvasmiti-gr/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Simple coding mistakes that can lead to critical vulnerabilities</title>
		<link>https://iotac.eu/simple-coding-mistakes-that-can-lead-to-critical-vulnerabilities/</link>
					<comments>https://iotac.eu/simple-coding-mistakes-that-can-lead-to-critical-vulnerabilities/#respond</comments>
		
		<dc:creator><![CDATA[Miltiadis Siavvas, Centre for Research &#38; Technology – Hellas]]></dc:creator>
		<pubDate>Fri, 13 Jan 2023 13:36:24 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[IoT architecture]]></category>
		<category><![CDATA[IoT security]]></category>
		<category><![CDATA[security by design]]></category>
		<guid isPermaLink="false">https://iotac.eu/?p=11157</guid>

					<description><![CDATA[<p>Software security is an aspect of major concern for software applications since the exploitation of a single vulnerability may lead to far-reaching consequences. Most of the software vulnerabilities stem from a small number of common programming errors, which are introduced by the developers during the implementation phase mainly due to...</p>
<p>The post <a href="https://iotac.eu/simple-coding-mistakes-that-can-lead-to-critical-vulnerabilities/">Simple coding mistakes that can lead to critical vulnerabilities</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Software security is an aspect of major concern for software applications since the exploitation of a single vulnerability may lead to far-reaching consequences. Most of the software vulnerabilities stem from a small number of common programming errors, which are introduced by the developers during the implementation phase mainly due to their lack of security expertise or mistakes made due to delivery time pressure. In order to mitigate these errors and protect software applications against critical vulnerabilities, appropriate security mechanisms should be implemented.</p>
<p>Below is the updated list of the top 25 most dangerous software weaknesses of 2022, which is maintained by the Common Weakness Enumeration (CWE)<a href="#_ftn1" name="_ftnref1"><sup>[1]</sup></a>.<br />
<img decoding="async" loading="lazy" class="aligncenter wp-image-11151 size-full" src="https://iotac.eu/wp-content/uploads/2023/01/Miltiadis-Blog-8-Figure-1.png" alt="" width="964" height="780" srcset="https://iotac.eu/wp-content/uploads/2023/01/Miltiadis-Blog-8-Figure-1.png 964w, https://iotac.eu/wp-content/uploads/2023/01/Miltiadis-Blog-8-Figure-1-300x243.png 300w, https://iotac.eu/wp-content/uploads/2023/01/Miltiadis-Blog-8-Figure-1-768x621.png 768w" sizes="(max-width: 964px) 100vw, 964px" />Figure 1: The list of the top 25 most dangerous software weaknesses of 2022 as  maintained by the Common Weakness Enumeration (CWE)</p>
<p>This list contains the most common and impactful from a security viewpoint weaknesses of software systems. It is interesting that weaknesses like &#8220;Out-of-bounds Read&#8221;, &#8220;Out-of-bounds Write&#8221;, and &#8220;Improper Input Validation&#8221; rank so high in the list. This shows that these relatively simple mistakes can have significant consequences on a software system, whereas, although they are issues that can be easily fixed in the code, they are still among the most common weaknesses found in software systems. In order to stress how easily those critical vulnerabilities could be avoided with simple code checks, we provide the following examples that are presented in the table below:</p>
<p>Table 1: Examples of common vulnerabilities along with their fixes<br />
<img decoding="async" loading="lazy" class="aligncenter wp-image-11154 size-large" src="https://iotac.eu/wp-content/uploads/2023/01/Miltiadis-Blog-8-Table-1-1024x676.png" alt="" width="1024" height="676" srcset="https://iotac.eu/wp-content/uploads/2023/01/Miltiadis-Blog-8-Table-1-1024x676.png 1024w, https://iotac.eu/wp-content/uploads/2023/01/Miltiadis-Blog-8-Table-1-300x198.png 300w, https://iotac.eu/wp-content/uploads/2023/01/Miltiadis-Blog-8-Table-1-768x507.png 768w, https://iotac.eu/wp-content/uploads/2023/01/Miltiadis-Blog-8-Table-1.png 1098w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p>The first example, which is depicted in the table above, corresponds to a Buffer Overflow vulnerability. This vulnerability is popular in unsafe programming languages like C and C++. This security issue arises when the software application does not perform bounds checking and allows input to write beyond the end of an allocated buffer, overwriting in that way adjacent memory locations. These locations may contain data or executable code, leading the program to unexpected behavior including memory access errors, incorrect results, and crashes. In the given example, the function fun() receives a parameter str and copies this parameter to the buffer array, without checking their bounds, potentially leading to an overflow. This issue is addressed by properly checking the sizes of the two buffers before performing the copy.</p>
<p>The second example that is presented in the table above corresponds to an OS Command Injection vulnerability. This vulnerability arises when the software product constructs an OS command using user-defined (i.e., tainted) inputs, without proper validation or neutralization. This could allow attackers to execute unexpected and dangerous commands directly on the operating system. In the given example, the <em>p </em>variable receives user-defined data from a user request, and these data are directly used for executing a command. In order to mitigate this issue, as shown in the figure above, the user-defined input should be checked for illegal characters (i.e., input validation), and in case that illegal characters are present, it should be sanitized by removing these illegal characters (i.e., input sanitization/neutralization). In addition, instead of string concatenation, the final command should be constructed by using a special method (i.e., parameterization). Alternatively, the command and the data could be passed as individual parameters to a ProcessBuilder object instead of using the Runtime.exec() method.</p>
<p>The above examples provide further support to the common belief that the majority of the critical vulnerabilities are introduced by relatively simple code mistakes made by developers during the implementation, which could have been easily avoided at first place. It also stresses the need for mechanisms (e.g., static code analyzers, etc.) able to help developers detect and eventually fix those simple issues prior to the release of the software on the market.</p>
<p>In order to address the aforementioned challenge, within the context of the IoTAC project and as part of our Security-by-Design (SSD) Platform, we propose the Security Evaluation Framework (SEF). It is a framework that applies security-specific static analysis in order to detect security issues (i.e., potential vulnerabilities) that reside in the source code of a given software application and provide feedback on how these issues can be fixed. The regular execution of SEF during the development of software applications could lead to the identification and elimination of critical vulnerabilities prior to their release on the market, leading to more secure solutions. More information about the SEF component of the SSD platform can be found in one of our previous <u><a href="https://iotac.eu/iotac-software-security-evaluation-framework/">posts</a></u>.</p>
<p><a href="#_ftnref1" name="_ftn1"><sup>[1]</sup></a> <u><a href="https://cwe.mitre.org/top25/archive/2022/2022_cwe_top25.html">https://cwe.mitre.org/top25/archive/2022/2022_cwe_top25.html</a></u></p>
<p>The post <a href="https://iotac.eu/simple-coding-mistakes-that-can-lead-to-critical-vulnerabilities/">Simple coding mistakes that can lead to critical vulnerabilities</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://iotac.eu/simple-coding-mistakes-that-can-lead-to-critical-vulnerabilities/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Forecasting the evolution of software vulnerabilities</title>
		<link>https://iotac.eu/forecasting-the-evolution-of-software-vulnerabilities/</link>
					<comments>https://iotac.eu/forecasting-the-evolution-of-software-vulnerabilities/#respond</comments>
		
		<dc:creator><![CDATA[Miltiadis Siavvas, Centre for Research &#38; Technology – Hellas]]></dc:creator>
		<pubDate>Thu, 01 Dec 2022 22:21:56 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[IoT architecture]]></category>
		<category><![CDATA[IoT security]]></category>
		<category><![CDATA[security by design]]></category>
		<guid isPermaLink="false">https://iotac.eu/?p=10783</guid>

					<description><![CDATA[<p>Software security is a critical concern for modern software products. The vulnerabilities that reside in their source code could become a major weakness for enterprises that build or utilize these products, as their exploitation could lead to devastating financial consequences and reputation damages. In order to prevent security breaches, software...</p>
<p>The post <a href="https://iotac.eu/forecasting-the-evolution-of-software-vulnerabilities/">Forecasting the evolution of software vulnerabilities</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Software security is a critical concern for modern software products. The vulnerabilities that reside in their source code could become a major weakness for enterprises that build or utilize these products, as their exploitation could lead to devastating financial consequences and reputation damages. In order to prevent security breaches, software companies have started investing on the security-by-design paradigm, i.e., on building products that are highly secure from the ground up. However, this inevitably introduces additional overheads to the software development lifecycle (SDLC), due to the extra time and effort that is required for detecting and fixing vulnerabilities that reside in the software applications under development. Hence, several mechanisms and tools have been proposed in the literature over the years to help developers and project managers better plan their security testing and fortification activities, in order to reduce the overheads added by the incorporation of the security-by-design paradigm into their workflows.</p>
<p>To this end, a lot of effort has been dedicated in the literature to the prediction of vulnerable software components using software attributes extracted by the source code. In these studies, researchers commonly train machine learning models based on either software metrics (e.g., cohesion, coupling, and complexity metrics) or text features, in order to predict whether the analyzed component is potentially vulnerable or not. However, these approaches do not predict the number of vulnerabilities in future versions. An indication of the expected number of vulnerabilities and the trends of their occurrences can be a very useful tool for decision makers, enabling them to prioritize their valuable time and limited resources for testing an existing software project and patching its reported vulnerabilities. For this purpose, there is a need for forecasting models that can predict the trend and the number of vulnerabilities that are expected to be discovered in a specific time horizon for a given software project.</p>
<p>In an attempt to address the aforementioned challenges, within the IoTAC project, and as part of the Security by Design (SSD) Platform, we built models for forecasting the future evolution of the number of vulnerabilities that a given project may have. More specifically, we empirically examined the capacity of statistical and deep learning (DL) models to forecast the future number of vulnerabilities that a software product may exhibit and we compared their performance. The high-level overview of our methodology is depicted in the figure below:<u></u></p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-10777 size-full" src="https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-1.png" alt="" width="1926" height="1202" srcset="https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-1.png 1926w, https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-1-300x187.png 300w, https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-1-1024x639.png 1024w, https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-1-768x479.png 768w, https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-1-1536x959.png 1536w" sizes="(max-width: 1926px) 100vw, 1926px" />Figure 1: The high-level overview of our approach for building and evaluating the statistical and deep learning models for forecasting the evolution of software vulnerabilities</p>
<p>As can be seen by the figure above, in order to build the forecasting models, we initially collected the historical vulnerability data of five popular software applications (Microsoft Office, Apple macOS X, Ubuntu Linux, Internet Explorer, and Google Chrome) for a duration of 20 years from the National Vulnerability Database (NVD). These data were used in order to construct the training and testing sets that are required for building the models. Based on these data, we built several statistical models (e.g., ARIMA, Croston, etc.) and Deep Learning models (e.g., MLP, RNN, CNN, etc.) that are able to predict the future number of vulnerabilities for a horizon of 24 months, and we evaluated their performance based on their goodness-of-fit, as well as on their Mean Absolute Error (MAE) and Root Mean Square Error (RMSE) when applied to previously unseen data. The results of the analysis are depicted in the figure below.</p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-10774 size-full" src="https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-2.png" alt="" width="996" height="666" srcset="https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-2.png 996w, https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-2-300x201.png 300w, https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-2-768x514.png 768w" sizes="(max-width: 996px) 100vw, 996px" />Figure 2: The Mean Absolute Error (MAE) of the best statistical and deep learning models of each studied software application</p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-10771 size-full" src="https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-3.png" alt="" width="984" height="693" srcset="https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-3.png 984w, https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-3-300x211.png 300w, https://iotac.eu/wp-content/uploads/2022/12/Miltiadis-blog-7-fig-3-768x541.png 768w" sizes="(max-width: 984px) 100vw, 984px" />Figure 3: The Root Mean Square Error (RMSE) of the best statistical and deep learning models of each studied software application</p>
<p>As can be seen from the figures above, the DL models demonstrate slightly better predictive performance compared to the statistical models in terms of their MAE and RMSE in all five studied projects. However, after applying hypothesis testing, we figured out that this difference is not observed to be statistically significant. Hence, based on the above analysis, we can state that both DL and statistical models demonstrate almost similar predictive performance. In addition to this, another interesting observation is that it seems that the capacity of the models to provide sufficient predictive performance seems to depend on the project itself rather than on the type of the selected forecasting models. More details about our work can be found in the associated published <u><a href="https://www.mdpi.com/2079-9292/11/18/2820">paper</a></u>.</p>
<p>The post <a href="https://iotac.eu/forecasting-the-evolution-of-software-vulnerabilities/">Forecasting the evolution of software vulnerabilities</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://iotac.eu/forecasting-the-evolution-of-software-vulnerabilities/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Software Security Requirements Verification and Validation</title>
		<link>https://iotac.eu/software-security-requirements-verification-and-validation/</link>
					<comments>https://iotac.eu/software-security-requirements-verification-and-validation/#respond</comments>
		
		<dc:creator><![CDATA[Miltiadis Siavvas, Centre for Research &#38; Technology – Hellas]]></dc:creator>
		<pubDate>Thu, 17 Nov 2022 20:58:44 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[IoT architecture]]></category>
		<category><![CDATA[IoT security]]></category>
		<category><![CDATA[security by design]]></category>
		<guid isPermaLink="false">https://iotac.eu/?p=10720</guid>

					<description><![CDATA[<p>As discussed in one of my previous blog posts[1], although most of the software vulnerabilities stem from a small number of common programming errors that are introduced by the developers during the Coding phase of the software development lifecycle (SDLC), a significant portion of the security vulnerabilities are also introduced...</p>
<p>The post <a href="https://iotac.eu/software-security-requirements-verification-and-validation/">Software Security Requirements Verification and Validation</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>As discussed in one of my previous blog posts<a href="#_ftn1" name="_ftnref1"><sup>[1]</sup></a>, although most of the software vulnerabilities stem from a small number of common programming errors that are introduced by the developers during the Coding phase of the software development lifecycle (SDLC), a significant portion of the security vulnerabilities are also introduced during the Design and Requirement phases, mainly due to incorrect, vague, or missing security requirements. Although having appropriate tooling that enables the specification of security requirements in a uniform, concrete (i.e., well-structured), and clear way is necessary, it is not enough for ensuring that no security issues will be introduced. Even when security requirements are clearly defined and misinterpretations are avoided, they may be inherently incorrect (i.e., they may define a security criterion in a wrong or incomplete way) or they may imply additional security requirements to be covered by the system, which may have been unconsciously or deliberately omitted during the requirements specification phase. For instance, there may be a well-structured security requirement that may state that a specific cryptographic algorithm (e.g., DES or AES) should be used by the system for data exchange, but it may not provide any specification about the length of the cryptographic key, or the priority of the requirement may be different than the one required. In another example, the software engineer may have defined that “a user must be authorized before accessing an application or data” as a security requirement, without defining a dedicated security requirement about authentication, which may be considered implied. However, this may cause confusion during the development, as the developers will not know what type of authentication to implement in the system.</p>
<p>These issues manifest themselves as actual vulnerabilities in the source code of the software system during the Coding phase, unless they are detected and mitigated promptly.  Moreover, these types of vulnerabilities are more difficult and expensive to be fixed later on, as they require the software engineers to revisit the original requirements and make changes to the design and source code of the underlying system in order to be in line with the new specifications. This results in an increasing need for extensive refactorings to the existing code base, but also in potential corruptions of previously secure code, which in turn introduces new bugs and vulnerabilities<a href="#_ftn2" name="_ftnref2"><sup>[2]</sup></a>. Hence, there is a need for methods and mechanisms able to verify and validate the correctness and the completeness of security requirements defined by stakeholders (e.g., software engineers, security experts, etc.) upon their definition and propose potential recommendations for corrections/improvements, in order to help software engineers identify and eliminate potential inconsistencies early enough during the overall SDLC, when their correction is relatively cheap and easy.</p>
<p>In order to address the aforementioned issues, within the context of the IoTAC project, and as part of our Software Security by Design (SSD) platform, we designed and developed the Software Security Requirements Verification and Validation (SSRVV) mechanism, whose purpose is to verify and validate the correctness and the completeness of the security requirements that are defined by the user and provide recommendations for their improvement. In particular, the novel security requirement evaluation mechanism that has been developed (i) compares a given security requirement to a curated list of well-defined security requirements (normally retrieved from international standards and other projects) based on similarity checks, (ii) identifies inconsistencies, and (iii) proposes refinements<a href="#_ftn3" name="_ftnref3"><sup>[3]</sup></a>. The high-level overview of the aforementioned mechanism is depicted in the figure below.</p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-10717 size-full" src="https://iotac.eu/wp-content/uploads/2022/11/Sec-req-verific-and-valid.png" alt="" width="2048" height="751" srcset="https://iotac.eu/wp-content/uploads/2022/11/Sec-req-verific-and-valid.png 2048w, https://iotac.eu/wp-content/uploads/2022/11/Sec-req-verific-and-valid-300x110.png 300w, https://iotac.eu/wp-content/uploads/2022/11/Sec-req-verific-and-valid-1024x376.png 1024w, https://iotac.eu/wp-content/uploads/2022/11/Sec-req-verific-and-valid-768x282.png 768w, https://iotac.eu/wp-content/uploads/2022/11/Sec-req-verific-and-valid-1536x563.png 1536w" sizes="(max-width: 2048px) 100vw, 2048px" /></p>
<p>As can be seen by the figure above, the mechanism receives as input the Ontology instances of a security requirement that requires evaluation. In fact, the Ontology instances, which are the main requirement-specific semantic concepts (e.g., Action, Actor, Object, etc.) are produced by the Software Security Requirements Specification (SSRS) mechanism of the SSD platform, which was described in one of my previous posts<a href="#_ftn4" name="_ftnref4"><sup>[4]</sup></a>. Subsequently, those instances are compared to the ontology instances of the carefully curated list of security requirements that are stored in the Software Security Requirements Knowledgebase. In particular, similarity checks are performed between the user-defined requirement and those of the curated list, utilizing popular Natural Language Processing (NLP) toolkits (e.g., WordNet with NLTK<a href="#_ftn5" name="_ftnref5"><sup>[5]</sup></a>). Based on the value of the similarity score reported by the similarity checks, several recommendations for improvement are provided. These recommendations include: (i) rephrasing the analyzed security requirement based on a highly similar requirement found in the curated list, (ii) inclusion of additional security requirements that are observed to be closely related to the analyzed requirement, and (iii) changing the priority of the analyzed security requirement based on the priority that is set to similar requirements in the curated list. Hence, the proposed mechanism helps software engineers improve the correctness and completeness of the list of security requirements that they define for a specific software project.</p>
<p><a href="#_ftnref1" name="_ftn1"><sup>[1]</sup></a> <a href="https://iotac.eu/software-security-requirements-specification/">https://iotac.eu/software-security-requirements-specification/</a></p>
<p><a href="#_ftnref2" name="_ftn2"><sup>[2]</sup></a> <u><a href="https://ieeexplore.ieee.org/document/7819389">https://ieeexplore.ieee.org/document/7819389</a></u></p>
<p><a href="#_ftnref3" name="_ftn3"><sup>[3]</sup></a> <u><a href="https://ieeexplore.ieee.org/document/9742019/">https://ieeexplore.ieee.org/document/9742019/</a></u></p>
<p><a href="#_ftnref4" name="_ftn4"><sup>[4]</sup></a> <a href="https://iotac.eu/software-security-requirements-specification/">https://iotac.eu/software-security-requirements-specification/</a></p>
<p><a href="#_ftnref5" name="_ftn5"><sup>[5]</sup></a> <u><a href="https://www.nltk.org/">https://www.nltk.org/</a></u></p>
<p>The post <a href="https://iotac.eu/software-security-requirements-verification-and-validation/">Software Security Requirements Verification and Validation</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://iotac.eu/software-security-requirements-verification-and-validation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Software Security Requirements Specification</title>
		<link>https://iotac.eu/software-security-requirements-specification/</link>
					<comments>https://iotac.eu/software-security-requirements-specification/#respond</comments>
		
		<dc:creator><![CDATA[Miltiadis Siavvas, Centre for Research &#38; Technology – Hellas]]></dc:creator>
		<pubDate>Fri, 04 Nov 2022 17:02:15 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[IoT architecture]]></category>
		<category><![CDATA[IoT security]]></category>
		<category><![CDATA[security by design]]></category>
		<guid isPermaLink="false">https://iotac.eu/?p=10654</guid>

					<description><![CDATA[<p>A significant number of vulnerabilities that exist in software systems are introduced during the Requirements and Design phases of the Software Development Lifecycle (SDLC) mainly due to incorrect or vague security requirements[1]. In fact, the incorrect or vague security requirements, which are also known as design flaws, manifest themselves as...</p>
<p>The post <a href="https://iotac.eu/software-security-requirements-specification/">Software Security Requirements Specification</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>A significant number of vulnerabilities that exist in software systems are introduced during the Requirements and Design phases of the Software Development Lifecycle (SDLC) mainly due to incorrect or vague security requirements<a href="#_ftn1" name="_ftnref1"><sup>[1]</sup></a>. In fact, the incorrect or vague security requirements, which are also known as <em>design flaws</em>, manifest themselves as actual vulnerabilities in the source code of the software system, if they are not promptly identified and fixed. Hence, there is a need for methods and tools that will enable the definition of software security requirements in a uniform, clear, and concrete way, in order to avoid mistakes and misinterpretations later on during the SDLC. Although some research endeavors have been dedicated towards this direction, their vast majority focused on introducing theoretical methodologies, reusable templates, and formal languages, which, despite their undeniable contribution to facilitating the correct specification of security requirements, they are difficult to learn and tedious to use, rendering them less adopted in practice. In fact, very limited work has been dedicated in the literature to facilitating the automatic elicitation and formal specification of security requirements, especially from requirement documents expressed in natural language, which is the format in which requirements are usually expressed in practice.</p>
<p>In order to address the aforementioned issues, within the context of the IoTAC project, and as part of our Software Security by Design (SSD) platform we propose a novel Software Security Requirements Specification (SSRS) mechanism, able to automatically identify the main concepts of a given set of security requirements expressed in natural language by applying syntactic and semantic analysis, and subsequently turn them into more well-structured form, i.e., ontology objects. The purpose of the SSRS component is to help software engineers formally specify security requirements in a well-defined and structured way, without having to utilize tedious templates or learn complex formal specification languages. The high-level overview of the SSRS component is illustrated in the following figure.</p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-10648 size-full" src="https://iotac.eu/wp-content/uploads/2022/11/SSW-Sec-Req-Spec-Mechanism.png" alt="" width="2048" height="877" srcset="https://iotac.eu/wp-content/uploads/2022/11/SSW-Sec-Req-Spec-Mechanism.png 2048w, https://iotac.eu/wp-content/uploads/2022/11/SSW-Sec-Req-Spec-Mechanism-300x128.png 300w, https://iotac.eu/wp-content/uploads/2022/11/SSW-Sec-Req-Spec-Mechanism-1024x439.png 1024w, https://iotac.eu/wp-content/uploads/2022/11/SSW-Sec-Req-Spec-Mechanism-768x329.png 768w, https://iotac.eu/wp-content/uploads/2022/11/SSW-Sec-Req-Spec-Mechanism-1536x658.png 1536w" sizes="(max-width: 2048px) 100vw, 2048px" /></p>
<p>As can be seen by the figure above, the proposed mechanism receives as input security requirements expressed in natural language (i.e., pure text). Then the textual security requirements are processed, through a process that consists of two main steps, namely the <em>Syntactic Analysis</em>, which identifies the main grammatical terms (e.g., noun, verb, etc.) of the processed requirement along with their grammatical relationships (e.g., subject-verb-object, etc.), and the <em>Semantic Analysis</em>, which identifies the main semantic concepts (e.g., Action, Actor, Object, etc.) of the requirement along with their semantic relations.</p>
<p>The <em>Syntactic Analysis</em> step receives as input the requirement expressed in natural language and applies tokenization in order to split the sentence into word tokens, as well as lemmatization in order to derive the uninflected form of each word token. Subsequently, it applies part-of-speech tagging, in order to identify the grammatical category of each word and dependency parsing to determine the grammatical relations between them. For the above procedure, the Mate Tools<a href="#_ftn2" name="_ftnref2"><sup>[2]</sup></a> were utilized, which are well-known tools for performing syntactic analysis.</p>
<p>In the next step, the results of the <em>Syntactic Analysis </em>step, and particularly the identified grammatical terms and relations, are provided as input to the <em>Semantic Analysis</em> mechanism, in order to be mapped to semantic terms and semantic relationships. Initially, a semantic role labeling process is performed to assign labels to words or phrases that indicate their semantic concept in the sentence, using the semantic role labeler provided by the Mate tools. However, since this semantic role labeler is able to detect only generic thematical concepts and relations (e.g., acceptor, property, etc.),  it has been extended in order to also detect the main requirement-specific concepts (i.e., Actor, Action, etc.), based on a set of custom rules. In brief, as can be seen by the figure with the overview of the SSRS component above, initially the Priority and the Action of the requirement are identified. Subsequently, for each Action, the associated Actor and Object are identified. Finally, for each identified Object, several Properties (e.g., requirement prerequisites, etc.) are detected and reported.</p>
<p>All the identified requirement concepts are stored in a dedicated Ontology, the <em>Security Requirements Knowledge Base</em>. The schema of the aforementioned ontology is illustrated in the following Figure.</p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-10651 size-full" src="https://iotac.eu/wp-content/uploads/2022/11/Ontology.png" alt="" width="2048" height="1357" srcset="https://iotac.eu/wp-content/uploads/2022/11/Ontology.png 2048w, https://iotac.eu/wp-content/uploads/2022/11/Ontology-300x199.png 300w, https://iotac.eu/wp-content/uploads/2022/11/Ontology-1024x679.png 1024w, https://iotac.eu/wp-content/uploads/2022/11/Ontology-768x509.png 768w, https://iotac.eu/wp-content/uploads/2022/11/Ontology-1536x1018.png 1536w" sizes="(max-width: 2048px) 100vw, 2048px" /></p>
<p>As can be seen by this figure, the ontology captures the main concepts of a security requirement along with their relationships. The ontology is an important element of the SSD Platform, as it forms the reference point for the verification and validation of user-defined security requirements, as well as of the requirement adherence check mechanism that will be developed. It should be noted that the ontology along with the security requirements that will be collected throughout the project will be made publicly available in order to facilitate future research.</p>
<p><a href="#_ftnref1" name="_ftn1"><sup>[1]</sup></a> G. McGraw, “Software security,” IEEE Security &amp; Privacy, 2004<br />
<a href="#_ftnref2" name="_ftn2"><sup>[2]</sup></a> <u><a href="https://code.google.com/archive/p/mate-tools/">https://code.google.com/archive/p/mate-tools/</a></u></p>
<p>The post <a href="https://iotac.eu/software-security-requirements-specification/">Software Security Requirements Specification</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://iotac.eu/software-security-requirements-specification/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>IoTAC Software Security Evaluation Framework</title>
		<link>https://iotac.eu/iotac-software-security-evaluation-framework/</link>
					<comments>https://iotac.eu/iotac-software-security-evaluation-framework/#respond</comments>
		
		<dc:creator><![CDATA[Miltiadis Siavvas, Centre for Research &#38; Technology – Hellas]]></dc:creator>
		<pubDate>Fri, 29 Jul 2022 07:19:29 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[IoT architecture]]></category>
		<category><![CDATA[IoT security]]></category>
		<category><![CDATA[security by design]]></category>
		<guid isPermaLink="false">https://iotac.eu/?p=9963</guid>

					<description><![CDATA[<p>Quantitative Security Assessment based on Static Analysis Software security was traditionally treated as an afterthought in the overall development cycle of software products, being introduced after the software product was implemented (or even used) mainly through the inclusion of external protection mechanisms (e.g., intrusion detection and prevention techniques). According to...</p>
<p>The post <a href="https://iotac.eu/iotac-software-security-evaluation-framework/">IoTAC Software Security Evaluation Framework</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></description>
										<content:encoded><![CDATA[<ol>
<li><strong>Quantitative Security Assessment based on Static Analysis </strong></li>
</ol>
<p>Software security was traditionally treated as an afterthought in the overall development cycle of software products, being introduced after the software product was implemented (or even used) mainly through the inclusion of external protection mechanisms (e.g., intrusion detection and prevention techniques). According to this approach, software was developed without security in mind, leading to potential introduction of security vulnerabilities, whereas the purpose of the external mechanisms was to prevent malicious individuals from exploiting any of the vulnerabilities that the product may contain. However, the increasing number of successful breaches that is observed lately<a href="#_edn1" name="_ednref1">[i]</a>, along with the devastating consequences that they have caused (e.g., Equifax Breach, Heartbleed, etc.) has led more and more software industries to shift their focus from those reactive techniques to more proactive approaches towards strengthening the security of their software products. In fact, the goal is to produce software that is as vulnerability-free as possible from the ground up, reducing, in that way, the potential exploitation points that can be utilized by an attacker, in case that the external protection mechanisms fail to prevent them from accessing the system.</p>
<p>The vast majority of the vulnerabilities that a software product contains stem from a small number of common programming errors, which are introduced by the developers during the coding phase, mainly due to their lack of security expertise and the accelerated production cycles that do not allow them to focus on the quality of the code they produce. Hence, appropriate tools are required to encapsulate the required security expertise and to help developers and testers detect and fix potential vulnerabilities early enough in the overall development cycle (i.e., preferable prior to the release of the software). One such mechanism is static analysis, which is a testing technique that allows the identification of potential issues (including security weaknesses) that reside in the source code of a software application, without requiring its execution. In fact, static analysis is considered one of the most effective mechanisms for detecting potential vulnerabilities that reside in the source code, and its adoption is highly recommended by well-known Secure Software Development Lifecycles (SSDLCs), including Microsoft’s SDL<a href="#_edn2" name="_ednref2">[ii]</a>, OWASP’s OpenSAAM<a href="#_edn3" name="_ednref3">[iii]</a>, and Cigital’s Touchpoints<a href="#_edn4" name="_ednref4">[iv]</a>. According to the BSIMM initiative<a href="#_edn5" name="_ednref5">[v]</a>, static analysis is one of the main security activities that major technological firms such as Google, Microsoft, Adobe, and Intel use.</p>
<p>Static analysis provides important security-related information that could potentially be leveraged for measuring the security level of a given software application. In fact, being able to measure the security level of a software product under development frequently during its development cycle is very important for improving its security, since it is a common belief that “you cannot control something you cannot measure”. Hence, quantitative security indicators are crucial for the development of secure software. To this end, several models and mechanisms have been proposed recently in the literature that attempt to provide high-level quantitative security indicators (i.e., measures) that reflect important security aspects of a software application, by aggregating the low-level results produced by static analysis. The low-level warnings generated by static code analyzers, as well as the high-level measures derived from their sophisticated aggregation, are expected to aid the development of more secure software, as they can significantly aid decision making during the overall development.</p>
<p>To that end, one of the goals of the IoTAC project through its Software Security-by-Design (SSD) Platform is to provide a framework for monitoring and improving the security of software applications through static analysis that is properly configured to detect security issues. Most importantly, it aims to provide security evaluation models dedicated for IoT Software applications, which will leverage the outputs of the security-specific static analysis framework, as well as the expertise of security and IoT experts, in order to produce high-level measures that quantify important security aspects of IoT Software.</p>
<ol start="2">
<li><strong>IoTAC Software Security Evaluation Framework</strong></li>
</ol>
<p>Within the context of the IoTAC project, as part of the SSD Platform, we developed the Security Evaluation Framework (SEF), which is a mechanism that evaluates the security level of the source code of a given IoT software application in a quantitative manner, based on the results of security-specific static analysis. More specifically, SEF (i) integrates popular static code analyzers (e.g., SonarQube<a href="#_edn6" name="_ednref6">[vi]</a>) that are properly configured to detect important security issues, and (ii) enables the calculation of high-level security measures by aggregating the low-level results of the security-specific static analysis. The high-level security measures are more intuitive and easily understandable (compared to the raw static analysis results) even by stakeholders with little or no technical knowledge, such as project managers, facilitating in that way decision making during the overall development of the software application. The high-level overview of SEF is illustrated in the Figure 1 below:</p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-9966 size-full" src="https://iotac.eu/wp-content/uploads/2022/07/Software-Security-Evaluation-Framework.png" alt="" width="1630" height="721" srcset="https://iotac.eu/wp-content/uploads/2022/07/Software-Security-Evaluation-Framework.png 1630w, https://iotac.eu/wp-content/uploads/2022/07/Software-Security-Evaluation-Framework-300x133.png 300w, https://iotac.eu/wp-content/uploads/2022/07/Software-Security-Evaluation-Framework-1024x453.png 1024w, https://iotac.eu/wp-content/uploads/2022/07/Software-Security-Evaluation-Framework-768x340.png 768w, https://iotac.eu/wp-content/uploads/2022/07/Software-Security-Evaluation-Framework-1536x679.png 1536w" sizes="(max-width: 1630px) 100vw, 1630px" /></p>
<p style="text-align: center;"><em>Figure 1: The high-level overview of the Security Evaluation Framework (SEF) of the IoTAC project</em></p>
<p>As can be seen by Figure 1, SEF receives as input a software product that needs to be analyzed with respect to its security. Then, it employs static analysis in order to detect potential security issues (i.e., security-related static analysis alerts) that may reside in the software. This is achieved mainly via the SonarQube platform, which is a popular static analysis platform, through its internal security profiles. Several popular open-source static code analyzers are utilized, including PMD<a href="#_edn7" name="_ednref7">[vii]</a>, CppCheck<a href="#_edn8" name="_ednref8">[viii]</a>, and FindBugs<a href="#_edn9" name="_ednref9">[ix]</a>, which are integrated into the Sonar Qube platform through dedicated plugins. Both the internal security profiles of SonarQube and the external static code analyzers are properly configured in order to detect important security issues (i.e., potential vulnerabilities) (e.g., SQL Injection, Cross-site Scripting, Memory Leaks, Weak Cryptography, etc.). Subsequently, the low-level static analysis alerts are fed to the Security Measures Computation mechanism, which aggregates them in order to compute the high-level security measures. IoT-specific security models are utilized (which leverage concepts from state-of-the-art security<a href="#_edn10" name="_ednref10">[x]</a> and quality models<a href="#_edn11" name="_ednref11">[xi]</a>) in order to determine (i) the high-level security measures that should be computed, and (ii) which low-level static analysis results should be aggregated (and in what way) in order to quantify those security measures. The output of SEF is a report containing the detailed results of the analysis, and particularly: (i) the calculated high-level security measures, and (ii) the low-level static analysis alerts that were utilized for computing those measures. Based on this report, project managers and developers can better plan their testing and refactoring activities in order to produce more secure software.</p>
<p>&nbsp;</p>
<p><a href="#_ednref1" name="_edn1">[i]</a> <a href="https://www.comparitech.com/blog/information-security/cybersecurity-vulnerability-statistics/">https://www.comparitech.com/blog/information-security/cybersecurity-vulnerability-statistics/</a></p>
<p><a href="#_ednref2" name="_edn2">[ii]</a> <a href="https://www.microsoft.com/en-us/securityengineering/sdl">https://www.microsoft.com/en-us/securityengineering/sdl</a></p>
<p><a href="#_ednref3" name="_edn3">[iii]</a> <a href="https://www.opensamm.org/">https://www.opensamm.org/</a></p>
<p><a href="#_ednref4" name="_edn4">[iv]</a> <a href="http://swsec.com/resources/touchpoints/">http://swsec.com/resources/touchpoints/</a></p>
<p><a href="#_ednref5" name="_edn5">[v]</a> <a href="https://www.bsimm.com/">https://www.bsimm.com/</a></p>
<p><a href="#_ednref6" name="_edn6">[vi]</a> <a href="https://www.sonarqube.org">https://www.sonarqube.org</a></p>
<p><a href="#_ednref7" name="_edn7">[vii]</a> <a href="https://pmd.github.io/">https://pmd.github.io/</a></p>
<p><a href="#_ednref8" name="_edn8">[viii]</a> <a href="https://cppcheck.sourceforge.io/">https://cppcheck.sourceforge.io/</a></p>
<p><a href="#_ednref9" name="_edn9">[ix]</a> <a href="http://findbugs.sourceforge.net/">http://findbugs.sourceforge.net/</a></p>
<p><a href="#_ednref10" name="_edn10">[x]</a> <a href="https://link.springer.com/article/10.1007/s11219-021-09555-0">https://link.springer.com/article/10.1007/s11219-021-09555-0</a></p>
<p><a href="#_ednref11" name="_edn11">[xi]</a> <a href="https://www.sciencedirect.com/science/article/abs/pii/S0957417417303883">https://www.sciencedirect.com/science/article/abs/pii/S0957417417303883</a></p>
<p>The post <a href="https://iotac.eu/iotac-software-security-evaluation-framework/">IoTAC Software Security Evaluation Framework</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://iotac.eu/iotac-software-security-evaluation-framework/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Vulnerability prediction based on Natural Language Processing Techniques</title>
		<link>https://iotac.eu/vulnerability-prediction-based-on-natural-language-processing-techniques/</link>
					<comments>https://iotac.eu/vulnerability-prediction-based-on-natural-language-processing-techniques/#respond</comments>
		
		<dc:creator><![CDATA[Miltiadis Siavvas, Centre for Research &#38; Technology – Hellas]]></dc:creator>
		<pubDate>Fri, 25 Feb 2022 12:09:45 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[IoT architecture]]></category>
		<category><![CDATA[IoT security]]></category>
		<category><![CDATA[security by design]]></category>
		<guid isPermaLink="false">https://iotac.eu/?p=9101</guid>

					<description><![CDATA[<p>1. Vulnerability Prediction &#8211; Importance and Challenges Vulnerability prediction is responsible for the identification of security hotspots, i.e., software components (e.g., classes) that are likely to contain critical vulnerabilities. For the identification of potentially vulnerable software components, vulnerability prediction models (VPM) are constructed, which are mainly machine learning models that...</p>
<p>The post <a href="https://iotac.eu/vulnerability-prediction-based-on-natural-language-processing-techniques/">Vulnerability prediction based on Natural Language Processing Techniques</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="padding-left: 40px;"><strong>1. </strong><strong>Vulnerability Prediction &#8211; Importance and Challenges</strong></p>
<p>Vulnerability prediction is responsible for the identification of security hotspots, i.e., software components (e.g., classes) that are likely to contain critical vulnerabilities. For the identification of potentially vulnerable software components, vulnerability prediction models (VPM) are constructed, which are mainly machine learning models that are built based on software attributes retrieved primarily from the source code of the analyzed software (e.g., software metrics, text features, etc.). The results of the vulnerability prediction models are highly useful for developers and project managers, as they allow them to better prioritize their testing and fortification efforts by allocating limited test resources to high-risk (i.e., potentially vulnerable) areas.</p>
<p>Text mining-based VPMs have demonstrated the most promising results in the related literature [1]. The first attempts in the field of text mining vulnerability prediction focused on the concept of Bag-of-Words (BoW) as a method for predicting software vulnerabilities using text terms and their respective appearance frequencies in the source code. Researchers have recently shifted their focus from simple BoW to more complex approaches, investigating whether more complex textual patterns in source code can lead to more accurate vulnerability prediction. In particular, a common approach that is adopted recently is the transformation of the source code into <em>word token sequences</em> and their utilization of deep neural networks capable of learning data sequences (e.g., Recurrent Neural Networks).</p>
<p>Since neural networks operate on numerical data, the token sequences need to be properly transformed. In the literature, word embedding vectors are widely used for this purpose. Word embedding refers to the representation of words for text analysis, which is typically in the form of a real-valued vector that encodes the meaning of the word in such a way that words that are close in the vector space are expected to have similar meanings. Existing VPMs follow mainly two different approaches for embedding the tokens into vectors, either by training the embedding layer alongside the vulnerability predictor, or by using an external word embedding algorithm (e.g., word2vec) to generate the vector representations of the tokens and use the produced embeddings as input to the vulnerability predictor (which is trained separately). Although both approaches have their merits, limited focus has been given on comparing them with respect to their ability to lead to accurate vulnerability predictions.</p>
<p>The aim of the research is to demonstrate the value of sophisticated embedding algorithms (e.g., word2vec, fast-text) in text mining-based vulnerability prediction by showcasing their contribution to the effectiveness and efficiency of the VPMs and comparing them to the use of a trainable embedding layer that updates its values during VP classifier training.</p>
<p style="padding-left: 40px;"><strong>2. IoTAC Vulnerability Prediction Models</strong></p>
<p>Within the context of the IoTAC project, as part of the Software Security-by-Design (SSD) Platform, we developed vulnerability prediction models based on deep learning, utilizing as input the sequences of word tokens that reside in the source code of the component, and word embedding vectors for their effective representation. We have focused both on utilizing a trainable embedding layer and external word embedding algorithms, in an attempt to evaluate which of the two option leads to better predictive performance. A high-level overview of the proposed models is illustrated in the figure below.</p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-9100 size-large" src="https://iotac.eu/wp-content/uploads/2022/02/Vulnerability-Pred-Model-1024x323.png" alt="" width="1024" height="323" srcset="https://iotac.eu/wp-content/uploads/2022/02/Vulnerability-Pred-Model-1024x323.png 1024w, https://iotac.eu/wp-content/uploads/2022/02/Vulnerability-Pred-Model-300x94.png 300w, https://iotac.eu/wp-content/uploads/2022/02/Vulnerability-Pred-Model-768x242.png 768w, https://iotac.eu/wp-content/uploads/2022/02/Vulnerability-Pred-Model.png 1397w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p style="text-align: center;"><em>Figure 1 &#8211; The high-level overview of the Vulnerability Prediction Models of the IoTAC project</em></p>
<p>As illustrated in the figure above, the source code of a software component is provided as input to the model and, subsequently, text tokenization is applied in order to extract the word tokens and construct their corresponding sequence. Then, the token sequences are transformed into numerical vector, through the utilization of word embedding. The derived word embedding vectors constitute the word embedding layer, i.e., the input layer of the DNN, which is the core element of the model. As already stated, for constructing the models, we consider both internal word embeddings (i.e., a word embedding layer that is trained along with the prediction model) and two popular word embedding algorithms to generate the word embedding vectors, namely word2vec<a href="#_ftn1" name="_ftnref1">[1]</a> and fast-text<a href="#_ftn2" name="_ftnref2">[2]</a>.</p>
<p>The output of the model is a <em>vulnerability flag</em> (i.e., a binary value between 0 and 1) indicating whether the given component is potentially vulnerable (i.e., 1) or not (i.e., 0), and a <em>vulnerability score</em> (i.e., a continuous value within the [0,1] interval) denoting how likely it is for the component to be vulnerable. The developers can utilize the output of these models for prioritizing their testing and fortification efforts. For instance, the software components can be ranked based on their <em>vulnerability score</em> and the refactoring activities can start from those components that are more likely to contain vulnerabilities.</p>
<p>The evaluation results led to some interesting conclusions regarding the effectiveness of word embeddings in vulnerability prediction. As can be seen by the figure below, all the models that are built utilizing <em>word token sequences</em> are in general effective in predicting the existence of vulnerabilities in software. In addition to this, the utilization of external word embedding algorithms and specifically of the word2vec leads to better predictive performance, indicating that the utilization of external word embeddings may be a more promising solution for vulnerability prediction.</p>
<p><a href="#_ftnref1" name="_ftn1"><img decoding="async" loading="lazy" class="aligncenter wp-image-9099 size-full" src="https://iotac.eu/wp-content/uploads/2022/02/Vulnerability-Pred-Model-table.png" alt="" width="1015" height="284" srcset="https://iotac.eu/wp-content/uploads/2022/02/Vulnerability-Pred-Model-table.png 1015w, https://iotac.eu/wp-content/uploads/2022/02/Vulnerability-Pred-Model-table-300x84.png 300w, https://iotac.eu/wp-content/uploads/2022/02/Vulnerability-Pred-Model-table-768x215.png 768w" sizes="(max-width: 1015px) 100vw, 1015px" /></a></p>
<p style="text-align: center;"><em>Figure 2 &#8211; Evaluation results of the text mining-based Vulnerability Prediction Models using “internal” and “external” embedding vectors</em></p>
<p>More information about the work presented in this blog post, including information about the construction of the machine learning models and the evaluation results, can be found in a recent publication that is available <a href="https://www.researchgate.net/publication/355475542_An_Empirical_Evaluation_of_the_Usefulness_of_Word_Embedding_Techniques_in_Deep_Learning-based_Vulnerability_Prediction">here</a>. More information about the SSD Platform can be found in our previous <a href="https://iotac.eu/the-iotac-software-security-by-design-ssd-platform-concept-and-preliminary-overview/">post</a>.</p>
<p><a href="#_ftnref1" name="_ftn1">[1]</a> <a href="https://radimrehurek.com/gensim/models/word2vec.html">https://radimrehurek.com/gensim/models/word2vec.html</a><br />
<a href="#_ftnref2" name="_ftn2">[2]</a> <a href="https://radimrehurek.com/gensim/models/fasttext.html">https://radimrehurek.com/gensim/models/fasttext.html</a></p>
<p>References<br />
[1] S. Chakraborty, R. Krishna, Y. Ding, and B. Ray, “Deep learning based vulnerability detection: Are we there yet,” IEEE Transactions on Software Engineering, 2021.</p>
<p>The post <a href="https://iotac.eu/vulnerability-prediction-based-on-natural-language-processing-techniques/">Vulnerability prediction based on Natural Language Processing Techniques</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://iotac.eu/vulnerability-prediction-based-on-natural-language-processing-techniques/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The IoTAC Software Security Static Analysis Alerts Assessor</title>
		<link>https://iotac.eu/the-iotac-software-security-static-analysis-alerts-assessor/</link>
					<comments>https://iotac.eu/the-iotac-software-security-static-analysis-alerts-assessor/#respond</comments>
		
		<dc:creator><![CDATA[Miltiadis Siavvas, Centre for Research &#38; Technology – Hellas]]></dc:creator>
		<pubDate>Fri, 28 Jan 2022 09:11:52 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[IoT architecture]]></category>
		<category><![CDATA[IoT security]]></category>
		<category><![CDATA[security by design]]></category>
		<guid isPermaLink="false">https://iotac.eu/?p=8983</guid>

					<description><![CDATA[<p>1. Static Analysis and Software Security &#8211; Importance and Challenges A software vulnerability is defined as a weakness in the specification, development, or configuration of software such that its exploitation can violate a security policy. The exploitation of a single vulnerability can have far-reaching consequences both for the user and...</p>
<p>The post <a href="https://iotac.eu/the-iotac-software-security-static-analysis-alerts-assessor/">The IoTAC Software Security Static Analysis Alerts Assessor</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="padding-left: 40px;"><strong>1. Static Analysis and Software Security &#8211; Importance and Challenges</strong></p>
<p>A software vulnerability is defined as a weakness in the specification, development, or configuration of software such that its exploitation can violate a security policy. The exploitation of a single vulnerability can have far-reaching consequences both for the user and for the owning enterprise of the compromised software, including financial losses and reputation damages. For instance, Equifax Breach (CVE-2017-56381) allowed criminals to expose the personal data of more than 143 million Equifax customers, leading to a total cost of $1.35 billion according to the company’s financial results of the first quarter of 2019. In fact, critical security breaches, including Equifax Breach and Heartbleed (CVE-2014-0160) were caused by flaws that resided in the source code and could have been avoided if these flaws were detected and eliminated in the first place. Hence, in order to avoid potential damages, software development enterprises are seeking mechanisms able to assist the identification and elimination of vulnerabilities as early in the development cycle as possible.</p>
<p>One such mechanism is static analysis, which is a white-box testing technique that searches for potential software bugs (including vulnerabilities) in software products by analyzing their source code without requiring its execution. Automatic static analysis (ASA) is considered an important technique for adding security during the software development process. This belief is expressed by several experts in the field of software security (e.g., Gary McGraw, Brian Chess, and Michael Howard), while almost all the well-established secure software development lifecycles (SDLCs), including the well-known Microsoft’s SDL<a href="#_ftn1" name="_ftnref1">[1]</a>, OWASP’s OpenSAAM<a href="#_ftn2" name="_ftnref2">[2]</a>, and Cigital’s Touchpoints<a href="#_ftn3" name="_ftnref3">[3]</a>, propose the adoption of static analysis as the main mechanism for adding security during the coding phase of the SDLC. In addition, ASA is a security activity commonly adopted by major technology firms like Google, Microsoft, Adobe, and Intel, as reported by the BSIMM<a href="#_ftn4" name="_ftnref4">[4]</a> initiative.</p>
<p>Despite its effectiveness in detecting security vulnerabilities early enough in the development process, the practicality of ASA is hindered by the fact that it produces a large number of warnings (i.e., alerts) that need to be manually inspected by developers in order to decide which of those require immediate care. More specifically, ASA produces a large number of False Positives, i.e., alerts that do not correspond to actual issues, due to the approximations that ASA is obliged to make in order for the analysis to complete in a reasonable time, whereas even some of the actual issues that are reported by ASA (i.e., True Positives), may not be critical from a security viewpoint. Hence, there is a strong need for more accurate static code analyzers, or mechanisms able to post-process the results of static code analyzers and report those warnings that are more critical from a security viewpoint. Since building a flawless static code analyzer is considered an undecidable problem in the literature, researchers have shifted their focus towards the latter approach.</p>
<p style="padding-left: 40px;"><strong>2. IoTAC Security Alerts Criticality Assessor</strong></p>
<p>Within the context of the IoTAC project, in an attempt to address the aforementioned problem, we proposed a novel mechanism for assessing the criticality of security-related static analysis alerts. In particular, we developed a self-adaptive technique, the Security Alerts Criticality Assessor (SACA), for classifying and prioritizing security-related static analysis alerts based on their criticality, by considering information retrieved from (i) the alerts themselves, (ii) vulnerability prediction, and (iii) user feedback. The proposed technique is based on machine learning models, particularly on neural networks, which were built using data retrieved from static analysis reports of real-world software applications. The high-level overview of the tool is presented in the following Figure.</p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-8982 size-large" src="https://iotac.eu/wp-content/uploads/2022/01/SACA-mech-1024x425.png" alt="" width="1024" height="425" srcset="https://iotac.eu/wp-content/uploads/2022/01/SACA-mech-1024x425.png 1024w, https://iotac.eu/wp-content/uploads/2022/01/SACA-mech-300x124.png 300w, https://iotac.eu/wp-content/uploads/2022/01/SACA-mech-768x318.png 768w, https://iotac.eu/wp-content/uploads/2022/01/SACA-mech.png 1206w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p style="text-align: center;"><em>Figure 1: The high-level overview of the Security Alerts Criticality Assessment (SACA) mechanism</em></p>
<p>As can be seen in the figure above, a software project is provided as input to the system. Initially, security-specific static analysis is employed in order to retrieve the static analysis alerts that are relevant to the selected project. In addition to this, vulnerability prediction models are employed in order to compute the vulnerability scores of its software components, which reflect the likelihood of each component to contain vulnerabilities. Then, the alerts along with the vulnerability scores are provided as input to the Security Alerts Assessor (SAA), which is a neural network that assesses how critical each one of the alerts is from a security viewpoint. More specifically, for each one of the received alerts it reports (i) a criticality flag (i.e., a binary value between 0 and 1, with 1 denoting that the corresponding alert is considered critical and with 0 denoting that the alert is considered non-critical), and (ii) a criticality score (i.e., a continuous value in the [0,1] interval denoting how likely it is for the alert to be critical from a security viewpoint). Hence, the developer can filter out those alerts that are not marked as critical by the model, or rank the alerts based on their criticality score, starting by fixing those alerts that are more likely to correspond to critical vulnerabilities first, increasing, in that way, the probability of detecting and mitigating actual vulnerabilities.</p>
<p>As illustrated in the figure above, the user can also correct the outputs of the model, and the SAA can be retrained (on demand) based on the received user feedback. In that way, the SAA adapts to the specific characteristics of the software product to which it is applied and provides more accurate assessments for the selected product. This is important since the criticality of specific alerts (security weaknesses) also depends on the type of the product to which they belong. For instance, cross-site scripting (XSS) weaknesses may be important for web applications, but irrelevant for offline applications. Hence, the self-adaptiveness of the proposed approach enables it to fit the assessments to the needs of the corresponding software project to which it is applied.</p>
<p>The Security-related Alerts Assessor (SAA) is built as part of the Security Assurance Module of the Software Security-by-Design (SSD) Platform of the IoTAC Project. More information about the SAA, including information about the construction of the machine learning models and the evaluation results, can be found in a recent publication that is available <a href="https://link.springer.com/chapter/10.1007/978-3-030-87007-2_21">here</a>. More information about the SSD Platform can be found in our previous <a href="https://iotac.eu/the-iotac-software-security-by-design-ssd-platform-concept-and-preliminary-overview/">post</a>.</p>
<p><a href="#_ftnref1" name="_ftn1">[1]</a> <a href="https://www.microsoft.com/en-us/securityengineering/sdl">https://www.microsoft.com/en-us/securityengineering/sdl</a><br />
<a href="#_ftnref2" name="_ftn2">[2]</a> <a href="https://owasp.org/www-project-samm/">https://owasp.org/www-project-samm/</a><br />
<a href="#_ftnref3" name="_ftn3">[3]</a> <a href="http://www.swsec.com/resources/touchpoints/">http://www.swsec.com/resources/touchpoints/</a><br />
<a href="#_ftnref4" name="_ftn4">[4]</a> <a href="https://www.bsimm.com/">https://www.bsimm.com/</a></p>
<p>&nbsp;</p>
<p>The post <a href="https://iotac.eu/the-iotac-software-security-static-analysis-alerts-assessor/">The IoTAC Software Security Static Analysis Alerts Assessor</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://iotac.eu/the-iotac-software-security-static-analysis-alerts-assessor/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The IoTAC Software Security by Design (SSD) Platform &#8211; Concept and Preliminary Overview</title>
		<link>https://iotac.eu/the-iotac-software-security-by-design-ssd-platform-concept-and-preliminary-overview/</link>
					<comments>https://iotac.eu/the-iotac-software-security-by-design-ssd-platform-concept-and-preliminary-overview/#respond</comments>
		
		<dc:creator><![CDATA[Miltiadis Siavvas, Centre for Research &#38; Technology – Hellas]]></dc:creator>
		<pubDate>Thu, 27 May 2021 09:24:54 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[IoT architecture]]></category>
		<category><![CDATA[IoT security]]></category>
		<category><![CDATA[security by design]]></category>
		<guid isPermaLink="false">https://iotac.eu/?p=8080</guid>

					<description><![CDATA[<p>Software Security by Design The high interconnectivity that characterizes modern IoT Systems, along with the increasing accessibility of their devices through the Internet, renders their security an aspect of major concern for IoT users and providers. The importance of securing IoT Systems is further supported by the important security incidents...</p>
<p>The post <a href="https://iotac.eu/the-iotac-software-security-by-design-ssd-platform-concept-and-preliminary-overview/">The IoTAC Software Security by Design (SSD) Platform &#8211; Concept and Preliminary Overview</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></description>
										<content:encoded><![CDATA[<ol>
<li>Software Security by Design</li>
</ol>
<p>The high interconnectivity that characterizes modern IoT Systems, along with the increasing accessibility of their devices through the Internet, renders their security an aspect of major concern for IoT users and providers. The importance of securing IoT Systems is further supported by the important security incidents that have been reported in IoT Platforms recently (e.g., Mirai IoT botnet<a href="#_ftn1" name="_ftnref1"><sup>[1]</sup></a> <a href="#_ftn2" name="_ftnref2"><sup>[2]</sup></a>, Silex Malware<a href="#_ftn3" name="_ftnref3"><sup>[3]</sup></a>), which led to the infringement of critical security requirements, including privacy, integrity, and availability, as well as to important financial losses and reputation damages to the owning companies (i.e., IoT Providers).</p>
<p>An effective way of securing an IoT Platform is by securing its architecture, which can be achieved through conformance to International IoT Security Standards and the deployment of security countermeasures, such as intelligent attack detection, prevention, and mitigation mechanisms, security gateways, honeypots, etc. Apart from the IoT Architecture, in order to effectively secure an IoT System, the software that is running on the different nodes of an IoT System (or Platform) should be also considered. If this software contains vulnerabilities, the security of the overall system could be compromised, regardless of how secure the overall architecture may be, following the “security of the weakest link” principle. Hence, in order to ensure the security level of an IoT Platform, the security level of the software that it is running on its nodes should be assessed, optimized, and, ideally, certified.</p>
<p>Traditionally, software security was considered an afterthought in the overall Software Development Lifecycle (SDLC), being added after the software application has been deployed or even used, by deploying mechanisms aiming to prevent malicious individuals from exploiting their vulnerabilities. However, the ability of the attackers to bypass the deployed countermeasures has forced recently software development enterprises to shift their focus towards the concept of Security by Design, i.e., towards building software that is highly secure (i.e., vulnerability free) from the ground up. According to the Security by Design concept, security should be monitored and optimized at all phases of the SDLC, and essentially to be the concept that will guide the overall development (decisions). This concept is depicted in the following figure.<a href="#_ftnref1" name="_ftn1"><sup><img decoding="async" loading="lazy" class="aligncenter wp-image-8083 size-large" src="https://iotac.eu/wp-content/uploads/2021/05/SSD-Platforn-1024x646.png" alt="" width="1024" height="646" srcset="https://iotac.eu/wp-content/uploads/2021/05/SSD-Platforn-1024x646.png 1024w, https://iotac.eu/wp-content/uploads/2021/05/SSD-Platforn-300x189.png 300w, https://iotac.eu/wp-content/uploads/2021/05/SSD-Platforn-768x484.png 768w, https://iotac.eu/wp-content/uploads/2021/05/SSD-Platforn-1536x969.png 1536w, https://iotac.eu/wp-content/uploads/2021/05/SSD-Platforn.png 1720w" sizes="(max-width: 1024px) 100vw, 1024px" /></sup></a></p>
<p style="text-align: center;"><strong><u>Figure 1: </u></strong>The traditional Software Development Lifecycle (top) and the Software Development Lifecycle that adopts the Security-by-Design paradigm (bottom). According to the Security-by-Design concept, security is added at each phase of the SDLC, through the provision of suitable security mechanisms.</p>
<p>To this end, IoTAC, apart from proposing a secure IoT Architecture, will attempt to provide solutions for assessing, optimizing, and certifying the security of IoT Software Applications, in order to provide a holistic approach in securing a given IoT System. It will provide proactive mechanisms for monitoring and optimizing security throughout the overall SDLC of IoT Software Applications.</p>
<p style="padding-left: 40px;">2. The IoTAC Software Security by Design (SSD) Platform</p>
<p>Within the context of the IoTAC Project, an independent platform, the Software Security by Design (SSD) Platform, will be developed, with the aim to provide solutions for assessing, improving, and certifying the security level of IoT Software Applications throughout the overall SDLC. An overview of the envisaged SSD Platform is provided in the figure below:</p>
<p><img decoding="async" loading="lazy" class="aligncenter wp-image-8086 size-large" src="https://iotac.eu/wp-content/uploads/2021/05/IoTAC-SSD-Platform-1024x757.png" alt="" width="1024" height="757" srcset="https://iotac.eu/wp-content/uploads/2021/05/IoTAC-SSD-Platform-1024x757.png 1024w, https://iotac.eu/wp-content/uploads/2021/05/IoTAC-SSD-Platform-300x222.png 300w, https://iotac.eu/wp-content/uploads/2021/05/IoTAC-SSD-Platform-768x568.png 768w, https://iotac.eu/wp-content/uploads/2021/05/IoTAC-SSD-Platform.png 1378w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p style="text-align: center;"><u>Figure 2:</u> The high-level overview of the IoTAC Software Security by Design (SSD) Platform.</p>
<p>As can be seen by the figure above, the SSD Platform will consist of 3 core modules, namely (i) the Design and Requirements module, (ii) the Software Security Assurance (or Assessment) Module, and (iii) the Software Security Certification Module. The main functionalities of these modules are described in what follows.</p>
<ul>
<li><strong><u>Design and Requirements Module:</u></strong> The purpose of this module is to provide means for monitoring (i.e., measuring) and improving (i.e., optimizing) the security level of a software application during the Design and Requirement phases of the SDLC. To this end, this module will provide the following core functionalities (i.e., components):</li>
</ul>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong><u>Software Security Requirements Specification:</u></strong> This component is meant to facilitate (simplify) the specification of the security requirements of a given software product. It will enable the user to define the desired security requirements into natural language, avoiding enforcing them to use tedious templates.</li>
</ul>
</li>
</ul>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong><u>Software Security Requirements Verification and Validation:</u></strong> The purpose of this component will be to evaluate the correctness and completeness of the software security requirements that are defined by the user and provide recommendations regarding their improvement.</li>
</ul>
</li>
</ul>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong><u>Software Security Requirements Adherence Check:</u></strong> This component is responsible for evaluating whether the final IoT software application adheres to the originally imposed security requirements.</li>
</ul>
</li>
</ul>
<ul>
<li><strong><u>Software Security Assurance Module:</u></strong> The purpose of this module is to provide means for monitoring and improving the security level of a software application during the <em>Coding </em>and <em>Testing </em>phases of the SDLC. To this end, this module will provide the following core functionalities (i.e., components):</li>
</ul>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong><u>Quantitative Software Security Assessment: </u></strong>The purpose of this component is to provide a quantitative expression of the internal security level of an IoT Software application, based on the existence of potential security issues that may reside in their code. This component will be based on state-of-the-art concepts from the fields of software quality and software security evaluation, as well as on popular decision-making techniques.</li>
</ul>
</li>
</ul>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong><u>Vulnerability Prediction:</u></strong> This component is responsible for identifying security hotspots, i.e., software components that are likely to contain security vulnerabilities. It will be based on vulnerability prediction models that will be built based on advanced machine learning techniques (mainly deep learning) and popular vulnerability datasets.</li>
</ul>
</li>
</ul>
<ul>
<li><strong><u>Software Security Certification Module:</u></strong> The purpose of this module is to provide solutions for certifying the security of a given IoT Software Application, based on project-specific security evaluations and on conformance to international security standards and best practices. As can be seen by the figure above, this module will take into consideration: (i) the adherence of the software application to the originally imposed software security requirements, (ii) the security of its source code based on the code-level security assessment and vulnerability prediction reports, and (iii) the adherence of the application to requirements retrieved from international security standards and best practices. The module will produce a certificate, certifying the security level of the analyzed software, along with a report of things that require fix.</li>
</ul>
<p>From the above analysis, it is clear that the IoTAC Project, apart from introducing a Secure IoT Architecture, will provide solutions (i.e., mechanisms) for monitoring, improving, and certifying the security level of the software applications that are running on IoT Platforms, implemented as an independent platform, the Software Security by Design (SSD) Platform. Hence, IoTAC will provide a holistic approach for securing IoT Platforms, through the provision of a novel Secure Reference IoT Architecture, as well as a platform for securing the software that is running on IoT Platforms.</p>
<p><a href="#_ftnref1" name="_ftn1"><sup>[1]</sup></a> <u><a href="https://ieeexplore.ieee.org/document/8538636">https://ieeexplore.ieee.org/document/8538636</a></u><br />
<a href="#_ftnref2" name="_ftn2"><sup>[2]</sup></a> <u><a href="https://ieeexplore.ieee.org/document/9011598">https://ieeexplore.ieee.org/document/9011598</a></u><br />
<a href="#_ftnref3" name="_ftn3"><sup>[3]</sup></a> <u><a href="https://www.sciencedirect.com/science/article/pii/S1877050920319487">https://www.sciencedirect.com/science/article/pii/S1877050920319487</a></u></p>
<p>The post <a href="https://iotac.eu/the-iotac-software-security-by-design-ssd-platform-concept-and-preliminary-overview/">The IoTAC Software Security by Design (SSD) Platform &#8211; Concept and Preliminary Overview</a> appeared first on <a href="https://iotac.eu">IoTAC</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://iotac.eu/the-iotac-software-security-by-design-ssd-platform-concept-and-preliminary-overview/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
