When discussing coding errors that lead to security problems what has been said to be the worst enemy of security?

  • PDFView PDF

Highlights

A comprehensive overview of existing security vulnerabilities.

Critical analysis of the state-of-the-art mitigation techniques and their pros and cons.

Analysis of new cyber attack patterns in emerging technologies.

Potential future research directions in cyber security.

Abstract

The exponential growth of the Internet interconnections has led to a significant growth of cyber attack incidents often with disastrous and grievous consequences. Malware is the primary choice of weapon to carry out malicious intents in the cyberspace, either by exploitation into existing vulnerabilities or utilization of unique characteristics of emerging technologies. The development of more innovative and effective malware defense mechanisms has been regarded as an urgent requirement in the cybersecurity community. To assist in achieving this goal, we first present an overview of the most exploited vulnerabilities in existing hardware, software, and network layers. This is followed by critiques of existing state-of-the-art mitigation techniques as why they do or don't work. We then discuss new attack patterns in emerging technologies such as social media, cloud computing, smartphone technology, and critical infrastructure. Finally, we describe our speculative observations on future research directions.

Keywords

Cybersecurity

Malware

Emerging technology trends

Emerging cyber threats

Cyber attacks and countermeasures

Cited by (0)

Crown copyright © 2014 Published by Elsevier Inc. All rights reserved.

What is code vulnerability?

Now you can learn everything about Code Vulnerability in an audio version.

Give it try!

In today’s world, operating systems and applications are connected over the internet and are regularly updated. These updates for most time are not done to add more features but to fix bugs. This makes the system stronger against newly deployed viruses and malware.

Unfortunately, most software does not have this type of link and hence leaving them vulnerable to intruders. Two ways you can make sure that your software isn’t compromised is either by accessing the software at every machine to change the code every time an attacker comes up or by decreasing your code vulnerability in your development process.

Code vulnerability is a term related to the security of your software. It is a flaw in your code that creates a potential risk of compromising security. This flaw will allow hackers to take advantage of your code by attaching an endpoint to extract data, tamper your software or worse, erase everything. While you make feel that this happening is highly unlikeable, data from Contrast Security says that around 76% of applications contain at least one vulnerability. 34% contained more than four vulnerabilities.

A significant number of shocking failures of a developer that is bound to haunt you. The vulnerable code will make the user as well as the developer vulnerable and once exploited, will just harm everyone. 

Every 3 out of 4 applications in use have code vulnerability

So what type of vulnerabilities your code may have? While the list is long and detailed, we mention a few of those that are most highly likely to happen and also those who cause the most damage. Vulnerabilities your software can have are:

Injection:

Injection flaw allows attackers to ‘inject’ code to a system through a simple system calls. These calls are generally done using external programs via shell commands. Injections done to database or SQL Injections are the most common and dangerous of all. Usually, the attacker finds a parameter that passes through the database, uses that parameter to carry a malicious SQL command as a content. The database stores it and mistakes it as a code, tricking the software to send, change, or delete the database. SQL Injections are so dangerous that there is practically no web application that is safe from it, as all of them work on external commands. All someone can do is, code the program so perfect that injections are more complex and hence leaving no vulnerability behind.

Cross-Site Scripting (XSS):

A type of injection, yet we classify it as a standalone because of the victim. XSS, as the name suggests, is done on websites. A malicious script, generally in Javascript and HTML is injected as data to a site where it can attach itself to cause security issues. It is nearly impossible that the user browser will detect such scripts because for them the script came from a trusted source. It is generally done in codes that contain sensitive information like your contact number or much worse, your credit card details. The example below will make XSS clearer.

Buffer Overflow:

Buffer is a sequential memory allocated to contain data like strings or integers. Consider if this buffer gets bombarded with data or requests more than what it can handle. It will overflow into adjacent storage. This overflow can create significant issues like crashing your software, loss of data, or the most dangerous – creating an entry point for cyberattacks. This code vulnerability is called Buffer Overflow and depends on the programming language to language. Javascript and Pearl are two languages that avoid such attacks, but the building block languages, C and C++ are profoundly affected that the whole system may get compromised. Attackers do this usually by overwriting code blocks of execution path in a software. The data may contain some script or code that may prompt the software to do some unwanted activity.                                                          

Broken Authentication:

Rising to the charts of top code vulnerabilities in OWASP Top 10 to the second rank, Broken authentication has haunted even the top products and websites all these years. Broken authentication vulnerability occurs when an attacker uses different ways to get into someone else’s account. It leads to false authorization and then the loss of sensitive data yet again. While some of these issues are not developers fault, it still becomes the duty of a coder to build a robust code that can tackle such problems.

The code becomes vulnerable in cases when there are no multiple verifications or session timeouts. The most common code vulnerability in web apps is when a session ID is created for a user and the hacker somehow retrieves and uses URL rewriting to recreate that session. Another way is if a hacker can get into your password database using other security vulnerabilities, and if it is not correctly hashed and salted, one can reverse the encoding and display everyone’s password.

Security is the integrity of your software, and your code is the shield of it.

You need to make a stronger code with no holes to defend your software. So having discussed four significant code vulnerabilities, we ask what the ways to reduce it are.

Some manual methods that coders can use are:

  1. Use the method of least privilege, authorizing your users to have the least amount of permissions to use the software. Will limit the area of attack for hackers.
  2. Have an appropriate output and action for limiting cases. Attackers aim to confuse software with codes and script that software recognizes at input easily but has no predefined response for it. Your code must be able to identify all types of input and reject all malicious ones.
  3. Include tools that guide your source code from others. Your source code is not only your intellectual property but also a key for hackers to locate and access databases. There are many tools for different coding languages, for example, obfuscator for Visual Studio to prevent reverse engineering, making cloning your source code very difficult.
  4. Make sure your code runs in different sandboxes without compromising its integrity using Code Access Security.
  5. Validate all inputs and users. User validation needs to have multiple clearances if the application works on money and essential storage. Validating data from all sources will make sure that injection attacks are defended.
  6. Attack your code. Get your code through a whitehat hacker to check it’s robustness and if they find any holes or vulnerabilities.
  7. Do a secure code review for all your coding practices. It is highly vital while developing software.

Following the above methods will make your code less vulnerable. But securing your code is much harder than you can imagine. Every year a new security vulnerability travels over the internet, which is unknown. Hence tackling it would require a noted cybersecurity expert in your team. Ensuring all methods and doing secure code review is a time consuming and highly costly process.

Conclusion:

A better alternative for this is using an automated tool like CodeGrip, that analyses your code and scans it for any security issues. It finds out code vulnerabilities and shows them separately from other issues also found like code smellsand bugs. All code vulnerabilities are noted separately under a tab and also pointed in your code. You can use the suggested solution to find out what changes you can do to remove the security vulnerabilities. CodeGrip makes sure that your code stays strong during attacks and without any security vulnerability.

Make your software secure with Codegrip
Sign up on Codegrip now and get Code vulnerability reports for Free!

Sign Up Now

Liked what you read? Subscribe and get fresh updates.

P.S. Don’t forget to share this post

Which of the following was described as the main drawback to the waterfall software development model?

The disadvantage of waterfall development is that it does not allow much reflection or revision. Once an application is in the testing stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.

Which of the following are advantages of an iterative design process?

Benefits of Using Iterative Design Highlights and helps to resolve misunderstandings, expectation issues, and requirement inconsistencies as early in the process as possible. Helps to ensure the product is fit for purpose and meets its functionality, usability, and reliability objectives.

Which of the following is the name for a program that reproduces by attaching copies of itself to other programs and which often carries a malicious payload?

A worm is a standalone program that replicates itself to infect other computers, without requiring action from anyone. Since they can spread fast, worms are often used to execute a payload—a piece of code created to damage a system.

Toplist

Neuester Beitrag

Stichworte