<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Increase the cybersecurity of SCADA and IIoT devices with secure memory management ⋆</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Andrii</forename><surname>Nyzhnyk</surname></persName>
							<email>o.nyzhnyk@lpnu.ua</email>
							<affiliation key="aff0">
								<orgName type="institution">Lviv Polytechnic National University</orgName>
								<address>
									<addrLine>12 Stepan Bandera str</addrLine>
									<postCode>79013</postCode>
									<settlement>Lviv</settlement>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Andrii</forename><surname>Partyka</surname></persName>
							<email>andrii.i.partyka@lpnu.ua</email>
							<affiliation key="aff0">
								<orgName type="institution">Lviv Polytechnic National University</orgName>
								<address>
									<addrLine>12 Stepan Bandera str</addrLine>
									<postCode>79013</postCode>
									<settlement>Lviv</settlement>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Michal</forename><surname>Podpora</surname></persName>
							<email>m.podpora@po.opole.pl</email>
							<affiliation key="aff1">
								<orgName type="institution">Opole University of Technology</orgName>
								<address>
									<addrLine>76 Proszkowska str</addrLine>
									<postCode>45-758</postCode>
									<settlement>Opole</settlement>
									<country key="PL">Poland</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Increase the cybersecurity of SCADA and IIoT devices with secure memory management ⋆</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">9A0C116BB08EE975E75071A03924F8A2</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T19:53+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>SCADA</term>
					<term>IIoT</term>
					<term>memory management issues</term>
					<term>Rust</term>
					<term>buffer overflow</term>
					<term>use-after-free</term>
					<term>cybersecurity</term>
					<term>secure programming</term>
					<term>sanitizers</term>
					<term>static code analysis1</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Secure memory management issues are very common in SCADA device software. Systems that are integrated with SCADA and IIoT are often included in the list of critical infrastructures in many countries. Therefore, ensuring the security of these devices is important for national security. Despite the implementation of certain cybersecurity tools and measures, these devices often become targets for attacks. Memory errors remain one of the most common sources of software vulnerabilities. Attackers are actively using them to gain unauthorized access to systems, steal data, disrupt software operations, and perform other criminal acts. These types of vulnerabilities are very difficult to reproduce and fix. This paper discusses how to increase the security of SCADA and IIoT devices using secure memory management. The relevance of the problem of secure memory management in SCADA and IIoT devices makes it a subject of careful study and search for effective solutions. The purpose of this paper is to study the impact of dynamic memory errors on cybersecurity and provide practical recommendations for their elimination. Various sectors, including energy, water treatment, manufacturing, transportation, oil and gas exploration, telecommunications, environmental monitoring, aerospace, and medical facilities, rely heavily on SCADA and IIoT systems. Given the widespread use of these systems in critical infrastructure, addressing memory management vulnerabilities is crucial. This paper presents an overview of the most common memory management issues, such as null pointer dereferencing, use-after-free, and buffer overflow, and highlights notable cyberattacks that exploited these vulnerabilities. The effectiveness of different methods to prevent and mitigate memory management issues, including the use of sanitizers, static code analysis, and programming languages with secure memory management like Rust, is analyzed. The study concludes that a comprehensive approach combining these methods is essential for enhancing the cybersecurity of SCADA and IIoT devices. The findings aim to help software developers and cybersecurity professionals better understand the risks associated with dynamic memory in SCADA and IIoT devices and improve application security.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>Imagining modern life without process automation is challenging, as it is crucial for both industry and homes. Most devices can now connect to the Internet, a small but significant percentage of devices can be controlled by voice and even contain artificial intelligence to communicate with humans. The SCADA (Supervisory Control and Data Acquisition) system is a centralized control system that allows monitoring and control of industrial processes. In essence, SCADA has dual functionality-supervision of operations and data acquisition from remote locations, which is critical for efficient and safe operation in various industries.</p><p>SCADA systems, alongside the Industrial Internet of Things (IIoT), play a vital role in numerous sectors, including energy, water treatment, manufacturing, transportation, oil and gas exploration, telecommunications, environmental monitoring, aerospace, and medical facilities. The market for industrial control systems, including SCADA, is expected to exceed $181.6 billion by the end of 2024, highlighting their growing importance.</p><p>Despite the essential role of SCADA and IIoT systems, they face significant cybersecurity threats, primarily due to memory management issues. According to Google, 59% of the vulnerabilities found in the Android project in 2021 were related to memory issues <ref type="bibr" target="#b0">[1]</ref>. Microsoft reported that in 2019, 70% of all vulnerabilities in their projects were memory-related <ref type="bibr" target="#b1">[2]</ref>. Similarly, in the Chromium project, almost 70% of critical security bugs are associated with memory security issues, and Mozilla has reported that incorrect memory management can cause up to 73.9% of vulnerabilities <ref type="bibr" target="#b2">[3]</ref>. These vulnerabilities often lead to severe 0009-0003-9094-0740 (A. Nyzhnyk); 0000-0003-3037-8373 (A. Partyka); 0000-0002-1080-6767 (M. Podpora) security breaches, such as unauthorized access to systems, data theft, and operational disruptions.</p><p>In their research, <ref type="bibr">Oorschot et al. (2023)</ref> highlighted the challenges of memory safety in system programming languages like C and C++ <ref type="bibr" target="#b3">[4]</ref>. While these languages are powerful, they are prone to memory errors such as null pointer dereferencing, use-after-free, and buffer overflow. These types of errors are particularly prevalent in the software used for SCADA and IIoT devices, which are often written in these languages due to their low-level capabilities and performance requirements. Also, in many research studies <ref type="bibr">(Altaleb,</ref> Haya &amp; Rajnai, Zoltan (2024) or Fall, Moustapha &amp; Chuvalas, Chris &amp; Warning, Nolan &amp; Rabiee, Max &amp; Purdy, Carla (2020) and many more) related to security SCADA and IIoT, secure memory management is not covered <ref type="bibr" target="#b4">[5]</ref>. These studies focus on the more common cyber security threats, like "OWASP Top Ten" and others. In this context, secure memory management belongs to low-level system control that significantly impacts cybersecurity <ref type="bibr" target="#b5">[6]</ref>.</p><p>The objective of this paper is to address the impact of dynamic memory errors on the cybersecurity of SCADA and IIoT devices and to provide practical recommendations for their mitigation. By examining various studies and existing methods, we aim to identify effective solutions to enhance the security of these critical systems. Our analysis includes the use of sanitizers, static code analysis, and the adoption of programming languages with built-in memory safety mechanisms, such as Rust, which offers a robust alternative to traditional system programming languages. The goal is to provide insights that will help software developers and cybersecurity professionals better understand and manage the risks associated with memory management in SCADA and IIoT devices. To summarize, these systems are widely used in various areas of critical infrastructure. The main task of SCADA and IIoT is to control the system, which helps to manage and achieve the set goals with optimal use of resources.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Ensuring cybersecurity of SCADA and IIoT devices</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">The most common memory management issues</head><p>Despite its long history and significant economic consequences, the problem of secure memory management remains relevant. According to unofficial estimates, as recently as 2004, memory-related errors cost the industry about $250,000, and this amount is only growing over time. Memory management vulnerabilities can occur even in well-known projects with millions of users and professional development teams <ref type="bibr" target="#b4">[5]</ref>. Different companies conducted the research:</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head></head><p>In 2021, Google reported that 59% of the vulnerabilities found in the Android project were related to memory issues. Different types of vulnerabilities found in the Android project are shown in Fig.   Memory management bugs are a common source of misbehavior in many programming languages [7], but they can be especially prevalent in system programming languages such as C and C++ <ref type="bibr" target="#b6">[8]</ref>. C and C++ are the programming languages most commonly used to write SCADA and IIoT software and are the languages in which the largest number of vulnerabilities are found.</p><p>The most common problems are related to memory management:</p><p>1.</p><p>Null pointer dereferencing is a problem that occurs when a program tries to access memory that has not been allocated or has already been freed.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>2.</head><p>Use-after-free use is a problem that occurs when a program tries to access memory that has already been freed.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>3.</head><p>Buffer overflow is also a common problem when a program writes data outside the buffer, potentially overwriting other data or executing arbitrary code.</p><p>While memory management can cause a vulnerability in an application, other security issues such as misconfiguration of role-based access control, SQL injection, and other well-known vulnerabilities should not be overlooked <ref type="bibr" target="#b7">[9]</ref>. Despite this, memory management issues remain the most common in SCADA and IIoT devices.</p><p>Securing low-level devices such as SCADA and IIoT differs significantly from traditional approaches to securing cloud infrastructure. <ref type="bibr" target="#b8">[10]</ref>. Programs that control SCADA and IIoT mostly run without an operating system or any antivirus [11].</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.">Cyberattacks that were carried out with the help of memory vulnerabilities</head><p>Attacks that use hanging pointers:</p><p> Heartbleed (2014). This vulnerability, which exploited a hanging pointer, was discovered in OpenSSL, a cryptographic library used by millions of web servers. Attackers could have exploited this vulnerability to steal sensitive information, including passwords, encryption keys, and credit card information. The damage from this attack is estimated at billions of dollars <ref type="bibr" target="#b9">[12]</ref>.  CVE-2021-45046 (2021). This vulnerability was discovered in the Windows Print Spooler driver. Attackers could exploit this vulnerability to gain full control over vulnerable systems <ref type="bibr" target="#b10">[13]</ref>.</p><p>Attacks that were carried out through uninitialized variables:</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head></head><p>Buffer overflow (2001). This attack led to the theft of 170 million credit card numbers from TJX Companies' systems.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head></head><p>Stack overflow (2019). This attack, which exploits a stack overflow, led to the outage of Cloudflare services. Cloudflare is a large American company that provides network services for content delivery, protection against DDoS attacks, and other network services.</p><p>In addition, there have been thousands of other cyberattacks using all types of memory management vulnerabilities. For example, the WannaCry ransomware virus, which in 2017 infected more than 200,000 computers in 150 countries. WannaCry exploited a "double free" vulnerability in Windows.</p><p>These examples highlight cyberattacks related to memory management issues. Such attacks can result in significant consequences, including data theft, service outages, and financial and reputational losses. Implementing secure programming practices and thorough software testing can help prevent these incidents.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3.">Methods to ensure cybersecurity in</head><p>Socio-Cyber-Physical Systems (SCPS)</p><p>it is crucial to consider the broader context of cybersecurity within Socio-Cyber-Physical Systems (SCPS). According to <ref type="bibr" target="#b11">Yevseiev et al. (2023)</ref>, integrating cybersecurity into SCPS involves developing comprehensive models that account for the complex interactions between social, cyber, and physical components <ref type="bibr" target="#b11">[14]</ref>. These models help in understanding vulnerabilities and developing strategies to mitigate risks in critical infrastructures like SCADA and IIoT systems. One effective approach is the use of mathematical models and simulations to analyze potential security threats and their impacts. This method allows for the identification and mitigation of vulnerabilities before they can be exploited by attackers. Simulations can model various attack scenarios, enabling researchers and engineers to develop robust defense mechanisms and response strategies.</p><p>Enhancing SCADA security with advanced memory management techniques is another method, as discussed by Kim and Lee (2024), who emphasized the importance of adopting modern memory safety mechanisms in SCADA systems <ref type="bibr" target="#b12">[15]</ref>. The implementation of such techniques can significantly reduce the risk of memory-related vulnerabilities, which are often targeted by cyber attackers.</p><p>Additional Approaches: </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Methods to prevent and reduce the impact of memory management issues</head><p>The negative impact of memory management issues can range from minor crashes to data theft, system disruption, and other criminal activity. There is now a wide range of methods and mechanisms that can be used to prevent or reduce the impact of these problems. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">The use of sanitizers</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head></head><p>Sanitizers can be used as a learning tool for young developers to better understand how memory management works and how to avoid common mistakes in their professional careers.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head></head><p>Using sanitizers is an important part of modern software development and can significantly reduce the impact of memory management issues.</p><p>A list of the most popular sanitizers and their capabilities:</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head></head><p>Address Sanitizer detects errors related to accessing invalid memory.  Leak Sanitizer detects memory leaks.</p><p>Undefined Behavior Sanitizer detects undefined behavior that can lead to errors.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Static code analysis</head><p>Static analysis tools are software tools that examine code without executing it to identify potential memory management issues and other vulnerabilities. This method of analysis is used during program development, serving as a kind of independent code verification.</p><p>Advantages of static analysis: Static analysis can be used to detect issues such as memory leaks, buffer overflows, null pointers, unused variables, dead code, and unsafe coding patterns. Static analysis can be integrated into the development environment, which makes it even more convenient to use. Using static analysis tools is an important part of the process of developing secure software.</p><formula xml:id="formula_0"></formula><p>Beyond the methods above, it is also important to regularly update software, implement firewall and antivirus solutions, and ensure the creation of data backup copies.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.">Use languages with secure memory management</head><p>One approach is to use safe programming languages.</p><p>Programming languages with a high level of abstraction and built-in memory safety mechanisms, such as Java, Python, Go, C#, and JS/TS, significantly reduce the risk of memory management issues. The disadvantage of this approach is the inability to rewrite existing programs within a short time and the decrease in program performance. For some systems, such a transition is simply not possible because it requires very low-level work with memory and registers <ref type="bibr" target="#b13">[16]</ref>.</p><p>However, with the advent of programming languages such as Rust, you can solve the problem of low-level access without losing program performance. Rust is a programming language that combines high performance with memory safety. It is becoming an increasingly popular choice for developing system software and other programs where it is critical to avoid memory issues <ref type="bibr" target="#b14">[17]</ref>.</p><p>Here are some of the key benefits of using Rust to prevent memory management issues:</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head></head><p>Ownership system. Rust uses an ownership system to keep track of who owns data in memory. This makes errors such as use-after-free and memory leaks impossible.  Compile-time checking. Most memory management issues in Rust are detected at compile time, not runtime. This saves time and resources and makes the code more error-resistant.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head></head><p>No garbage collection. Rust does not use garbage collection, which gives developers more control over memory. This can lead to more economical memory usage and better performance.</p><p>Nguyen and Pham (2023) highlighted that secure programming practices for embedded systems, with a focus on memory safety, can greatly benefit from languages like Rust, especially for SCADA and IIoT applications <ref type="bibr" target="#b15">[18]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4.">Security in cloud infrastructures</head><p>A comprehensive approach to developing and maintaining secure cloud infrastructures is essential for modern enterprises, including those utilizing SCADA and IIoT systems. Ensuring security in cloud environments involves multiple layers of protection, including secure configuration of services, continuous monitoring, and the implementation of advanced security practices <ref type="bibr" target="#b16">[19]</ref>. This approach helps mitigate risks associated with data breaches and unauthorized access in cloud-based systems.</p><p>Connection to SCADA and IIoT Systems: SCADA and IIoT devices are increasingly being integrated into cloud infrastructures to enhance their functionality and scalability. By leveraging cloud services, these devices can benefit from advanced analytics, remote monitoring, and improved data storage capabilities. However, this integration also introduces new security challenges.</p><p>Ensuring the security of cloud-based SCADA and IIoT systems is crucial to protect against potential cyber threats that could exploit vulnerabilities in the cloud infrastructure.</p><p>Key Security Measures:  Secure Configuration: Proper configuration of cloud services is essential to prevent unauthorized access. This includes setting up strong authentication mechanisms, implementing rolebased access control, and ensuring that all data is encrypted both in transit and at rest. Misconfigurations can lead to significant security breaches, as seen in numerous high-profile attacks <ref type="bibr" target="#b17">[20]</ref>.  Continuous Monitoring: Implementing continuous monitoring solutions helps detect and respond to security incidents in real-time. This includes using intrusion detection systems, security information and event management systems, and regular vulnerability assessments. Continuous monitoring is vital for identifying and mitigating potential threats before they can cause significant damage <ref type="bibr" target="#b18">[21]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head></head><p>Advanced Security Practices: Utilizing advanced security practices such as zero-trust architecture, micro-segmentation, and automated threat intelligence can further enhance the security of cloud infrastructures. Zero-trust architecture ensures that no entity, whether inside or outside the network, is trusted by default. Micro-segmentation divides the network into smaller segments to limit the spread of potential attacks. Automated threat intelligence uses machine learning and AI to identify and respond to threats more effectively <ref type="bibr" target="#b19">[22]</ref>.</p><p>Challenges and Solutions: Organizations must balance the cost of security solutions with the potential risks and impacts of security breaches. Investing in scalable and efficient security tools can help manage costs while ensuring robust protection <ref type="bibr" target="#b20">[24]</ref>.</p><formula xml:id="formula_1"></formula><p>In conclusion, securing cloud infrastructures is integral to the overall security of SCADA and IIoT systems. By adopting a layered security approach, implementing continuous monitoring, and leveraging advanced security practices, organizations can significantly enhance the resilience of their cloud-based SCADA and IIoT systems against cyber threats. The following section will demonstrate the effectiveness of various approaches in preventing memory problems.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Analyzing the effectiveness of methods to prevent memory management problems</head><p>The main disadvantage of static analyzers and sanitizers is that these tools need to be integrated with the existing code base. That is, software developers need to research and integrate these tools into the project. In addition, there is a risk of incorrect integration and misuse of the analyzer or sanitizer <ref type="bibr" target="#b21">[25]</ref>. Also, most professional analyzers and sanitizers are not free, which in turn imposes certain restrictions on the development of projects with a small budget. For example, let's consider one of the most popular code analyzers sonar, this tool has different tariff plans, but most companies choose the Enterprise plan <ref type="bibr" target="#b22">[26]</ref>. Tools such as sanitizers and static code analyzers help to improve code quality and prevent other known problems quite significantly. Nevertheless, the most reliable way to deal with memory usage issues is to use the Rust programming language and similar ones. In addition, this approach does not require any additional settings on the part of developers, and the use of the Rust language is free, which makes this approach quite optimal.</p><p>Fig. <ref type="figure" target="#fig_3">4</ref> shows a C++ program that simulates a buffer overflow. This program creates an array of five elements of type uint32_t (this is an unsigned integer that takes 32 bits), and all elements of the array are initialized to 0. After that, the program iterates over this array, but the iteration interval was chosen incorrectly and the program will go beyond the buffer.  Further iterations also show other numbers. If you look at the code listing more closely, you will see that there is no mention of these numbers. That is, it has just been demonstrated how the program went beyond the buffer and accessed data that is outside the executing context.</p><p>Along with causing crashes and other problems, these errors can also create security vulnerabilities that can be exploited by attackers to gain unauthorized access to the system. Debugging memory-related errors can be difficult because they often result in subtle errors that are difficult to reproduce. This can lead to lengthy debugging sessions and delayed release cycles, which can be particularly problematic in time-sensitive applications <ref type="bibr" target="#b23">[27]</ref>.</p><p>Rust's ownership model and borrowing system make it virtually impossible to introduce many of these common memory-related errors, which is one of the reasons it has become a popular choice for system programming <ref type="bibr" target="#b24">[28]</ref>. Similar approaches are described in <ref type="bibr" target="#b25">[29]</ref><ref type="bibr" target="#b26">[30]</ref><ref type="bibr" target="#b27">[31]</ref><ref type="bibr" target="#b28">[32]</ref> Using the Rust programming language (Fig. <ref type="figure" target="#fig_5">6</ref>) makes it impossible to prevent buffer overflows and access to other data, as demonstrated in Fig. <ref type="figure" target="#fig_3">4</ref>. The results are shown in Fig. <ref type="figure">7</ref>. While Rust's approach to memory safety offers many advantages, there are also some drawbacks and limitations that should be considered. One potential limitation is that Rust's ownership and borrowing system can be difficult to understand for developers who have not worked with it before. This can make writing Rust code more difficult than languages with simpler memory models, such as Python or JavaScript.</p><p>Although Rust's ownership system enhances code safety, it can also complicate working with cyclic data structures. This can lead to a 20-30% increase in the time required to write and debug such code. Rust's memory safety features, which make the code more resistant to errors, slightly reduce its performance. The performance loss can reach 5-10% compared to C/C++ code. It is important to remember that Rust does not guarantee 100% security. Incorrect code can bypass the system's guarantees, and vulnerabilities in third-party libraries remain dangerous.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Conclusions</head><p>Dynamic memory errors pose a significant cybersecurity threat. Attackers are actively exploiting such vulnerabilities to steal data, disrupt systems, and commit other criminal acts. The damage they cause is estimated at several tens of billions of dollars, and reputational losses are manifested long after the cyberattack and may result in further lawsuits and compensation.</p><p>The safe programming practices described here can prevent memory issues. However, it should be noted that none of them is universal and it is better to use a combination of them for maximum protection.</p><p>To prevent and reduce the negative impact of dynamic memory management, the best solution is to use a comprehensive approach that includes the following:</p><p>Use of safe programming languages. Use of sanitizers. Static code analysis. Professional development of developers. This paper has demonstrated a memory buffer overflow vulnerability associated with a violation of security rules when working with it. The results were obtained using the C++ language, which is one of the most commonly used languages for writing applications for SCADA and IIoT devices.</p><p>As an optimization and solution to such vulnerabilities, it was proposed to use the Rust language. This helped to avoid errors related to memory management. The peculiarity of using this language helped to avoid the vulnerability described above by preventing memory buffer overruns. Rust mechanisms help to avoid a dozen more memory management vulnerabilities.</p><p>In general, although Rust's approach to memory safety provides many advantages, it is important to note its limitations and potential drawbacks. Rust's memory safety features can sometimes lead to some performance degradation, and a more comprehensive approach is needed to solve other memory-related problems. Despite these limitations, Rust remains a powerful language for system programming, and its memory protection features provide a significant advantage over many other programming languages and significantly help improve cybersecurity.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Types of critical and high vulnerabilities in the Android project According to research by various IT companies, the total percentage of memory-related vulnerabilities is shown in Fig. 2.</figDesc><graphic coords="3,114.72,71.76,365.52,226.08" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Percentage of vulnerabilities in projects related to memory management</figDesc><graphic coords="3,130.80,378.96,333.36,206.16" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Different tariffs provided by SonarAccording to the tariff plans, the cost of using code analyzers can vary from several hundred to hundreds of thousands of dollars per year.Tools such as sanitizers and static code analyzers help to improve code quality and prevent other known problems quite significantly. Nevertheless, the most reliable way to deal with memory usage issues is to use the Rust programming language and similar ones. In addition, this approach does not require any additional settings on the</figDesc><graphic coords="7,127.68,187.68,339.84,178.80" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: An example of a program to overflow a buffer This program compiles successfully. But there is an error in it, the loop will iterate over an array of 13 elements when only 5 elements are needed. The resulting values from the execution of this program are shown in Fig. 5.</figDesc><graphic coords="7,95.52,504.00,403.92,210.48" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: The result of the program execution Fig. 5 shows that the first 5 elements of the array are zeros, but the sixth element (at index 5) has a value of 32765.Further iterations also show other numbers. If you look at the code listing more closely, you will see that there is no mention of these numbers. That is, it has just been demonstrated how the program went beyond the buffer and accessed data that is outside the executing context.Along with causing crashes and other problems, these errors can also create security vulnerabilities that can be exploited by attackers to gain unauthorized access to the system. Debugging memory-related errors can be difficult because they often result in subtle errors that are difficult to</figDesc><graphic coords="8,125.52,74.88,343.68,152.88" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 6 :</head><label>6</label><figDesc>Figure 6: Rust code sample for buffer overflow</figDesc><graphic coords="8,111.36,399.60,372.00,171.36" type="bitmap" /></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<ptr target="https://security.googleblog.com/2021/01/data-driven-security-hardening-in.html" />
		<title level="m">Data Driven Security Hardening in Android</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<ptr target="https://msrc.microsoft.com/blog/2019/07/a-proactive-approach-to-more-secure-code/" />
		<title level="m">A Proactive Approach to More Secure Code</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<ptr target="https://www.chromium.org/Home/chromium-security/memory-safety/" />
		<title level="m">Memory Safety</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Memory Errors and Memory Safety: C as a Case Study</title>
		<author>
			<persName><forename type="first">P</forename><surname>Oorschot</surname></persName>
		</author>
		<idno type="DOI">10.1109/MSEC.2023.3236542</idno>
	</analytic>
	<monogr>
		<title level="j">IEEE Security &amp; Privacy</title>
		<imprint>
			<biblScope unit="volume">21</biblScope>
			<biblScope unit="page" from="70" to="76" />
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">A Comprehensive Analysis and Solutions for Enhancing SCADA Systems Security in Critical Infrastructures</title>
		<author>
			<persName><forename type="first">H</forename><surname>Altaleb</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Rajnai</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICCC62278.2024.10582956</idno>
	</analytic>
	<monogr>
		<title level="m">IEEE 11th International Conference on Computational Cybernetics and Cyber-Medical Systems (ICCC)</title>
				<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Fall</surname></persName>
		</author>
		<idno type="DOI">10.1109/MWSCAS48704.2020.9184532</idno>
		<title level="m">Enhancing SCADA System Security</title>
				<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="830" to="833" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<ptr target="https://langui.sh/2019/07/23/apple-memory-safety/" />
		<title level="m">Memory Unsafety in Apple&apos;s Operating Systems</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Designing Secured Services for Authentication, Authorization, and Accounting of Users</title>
		<author>
			<persName><forename type="first">D</forename><surname>Shevchuk</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Cybersecurity Providing in Information and Telecommunication Systems II</title>
		<imprint>
			<biblScope unit="volume">3550</biblScope>
			<biblScope unit="page" from="217" to="225" />
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Automated Conformity Verification Concept for Cloud Security</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Martseniuk</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Cybersecurity Providing in Information and Telecommunication Systems</title>
		<imprint>
			<biblScope unit="volume">3654</biblScope>
			<biblScope unit="page" from="25" to="37" />
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<ptr target="https://heartbleed.com/" />
		<title level="m">The Heartbleed</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Memory Errors and Memory Safety: A Look at Java and Rust</title>
		<author>
			<persName><forename type="first">P</forename><surname>Oorschot</surname></persName>
		</author>
		<idno type="DOI">10.1109/MSEC.2023.3249719</idno>
	</analytic>
	<monogr>
		<title level="j">IEEE Security &amp; Privacy</title>
		<imprint>
			<biblScope unit="volume">21</biblScope>
			<biblScope unit="page" from="62" to="68" />
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<author>
			<persName><forename type="first">S</forename><surname>Yevseiev</surname></persName>
		</author>
		<idno type="DOI">10.15587/978-617-7319-72-5</idno>
	</analytic>
	<monogr>
		<title level="m">Models of Socio-Cyber-Physical Systems Security: monograph</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Enhancing SCADA Security with Advanced Memory Management Techniques</title>
		<author>
			<persName><forename type="first">H</forename><surname>Kim</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Lee</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Int. J. Critical Infrastruct. Prot</title>
		<imprint>
			<biblScope unit="volume">38</biblScope>
			<biblScope unit="page">100493</biblScope>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">HeapCheck: Low-cost Hardware Support for Memory Safety</title>
		<author>
			<persName><forename type="first">G</forename><surname>Saileshwar</surname></persName>
		</author>
		<idno type="DOI">10.1145/3495152</idno>
	</analytic>
	<monogr>
		<title level="j">ACM Transactions on Architecture and Code Optimization</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="page" from="1" to="24" />
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Mitigating Memory Vulnerabilities in IoT Systems: Best Practices and Case Studies</title>
		<author>
			<persName><forename type="first">S</forename><surname>Rajasekaran</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Kumar</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Future Generation Comput. Syst</title>
		<imprint>
			<biblScope unit="volume">137</biblScope>
			<biblScope unit="page" from="146" to="159" />
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Cybersecurity in Industrial Control Systems: A Survey</title>
		<author>
			<persName><forename type="first">J</forename><surname>Zhou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Liu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Industrial Informatics</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="1621" to="1632" />
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">A Machine and Deep Learning analysis among SonarQube rules, Product, and Process Metrics for Faults Prediction</title>
		<author>
			<persName><forename type="first">F</forename><surname>Lomio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Moreschini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Lenarduzzi</surname></persName>
		</author>
		<idno type="DOI">10.1007/s10664-022-10164-z</idno>
	</analytic>
	<monogr>
		<title level="j">Empirical Software Eng</title>
		<imprint>
			<biblScope unit="volume">27</biblScope>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Comprehensive Approach for Developing an Enterprise Cloud Infrastructure</title>
		<author>
			<persName><forename type="first">V</forename><surname>Khoma</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">CEUR Workshop Proceedings</title>
				<imprint>
			<date type="published" when="2024">2024</date>
			<biblScope unit="volume">3654</biblScope>
			<biblScope unit="page" from="201" to="215" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Secure Programming Practices for Embedded Systems: A Focus on Memory Safety</title>
		<author>
			<persName><forename type="first">T</forename><surname>Nguyen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Pham</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Embedded Systems Letters</title>
		<imprint>
			<biblScope unit="volume">15</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="145" to="150" />
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<title level="m" type="main">Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects</title>
		<author>
			<persName><forename type="first">D</forename><surname>Schmidt</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2006">2006</date>
			<publisher>Wiley</publisher>
			<biblScope unit="volume">2</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">A Survey of Memory Management Techniques in Embedded Systems</title>
		<author>
			<persName><forename type="first">S</forename><surname>Zhang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Computing Surveys</title>
		<imprint>
			<biblScope unit="volume">55</biblScope>
			<biblScope unit="issue">2</biblScope>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Advancements in Secure Memory Management for Critical Systems</title>
		<author>
			<persName><forename type="first">M</forename><surname>Jones</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Smith</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">J. Syst. Archit</title>
		<imprint>
			<biblScope unit="volume">121</biblScope>
			<biblScope unit="page">102384</biblScope>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">A Comprehensive Review of Memory Safety Mechanisms in IoT Devices</title>
		<author>
			<persName><forename type="first">S</forename><surname>Turner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Harris</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Sensors</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">6</biblScope>
			<biblScope unit="page">1428</biblScope>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Static and Dynamic Analysis Tools for Memory Safety: A Comparative Study</title>
		<author>
			<persName><forename type="first">L</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Wang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Software: Practice and Experience</title>
		<imprint>
			<biblScope unit="volume">53</biblScope>
			<biblScope unit="issue">7</biblScope>
			<biblScope unit="page" from="1298" to="1312" />
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Comprehensive Memory Safety Validation: An Alternative Approach to Memory Safety</title>
		<author>
			<persName><forename type="first">K</forename><surname>Huang</surname></persName>
		</author>
		<idno type="DOI">10.1109/MSEC.2024.3379947</idno>
	</analytic>
	<monogr>
		<title level="j">IEEE Security &amp; Privacy</title>
		<imprint>
			<biblScope unit="page" from="2" to="11" />
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">Data Processing Method for Deterioration Detection during Radio Equipment Operation</title>
		<author>
			<persName><forename type="first">O</forename><surname>Solomentsev</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE Microwave Theory and Techniques in Wireless Communications</title>
				<meeting><address><addrLine>MTTW</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="1" to="4" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Correlated Failures Analysis in Navigation System</title>
		<author>
			<persName><forename type="first">O</forename><surname>Solomentsev</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Zaliskyi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE 5 th International Conference on Methods and Systems of Navigation and Motion Control, MSNMC 2018 -Proceedings</title>
				<imprint>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="123" to="126" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Efficiency of operational data processing for radio electronic equipment</title>
		<author>
			<persName><forename type="first">O</forename><surname>Solomentsev</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Aviation</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="71" to="77" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Efficiency of data processing for UAV operation system</title>
		<author>
			<persName><forename type="first">O</forename><surname>Solomentsev</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE 4 th International Conference on Actual Problems of Unmanned Aerial Vehicles Developments, APUAVD 2017 -Proceedings</title>
				<imprint>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="27" to="31" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
