- Home >> Technical Service >> Software
Software Security Code Technology
Secure Code Techniques in Software Development
At this stage, with the development of science and technology, various development tools emerge in an endless stream, which provides great convenience for the smooth progress of programmers' programming work. It should be noted that whether it is to ensure the normal operation of the program or based on security considerations, programmers have the right and obligation to ensure the security of the program code, and strive to strengthen its functions on this basis. The so-called security code refers to the same code that works at different trust levels, which can realize the operation of any processing information in other trust levels at another trust level, in network programs, CGI scripts, and computer Web browsers are distributed. Therefore, it is of great significance to process the program in the running and debugging period with safe code technology.
1. The importance of security in software development
Software in a broad sense refers to the sum of computer instructions and data organized according to a certain sequence and rules. Software can generally be divided into two types: system software and application software. The former can be regarded as the operating platform of the latter. From the perspective of programmers, In other words, a software is equivalent to a complex of data, programs, and documents. In the information age where computers and the Internet are becoming more and more popular, software has become an indispensable tool in people's daily life, and almost every operation is related to software programs.
Safety awareness, safety design and safety implementation in the process of software development directly determine software safety. In view of the fact that current software development products are becoming more and more "fools", they emphasize the perfect function of the application layer, and objectively ignore the perfect mechanism of the security layer, which is easy to be coveted by hackers. Although the industrialization of the Internet has formed an industry oligarchy like "BAT", there are still many loopholes in the security level, and the life trajectory of modern people is closely related to software applications, such as office, entertainment, consumption, etc. The hacker attacks that have been exposed frequently in recent years are essentially attacks after finding software loopholes and defects, resulting in a large amount of information leakage and serious losses to the parties; therefore, security must be emphasized in software development.
2. Security code measures during the program development period
In the process of writing code, programmers cannot accurately find out the existing safety hazards, nor can they prevent the occurrence of hidden dangers in time, so the efficiency of code writing work is affected to a certain extent. Therefore, for programmers, they should not only base themselves on the needs of the current work, but should constantly improve their self-cultivation in their work and constantly summarize their programming experience. According to this phenomenon, the famous network expert Jeff Schmidt put forward the idea of safe writing, and we will conduct a targeted analysis based on this below.
2.1 Only grant the minimum permissions to the software
Software obtains different levels of permissions according to its own functions. For example, compared with communication software, anti-virus software has higher and lower-level permissions. When the program changes the registry and system files, because it needs to pass the authority of system-level functions, it also brings opportunities to hackers to a certain extent. To this end, we can divide different programs into different modules according to their functions, and grant minimum permissions to each module. The advantage of granting the least privilege to software is that it is easy for programmers to detect and maintain, and it can also be more convenient to conduct audits.
2.2 Check all return codes
When calling external library functions provided by the system or a third party, programmers must carefully check all return codes to provide a practical guarantee for the stable operation of the program. In essence, the return code is an error feedback and abnormal feedback mechanism in software development. When the software is working normally, the system will feed back relatively complex and comprehensive information content, but it is not allowed and does not have the conditions for implementation during the development process. Programmers It is necessary to judge through simple feedback information and quickly understand the error location information. Therefore, the return code is usually a judgment code; there are many reasons for program errors, such as some non-standard formatted environment variables, lack of sufficient system resources, and misoperations caused by users editing configuration files or registry keys by themselves. In addition, during the running of the program, the functions of each module must be fully coordinated to make the program work better in any environment.
2.3 Race condition
The so-called race condition means that the attacker will take the opportunity to enter the system when the user is writing a file, modifying the shared volume, or updating the data, and modify the program data, causing the program to generate wrong input. For example, if a file is controlled before the program reads and writes the file, the attacker will write a piece of instruction code to transfer the written program to another file, which is more likely to happen in a temporary file. The attacker will replace the user's temporary file with his own fake file to realize the transfer of data information. In order to effectively prevent this from happening, we prevent and control it from two aspects: first, verify resource files in time to reduce the probability of accidents; second, establish a private directory to store some temporary files, and implement Lockdown on the system.
2.4 Perform boundary checks to prevent buffer overflows
When there is a buffer overflow vulnerability in the program, the attacker will often implant some security codes with certain permissions into it. At this time, he will use some means to obtain the system administrator permissions of the attacked subject. Attackers can use this vulnerability not only to stop the target service, but also to gain more access rights or, for remote services with buffer overflow vulnerabilities, to control the target through remote operations. In addition, for the inspection code, the situation of storing data in its dynamic and static buffers needs to be determined according to the type of development language used. At the same time, in order to ensure the safety of the buffer, it is necessary to start tracking each buffer from the starting position of the buffer until the task is stopped when the program ends.
2.5 Guaranteed to automatically close when the code fails
When the user's software system is attacked, the method can realize the protection of the user's computer security. Specifically, if we find that the software system cannot work normally, we should immediately stop all access to the system authority, shut down the computer, and prevent attackers from entering the control system. For example, if an attacker adopts a mandatory denial-of-service function when the programmer is writing the code of the firewall system, the programmer should immediately disconnect the network for self-protection, thereby minimizing the loss and realizing the protection of the computer. Protect.
3. Safety measures during the commissioning period
Software development is a long-term and complicated work, but from the perspective of life cycle theory, the most complicated work is not the design and implementation link, but the inspection in the debugging stage must be carried out to ensure that the various programs of the software system are in normal operation. condition. Although this link concentrates the wisdom of all the staff in the development team, there will inevitably still be some potential safety hazards. For this reason, it is necessary to formulate standards for auditing program performance and use them to guide various debugging tasks. In this process, we need to clarify the following points:
(1) Different from the standards used in the development of new software, the software maintenance process also has its own set of operating standards, and this requirement is much stricter than the development process. The process of software program debugging and maintenance is not only the detection of practical functions, but also includes system pressure resistance and limit, etc. Considering that there is a high possibility of system crash during debugging and maintenance, it is necessary to establish a complete and powerful software modification control system based on this.
(2) In order to make the goal of the whole debugging work clearer and to facilitate the inspection of the whole process, it is generally chosen to establish the operation diagram of the program according to the actual situation, carry out targeted data flow analysis, and then analyze the occurrences at the exit and entry of the program. The probability of danger is minimized and the whole procedure is streamlined. At the same time, in order to avoid providing convenience for the attacker's anti-tracking, a relatively complex security code must be used.
(3) In order to find problems through its detection in abnormal environments, it is necessary to use some methods to input some data or commands to the running program to effectively avoid the occurrence of security risks. For example, through the combined effect of debugger and disassembly language, let the code run in an environment with abnormal parameters; avoid format errors in configuration files or other types of files; use the inspection mechanism of garbage data to realize the inspection of network data receive etc.
(4) In the testing phase, it is very necessary to use testing self-attack methods to deal with software involving network data. For example, we can use an automatic vulnerability scanning program to detect core systems such as Email and DNS servers of various application software. Sometimes it is also possible to use the port scanning method to detect the server connected to the Internet, and then through the attack function of the dial-up test, and then make the defective modem connected to the network reveal its original form. These methods are practical, relying on the working mechanism of the internal network architecture, through its simulation, can expose the vulnerabilities on the common platform, and then find the problem settings of the firewall, operating system and server program.
Summarize
To sum up, in order to ensure the security of the computer, it is necessary to write safe and reliable running programs. Correspondingly, this also puts forward strict requirements for programmers. Not only must they always have the awareness of safe writing, but also constantly Improve your skills, master security code technology, focus on experience accumulation and innovation, and completely crush the attacker's conspiracy.
The above are the details of security code technology in software development introduced by Shenzhen Zuchuang Microelectronics Co., Ltd. for you. If you have software and hardware function development needs for smart electronic products, you can rest assured to entrust them to us. We have rich experience in customized development of electronic products, and can evaluate the development cycle and IC price as soon as possible, and can also calculate PCBA quotations. We are a number of chip agents at home and abroad: Songhan, Yingguang, Jieli, Ankai, Quanzhi, realtek, with MCU, voice IC, Bluetooth IC and module, wifi module. We have hardware design and software development capabilities. Covering circuit design, PCB design, single-chip microcomputer development, software custom development, APP custom development, WeChat official account development, voice recognition technology, Bluetooth wifi development, etc. It can also undertake the research and development of smart electronic products, the design of household appliances, the development of beauty equipment, the development of Internet of Things applications, the design of smart home solutions, the development of TWS earphones, the development of Bluetooth earphone speakers, the development of children's toys, and the research and development of electronic education products.
- TOP