Introduction Information assurance is one of the major dimensions of computer systems security. It involves protection of valuable data and facts from possible damage, misuse, or theft. In some cases, the data theft may lead to losses estimated to reach millions; therefore, companies and organizations do everything possible to ensure that their information is safe (Bishop, 2003). Many techniques have been discovered and applied to ensure safety, but most of them have been outwitted by hackers. The battle with hackers is getting tougher every day, and Shawn Henry having analyzed the situation believes that it would be impossible to defeat the hackers (Barrett. 2012). However, there is still some hope that the issue of the hackers’ attacks can be managed if the best practices that have been developed so far will be implemented by all developers. Incorporation of security issues in the software development life cycle commonly known as Secure SDLC is so far undefeated. It involves the assessment and testing the software for common and anticipated flaws and security loopholes in every stage of its development, hence correcting them appropriately. It is a more secure and cheaper option than trying to stand against and complete the whole software, so it should be tested only to realize its weaknesses that would have been located and rectified in an earlier stage (Grembi, 2008; Rakesh & Vignesh, 2011). We look at the general classes of attacks and vulnerabilities that come as a result of software flaws. General classes of attacks First, we have authentication management flaws. This refers to weak passwords that can be discovered using the brutal hacking (Meunier, 2008). Also, a poor storage of passwords makes them easily accessible to cybercriminals, thus becoming another weakness detected. The password management system should incorporate ease of use together with high quality security. Complicated systems that are not user friendly make the whole system more vulnerable as users try navigational paths that help them bypass some security checks, and with time, these paths become loopholes for attackers to use. Passwords have been in existence in the computing world for a long time as they become a common and quite effective way to ensure security of personal and corporation data. The very initial form is when the user should have a username and a password to log into a system. In the very early stages, passwords were stored on the server in plain text form. When a user inputs his password, it is compared with the one in the database, and if they match, access is allowed. If a password was intercepted at any stage, then it was easy for an attacker to access the system in impersonation of a legitimate user. Due to the insecurity associated with this method of authentication, hashed passwords were introduced where the specimen password would be run through a hashing algorithm before storage. The hash would be a sequence of bytes that cannot be reversed to reproduce the password. When logging in, the user types his password, and the system produces its hash and compares it with the stored sample. There is no fear of interception since the hash is almost useless to a hacker. Then there was a chall