{"id":3807,"date":"2025-07-29T09:55:00","date_gmt":"2025-07-29T09:55:00","guid":{"rendered":"https:\/\/sectigostore.com\/blog\/?p=3807"},"modified":"2025-07-29T11:18:23","modified_gmt":"2025-07-29T11:18:23","slug":"5-nightmares-that-code-integrity-verification-could-have-prevented","status":"publish","type":"post","link":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/","title":{"rendered":"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Learn from the past to prepare for the future with these 5 infamous cyber attacks (and their disastrous consequences) that could have been prevented with code integrity check.<\/h2>\n\n\n\n<p>Operational downtime, reputational damage, and financial losses were the three main consequences of <a href=\"https:\/\/www.paloaltonetworks.com\/blog\/2025\/02\/incident-response-report-attacks-shift-disruption\/\">86% of the successful cyberattacks<\/a> that Palo Alto Network\u2019s Unit 42 team analyzed in 2024. In Q1 2025, the number of cyber attacks per organization is on the rise, having increased by <a href=\"https:\/\/blog.checkpoint.com\/research\/q1-2025-global-cyber-attack-report-from-check-point-software-an-almost-50-surge-in-cyber-threats-worldwide-with-a-rise-of-126-in-ransomware-attacks\/\">47% year-over-year<\/a>.<\/p>\n\n\n\n<p>Code integrity verification (e.g., hashing as part of the digital signature process in code signing) is one way you can minimize the risk of such attacks. This approach empowers your customers and employees to verify that the software they&#8217;ve just downloaded is the same as how your developers created \u2014 that it hasn&#8217;t been modified or infected with malware since it was cryptographically signed.<\/p>\n\n\n\n<p>In this article, I will be your ghost of the past. I will take you back in time to explore five real-world cybersecurity incidents and share how code integrity verification could have mitigated their impact or, perhaps, entirely prevented them. So, join me as I turn back the clock.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5 Real-World Examples That Code Integrity Checks Could Have Prevented<\/h2>\n\n\n\n<p>Code integrity verification is like the bouncer at the entrance of a private club. It ensures that your users and customers run only trusted and unaltered software on their machines. This is done by leveraging the power of code signing and its inner layers:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/sectigostore.com\/code-signing\"><strong>Code signing certificates<\/strong><\/a>: <a href=\"https:\/\/sectigostore.com\/blog\/what-is-a-pki-certificate\/\">Digital certificates<\/a> used to sign software, applications, executables, and scripts. They confirm to users that the code they&#8217;re downloading or installing is authentic and hasn&#8217;t been modified without authorization.<\/li>\n\n\n\n<li><a href=\"https:\/\/sectigostore.com\/blog\/what-is-a-private-key-in-cybersecurity\/\"><strong>Cryptographic keys<\/strong><\/a>: The private and public keys are a string of random characters paired with a robust cryptographic algorithm used to encrypt and decrypt data. They&#8217;re at the heart of code integrity verification. In <a href=\"https:\/\/sectigostore.com\/blog\/differences-between-ssl-certificates-and-code-signing-certificates\/\">code signing<\/a>, the developer uses the private key associated with the <a href=\"https:\/\/sectigostore.com\/code-signing\/sectigo-code-signing-certificate\">code signing certificate<\/a> to encrypt and sign the code hash (i.e., digest). When the user downloads or installs the software, their client uses the corresponding public key to decrypt the digest and verify the authenticity of the signature.<\/li>\n\n\n\n<li><a href=\"https:\/\/sectigostore.com\/blog\/hashing-vs-encryption-the-big-players-of-the-cyber-security-world\/\"><strong>Hashing<\/strong><\/a>: It&#8217;s the first step of the code signing process. The developer runs a cryptographic hash function over the code to transform it into a fixed-length string of characters (i.e., hashed value or code). The developer signs this resulting hash value, which doesn\u2019t change unless someone modifies the signed code (even a tiny bit), using their cryptographic key prior to sending it to the recipient. If the hash value remains the same on the recipient\u2019s end, it confirms to users that the signed software has not been tampered with.<\/li>\n\n\n\n<li><a href=\"https:\/\/sectigostore.com\/blog\/what-is-a-digital-signature-and-how-does-the-digital-signature-process-work\/\"><strong>Digital signatures<\/strong><\/a>: These signatures are embedded within the software. They include the signed hash value, a time stamp (optional), and the digital certificate used to sign the code. The user&#8217;s operating system leverages this information to execute the code integrity verification process. This operation confirms your identity as a developer or publisher and that the software hasn&#8217;t been altered since it was signed.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"568\" src=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/inner-layers-code-signing01-1024x568.jpg\" alt=\"An illustration demonstrating how code signing works\" class=\"wp-image-3808\" srcset=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/inner-layers-code-signing01-1024x568.jpg 1024w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/inner-layers-code-signing01-300x166.jpg 300w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/inner-layers-code-signing01-560x310.jpg 560w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/inner-layers-code-signing01-1536x852.jpg 1536w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/inner-layers-code-signing01-940x521.jpg 940w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/inner-layers-code-signing01.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Image caption: The screenshot shows the four key inner layers of code signing.<\/em><\/figcaption><\/figure>\n\n\n\n<p>What happens when the door to your private software club is left unattended? Nothing good, I assure you. The same concept applies to software security.<\/p>\n\n\n\n<p>So, how can you prevent the same types of issues identified by Palo Alto from happening to you or your organization? Let&#8217;s find out by taking a journey to visit five <a class=\"wpil_keyword_link\" href=\"https:\/\/sectigostore.com\/blog\/10-different-types-of-cyber-attacks-how-they-work\/\" title=\"cyber attacks\" data-wpil-keyword-link=\"linked\" data-wpil-monitor-id=\"2\">cyber attacks<\/a> of the past and learn from them.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. The CCleaner Attack That Infected 2.3 Million Devices (2017)<\/h3>\n\n\n\n<p>The bad guys injected a malicious payload into a legitimate version of CCleaner (v.5.33), a popular system optimization tool. The malware infected <a href=\"https:\/\/thehackernews.com\/2018\/04\/ccleaner-malware-attack.html\">more than<\/a> 2.3 million computers, including those of major technology companies.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.talosintelligence.com\/avast-distributes-malware\/\">Talos\u2019 analysis of the attack<\/a> shows that the software publisher digitally signed the executable with a valid <a href=\"https:\/\/sectigostore.com\/ssl-types\/ev-ssl-certificates\">code signing certificate<\/a>. However, Talos noticed that the <a href=\"https:\/\/codesigningstore.com\/code-signing-time-stamping-best-practices\">signature\u2019s<\/a><a href=\"https:\/\/codesigningstore.com\/code-signing-time-stamping-best-practices\"> timestamp<\/a> was applied approximately 15 minutes after the first signature, indicating that the development process might have been compromised.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"538\" src=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/ccleaner-cyber-attack-1024x538.jpg\" alt=\"A basic illustration showing where CCleaner was compromised during the software development lifecycle\" class=\"wp-image-3809\" srcset=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/ccleaner-cyber-attack-1024x538.jpg 1024w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/ccleaner-cyber-attack-300x158.jpg 300w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/ccleaner-cyber-attack-560x294.jpg 560w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/ccleaner-cyber-attack-1536x807.jpg 1536w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/ccleaner-cyber-attack-940x494.jpg 940w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/ccleaner-cyber-attack.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Image caption: The graphic shows when the attack could have taken place.<\/em><\/figcaption><\/figure>\n\n\n\n<p>Nevertheless, if the users had checked the digital signature and timestamp, they might have spotted the timing difference and avoided installing the malicious software.<\/p>\n\n\n\n<p>More importantly, Avast, the software publisher that acquired Piriform, (CCleaner\u2019s original author in July 2017) should have checked the software for malware before publishing it to their website. If they had, the company could have implemented necessary security checks throughout the whole software development process that could have caught the issue and mitigated further damage more quickly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. The SolarWinds &#8220;SUNBURST&#8221; Attack (2020)<\/h3>\n\n\n\n<p>Three years later, cybercriminals <a href=\"https:\/\/www.techtarget.com\/whatis\/feature\/SolarWinds-hack-explained-Everything-you-need-to-know\">infiltrated SolarWinds&#8217; network<\/a> and accessed its build server. Once inside, they identified and exploited several vulnerabilities in the company&#8217;s software build and review processes. This enabled them to insert malicious code into the Orion platform\u2019s update packages.<\/p>\n\n\n\n<p>The nefarious individuals slipped their poison into the software before the software signing process had even started. But what makes matters worse is that they were able to do so without anyone noticing, <a href=\"https:\/\/www.solarwinds.com\/sa-overview\/securityadvisory\/faq#:~:text=1\/29\/2021-,What are SUNSPOT%2C TEARDROP%2C and RAINDROP%3F,-SUNSPOT%2C TEARDROP%2C and\">using the SUNBURST backdoor to deploy TEARDROP and RAINDROP<\/a> malware loaders. <\/p>\n\n\n\n<p>Simply put, the malware spread like fire. Within a matter of days, the attackers sent out updates that touched thousands of SolarWinds&#8217; customers \u2014 everything from government agencies to various private organizations (including several other cybersecurity companies).&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"527\" src=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/solarwinds-attack-overview-1024x527.jpg\" alt=\"An illustration of the SolarWinds supply chain attack and where the compromise took place\" class=\"wp-image-3810\" srcset=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/solarwinds-attack-overview-1024x527.jpg 1024w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/solarwinds-attack-overview-300x155.jpg 300w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/solarwinds-attack-overview-560x288.jpg 560w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/solarwinds-attack-overview-1536x791.jpg 1536w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/solarwinds-attack-overview-940x484.jpg 940w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/solarwinds-attack-overview.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Image caption: The graphic provides an example of how the SolarWinds attack began.<\/em><\/figcaption><\/figure>\n\n\n\n<p>So, once again, SolarWinds developers <em>did<\/em> sign the software. However, they were let down by their company\u2019s software development life cycle (SDLC)\u2019s build and review processes and policies. (The company didn\u2019t mandate code signing throughout the SDLC or in its CI\/CD practices. Unfortunately for SolarWinds\u2019 customers, the company only used code signing at the end of the development process.)<\/p>\n\n\n\n<p>That corroborates the fact that, while code signing is an excellent tool to protect software from tampering, it can&#8217;t win the battle for a secure software supply chain alone. Fear not, though. We\u2019ve got a solution for that, too. Keep on reading.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. Codecov: The Needle in a Code \u2018Haystack\u2019 That Went Undetected for Months (2021)<\/h3>\n\n\n\n<p>Less than one year passed, and a group of very skilled black hats launched a sophisticated attack similar to SolarWinds. This time, they used their skills to extract credentials from a Codecov Docker image creation process. They then quietly modified the company&#8217;s Bash Uploader script. As this language-agnostic reporting tool works with most operating systems (e.g., Windows, Linux, and macOS) and popular developer platforms such as GitHub, the impact was enormous.<\/p>\n\n\n\n<p>They did such a jolly good job that they earned code execution access to any system that was using the Codecov code testing script. Thankfully, in this case, nothing lasts forever. This is true even for a well-orchestrated scam involving compromised code that was previously signed using a code signing certificate.<\/p>\n\n\n\n<p>It was actually a code signing digital signature that helped put an end to this catastrophic attack. One day, a customer manually checked the code integrity verification values of the Bash Uploader available on GitHub. When they realized the hash values didn&#8217;t match those listed on the site, the customer alerted the company. <a href=\"https:\/\/about.codecov.io\/security-update\/\">The game<\/a> was over thanks to a discerning user and code integrity verification.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"540\" src=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-codecov-attack-1024x540.jpg\" alt=\"An illustration showing how cyberriminals were able to comrpomise Codecov's Bash uploader to modify software without authorization but that it was a single user performing a code integrity check that brought the situation to light\" class=\"wp-image-3811\" srcset=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-codecov-attack-1024x540.jpg 1024w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-codecov-attack-300x158.jpg 300w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-codecov-attack-560x295.jpg 560w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-codecov-attack-1536x810.jpg 1536w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-codecov-attack-940x496.jpg 940w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-codecov-attack.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Image caption: This graphic shows how code integrity verification could have minimized the impact of the Codacov attack<\/em>.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4. 3CX Breach: The Double Supply Chain Compromise (2023)<\/h3>\n\n\n\n<p>If you think that a single supply chain attack is bad, imagine the damage that a <em>series<\/em> of such attacks can do. Unfortunately, that&#8217;s precisely what victims of the 3CX Software breach experienced firsthand in 2023.<\/p>\n\n\n\n<p><a href=\"https:\/\/cloud.google.com\/blog\/topics\/threat-intelligence\/3cx-software-supply-chain-compromise\">According to Mandiant<\/a>, <a href=\"https:\/\/cloud.google.com\/blog\/topics\/threat-intelligence\/3cx-software-supply-chain-compromise\">Google\u2019s cybersecurity firm subsidiary that ran the investigation, it was the first time the company saw a software supply chain attack lead directly to another software supply chain attack.<\/a><\/p>\n\n\n\n<p>So, how did the bad guys pull it off? They injected malicious code into a legitimate (and digitally signed) version of the 3CX Desktop App, a chat, video, voice, and conference call software for Windows and macOS devices. (This software was used by an estimated 12+ million users worldwide.)<\/p>\n\n\n\n<p>However, according to Mandiant, the infection started a year earlier. A 3CX employee had installed X_TRADER on their computer. Thes professional trading software package, which was developed by Trading Technologies, had been tampered with and distributed via a previous software supply chain compromise.<\/p>\n\n\n\n<p>What a small world it is, huh? As 90s late-night infomercials hosts always loved to say: \u201cBut wait, there&#8217;s more!\u201d To add insult to injury, the X_TRADER platform was discontinued in 2020 \u2014 a full <em>two years<\/em> before the software was compromised. However, the decommissioned code was still available for download from the legitimate Trading Technologies website in 2022.<\/p>\n\n\n\n<p>In addition, the unused package was still officially signed by &#8220;Trading Technologies International, Inc.&#8221; with a certificate that would have expired in October 2022. These combined factors were a disaster waiting to happen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"565\" src=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-3cx-attack-1024x565.jpg\" alt=\"An illustration demonstrating how a code integrity verification check likely could have reduced the effect of the 3CX software supply chain attack\" class=\"wp-image-3812\" srcset=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-3cx-attack-1024x565.jpg 1024w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-3cx-attack-300x166.jpg 300w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-3cx-attack-560x309.jpg 560w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-3cx-attack-1536x848.jpg 1536w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-3cx-attack-940x519.jpg 940w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/how-code-integrity-check-could-prevent-3cx-attack.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Image caption: The graphic shows the flaws that caused the 3CX supply chain attack.<\/em><\/figcaption><\/figure>\n\n\n\n<p>So, both malicious codes were signed. Does it mean that code signing is inherently flawed? Nope, quite the opposite. Remember: Code signing protects your software from tampering, but only from the moment you apply your digital signature and timestamp to it. Furthermore, if you don&#8217;t have processes and policies in place to check the integrity of the code prior to signing it, you risk endorsing compromised code.<\/p>\n\n\n\n<p>That reinforces the fundamental role of code integrity verification throughout the software development lifecycle. From the software&#8217;s cradle to its grave, any additions and changes to code must be verified, especially before allowing your software to be signed. This way, it\u2019s caught before your product is released, downloaded, or installed by customers or other end users.<\/p>\n\n\n\n<p>Now, before returning to the present day, let&#8217;s look at one last incident that happened recently.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. The Malicious Chrome Extensions With 2.3 Million Downloads (2025)<\/h3>\n\n\n\n<p>New year, new attack. In the first week of July 2025, Koi Security <a href=\"https:\/\/blog.koi.security\/google-and-microsoft-trusted-them-2-3-million-users-installed-them-they-were-malware-fb4ed4f40ff5?gi=60026fb248cb\">discovered and reported<\/a> 18 seemingly separate malicious Chrome extensions available for download on Chrome and Edge stores. What makes matters worse is that several had Google&#8217;s verified badges or featured placements and had garnered over 2.3 million downloads.<\/p>\n\n\n\n<p>As it turns out, these extensions were all part of one centralized attack campaign called RedDirection, which used malware to monitor all browser tab activities. Based on their investigation, it appears that all of the infected extensions were legitimate and unaltered when the developers uploaded them initially. (Apparently, they remained so for years.) This is why Koi\u2019s researchers believe attackers compromised the code of these extensions later and not when it was initially released.<\/p>\n\n\n\n<p>That part was easy for the bad guys, given that Google&#8217;s auto updates provide users with the newest versions of the software without actively informing or requiring users to do anything. This is a major flaw, as it denies users a chance to perform a manual code integrity verification (e.g., compare the downloaded code&#8217;s hash with the original hash) before installing updates to the software.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-avoid-installing-malware-1024x559.jpg\" alt=\"Performing a code integrity check can help you avoid downloading and installing malware like the example shown in this illustration\" class=\"wp-image-3813\" srcset=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-avoid-installing-malware-1024x559.jpg 1024w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-avoid-installing-malware-300x164.jpg 300w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-avoid-installing-malware-560x306.jpg 560w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-avoid-installing-malware-1536x839.jpg 1536w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-avoid-installing-malware-940x513.jpg 940w, https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-avoid-installing-malware.jpg 1600w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>Image caption: The graphic shows what happens when the automatic update process of an extension or application is flawed.<\/em><\/figcaption><\/figure>\n\n\n\n<p>Google did remove some of these infected extensions. But this is just a drop in the sea of malware-laden software. And anyway, would you really let an automated process install something on your device without being able to run any code integrity verifications?&nbsp;&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4 Actions Linked to Code Integrity Verification That You Can Implement Right Now&nbsp;<\/h2>\n\n\n\n<p>Here we are, back in the present. It\u2019s clear to see the invaluable role that code integrity verification plays in preventing a business&#8217;s worst nightmare from occurring. It could have helped prevent everything from costly data breaches to devastating malware infections.&nbsp;<\/p>\n\n\n\n<p>But there is still something that companies directly affected by the events could have done to mitigate the impact. And guess what? You can implement these measures, too.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Secure Your Access Credentials<\/h3>\n\n\n\n<p>No matter how tempting it is, never, ever default or hard-code credentials and secrets.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Follow <a href=\"https:\/\/sectigostore.com\/blog\/12-password-policy-best-practices-to-adopt-today\/\">password policy best practices<\/a>.<\/li>\n\n\n\n<li>Replace all default usernames and passwords with unique, strong logins.<\/li>\n\n\n\n<li>Opt for <a href=\"https:\/\/www.techtarget.com\/searchsecurity\/definition\/multifactor-authentication-MFA\">multi-factor authentication<\/a> (MFA)<\/li>\n\n\n\n<li><a href=\"https:\/\/sectigostore.com\/blog\/passwordless-login-security-mistakes-and-how-to-avoid-them\/\">Go passwordless<\/a>, if you can.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. Implement a Code Integrity Verification Policy<\/h3>\n\n\n\n<p>Provide comprehensive guidance on your code integrity verification policies and processes.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enforce a policy that requires code integrity verification via a combination of code signing and event logging.<\/li>\n\n\n\n<li>Ensure this policy doesn&#8217;t apply only to production and distribution, but to every single step of the development process.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. Secure Your SDLC<\/h3>\n\n\n\n<p>Harden your software development lifecycle.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set up continuous monitoring and logging. It&#8217;ll allow you to keep an eye on who accesses what and which changes are made throughout the development process.<\/li>\n\n\n\n<li>Use <a href=\"https:\/\/owasp.org\/www-community\/Source_Code_Analysis_Tools\">static code analyzer tools<\/a> such as <a href=\"https:\/\/github.com\/security\/advanced-security\">GitHub Advanced Security<\/a> or <a href=\"https:\/\/github.com\/OWASP\/ASST\">OWASP Automated Software Security Toolkit<\/a> (ASST). Most of them are free and they help you identify coding mistakes and security vulnerabilities so that you can fix them immediately.<\/li>\n\n\n\n<li><a href=\"https:\/\/sectigostore.com\/blog\/devsecops-a-definition-explanation-exploration-of-devops-security\/\">Shift security left<\/a> by embedding security throughout the SDLC and in your CI\/CD practices.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. Secure Your Organization With PKI<\/h3>\n\n\n\n<p>Take full advantage of public key infrastructure (PKI) to secure your public and private resources. This versatile framework enables organizations to authenticate users and devices, protect the confidentiality of data, and ensure its integrity.<\/p>\n\n\n\n<p>The best part? It isn&#8217;t limited to code integrity verification. PKI has numerous applications for virtually every organization. In addition to signing your software and applications with a <a href=\"https:\/\/sectigostore.com\/code-signing\/sectigo-ev-code-signing-certificate\">code signing certificate<\/a>, PKI enables you to:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Protect your websites and virtual private network (VPN) access with <a href=\"https:\/\/sectigostore.com\/ssl-certificates\">secure socket layer\/transport layer security (SSL\/TLS) certificates<\/a>.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Secure your emails and authenticate devices with <a href=\"https:\/\/sectigostore.com\/id\/email-signing-certificate\">email signing certificates<\/a>.<\/li>\n\n\n\n<li>Authenticate and protect the integrity of your sensitive documents using a <a href=\"https:\/\/sectigostore.com\/id\/document-signing-certificate\">document signing certificate<\/a><a href=\"https:\/\/sectigostore.com\/id\/document-signing-certificate\">.<\/a><\/li>\n\n\n\n<li>Authenticate and enable secure communications for the IoT and \u201csmart\u201d technologies across your IT ecosystem.<\/li>\n<\/ul>\n\n\n\n<p>PKI is the ace up your sleeve for end-to-end security. <a href=\"https:\/\/sectigostore.com\/blog\/demystifying-pki-technology-it-security\/\">Learn what it is<\/a>, <a href=\"https:\/\/sectigostore.com\/blog\/how-does-pki-work\/\">how it works<\/a>, and <a href=\"https:\/\/sectigostore.com\/blog\/practical-pki-uses-and-applications\/\">where you can implement it<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Final Thoughts About 5 Real-World Software Nightmares That Could Have Been Prevented with Code Integrity Verification<\/h2>\n\n\n\n<p>Cybersecurity threats aren&#8217;t going away. The bad guys will always look for new tactics and weaknesses to exploit. Code integrity verification mechanisms like hashing, code signing, and SDLC continuous monitoring and logging are all actions that can help your company when and if the worst happens.<\/p>\n\n\n\n<p>So, now that we&#8217;re back in the present, start embracing these code integrity verification best practices. It&#8217;ll help you guarantee a more secure future for your software, organization, and customers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn from the past to prepare for the future with these 5 infamous cyber attacks (and their disastrous consequences) that could have been prevented with code integrity check. Operational downtime,&#8230;<\/p>\n","protected":false},"author":23,"featured_media":3815,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[318,1],"tags":[326,327],"class_list":["post-3807","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-code-signing","category-web-security","tag-code-integrity","tag-code-integrity-verification","post-with-tags"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented - InfoSec Insights<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented - InfoSec Insights\" \/>\n<meta property=\"og:description\" content=\"Learn from the past to prepare for the future with these 5 infamous cyber attacks (and their disastrous consequences) that could have been prevented with code integrity check. Operational downtime,...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/\" \/>\n<meta property=\"og:site_name\" content=\"InfoSec Insights\" \/>\n<meta property=\"article:published_time\" content=\"2025-07-29T09:55:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-29T11:18:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-feature.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"1000\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Nadia Bonini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nadia Bonini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/\"},\"author\":{\"name\":\"Nadia Bonini\",\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/#\\\/schema\\\/person\\\/f4ce6500b99e7563f71f0d1d6394f135\"},\"headline\":\"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented\",\"datePublished\":\"2025-07-29T09:55:00+00:00\",\"dateModified\":\"2025-07-29T11:18:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/\"},\"wordCount\":2449,\"image\":{\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/code-integrity-check-feature.jpg\",\"keywords\":[\"code integrity\",\"code integrity verification\"],\"articleSection\":[\"Code Signing\",\"Web Security\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/\",\"url\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/\",\"name\":\"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented - InfoSec Insights\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/code-integrity-check-feature.jpg\",\"datePublished\":\"2025-07-29T09:55:00+00:00\",\"dateModified\":\"2025-07-29T11:18:23+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/#\\\/schema\\\/person\\\/f4ce6500b99e7563f71f0d1d6394f135\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/code-integrity-check-feature.jpg\",\"contentUrl\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/code-integrity-check-feature.jpg\",\"width\":1600,\"height\":1000,\"caption\":\"Feature image for the article on how a simple code integrity check could have prevented suply chain attacks and software application security issues\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/5-nightmares-that-code-integrity-verification-could-have-prevented\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/\",\"name\":\"InfoSec Insights\",\"description\":\"SectigoStore.com Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/sectigostore.com\\\/blog\\\/#\\\/schema\\\/person\\\/f4ce6500b99e7563f71f0d1d6394f135\",\"name\":\"Nadia Bonini\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/871770d58b7b0abd48f90fb2f9643895c766b7ab6c1d4fa58e3651941cdc9e63?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/871770d58b7b0abd48f90fb2f9643895c766b7ab6c1d4fa58e3651941cdc9e63?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/871770d58b7b0abd48f90fb2f9643895c766b7ab6c1d4fa58e3651941cdc9e63?s=96&d=mm&r=g\",\"caption\":\"Nadia Bonini\"},\"description\":\"Nadia is a technical writer with more than 15 years of experience in IT, software development projects, email and cybersecurity. She has worked for leaders in the IT industry and Fortune 500 companies. A Certified CSPO mail application security product owner and a former application security engineer, she also works as a professional translator. She is a big fan of Ubuntu, traveling and Japan.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented - InfoSec Insights","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/","og_locale":"en_US","og_type":"article","og_title":"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented - InfoSec Insights","og_description":"Learn from the past to prepare for the future with these 5 infamous cyber attacks (and their disastrous consequences) that could have been prevented with code integrity check. Operational downtime,...","og_url":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/","og_site_name":"InfoSec Insights","article_published_time":"2025-07-29T09:55:00+00:00","article_modified_time":"2025-07-29T11:18:23+00:00","og_image":[{"width":1600,"height":1000,"url":"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-feature.jpg","type":"image\/jpeg"}],"author":"Nadia Bonini","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Nadia Bonini","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/#article","isPartOf":{"@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/"},"author":{"name":"Nadia Bonini","@id":"https:\/\/sectigostore.com\/blog\/#\/schema\/person\/f4ce6500b99e7563f71f0d1d6394f135"},"headline":"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented","datePublished":"2025-07-29T09:55:00+00:00","dateModified":"2025-07-29T11:18:23+00:00","mainEntityOfPage":{"@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/"},"wordCount":2449,"image":{"@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/#primaryimage"},"thumbnailUrl":"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-feature.jpg","keywords":["code integrity","code integrity verification"],"articleSection":["Code Signing","Web Security"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/","url":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/","name":"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented - InfoSec Insights","isPartOf":{"@id":"https:\/\/sectigostore.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/#primaryimage"},"image":{"@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/#primaryimage"},"thumbnailUrl":"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-feature.jpg","datePublished":"2025-07-29T09:55:00+00:00","dateModified":"2025-07-29T11:18:23+00:00","author":{"@id":"https:\/\/sectigostore.com\/blog\/#\/schema\/person\/f4ce6500b99e7563f71f0d1d6394f135"},"breadcrumb":{"@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/#primaryimage","url":"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-feature.jpg","contentUrl":"https:\/\/sectigostore.com\/blog\/wp-content\/uploads\/2025\/07\/code-integrity-check-feature.jpg","width":1600,"height":1000,"caption":"Feature image for the article on how a simple code integrity check could have prevented suply chain attacks and software application security issues"},{"@type":"BreadcrumbList","@id":"https:\/\/sectigostore.com\/blog\/5-nightmares-that-code-integrity-verification-could-have-prevented\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sectigostore.com\/blog\/"},{"@type":"ListItem","position":2,"name":"5 Real-World Software Nightmares That Code Integrity Verification Could Have Prevented"}]},{"@type":"WebSite","@id":"https:\/\/sectigostore.com\/blog\/#website","url":"https:\/\/sectigostore.com\/blog\/","name":"InfoSec Insights","description":"SectigoStore.com Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sectigostore.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/sectigostore.com\/blog\/#\/schema\/person\/f4ce6500b99e7563f71f0d1d6394f135","name":"Nadia Bonini","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/871770d58b7b0abd48f90fb2f9643895c766b7ab6c1d4fa58e3651941cdc9e63?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/871770d58b7b0abd48f90fb2f9643895c766b7ab6c1d4fa58e3651941cdc9e63?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/871770d58b7b0abd48f90fb2f9643895c766b7ab6c1d4fa58e3651941cdc9e63?s=96&d=mm&r=g","caption":"Nadia Bonini"},"description":"Nadia is a technical writer with more than 15 years of experience in IT, software development projects, email and cybersecurity. She has worked for leaders in the IT industry and Fortune 500 companies. A Certified CSPO mail application security product owner and a former application security engineer, she also works as a professional translator. She is a big fan of Ubuntu, traveling and Japan."}]}},"_links":{"self":[{"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/posts\/3807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/comments?post=3807"}],"version-history":[{"count":3,"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/posts\/3807\/revisions"}],"predecessor-version":[{"id":3817,"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/posts\/3807\/revisions\/3817"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/media\/3815"}],"wp:attachment":[{"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/media?parent=3807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/categories?post=3807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sectigostore.com\/blog\/wp-json\/wp\/v2\/tags?post=3807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}