网络安全-思科safec库

Posted by 周思进 on June 27, 2021

计算机程序可以认为就是处理输入数据然后输出处理结果,这中间就涉及到数据的传递处理,比如内存拷贝操作,字符串拷贝操作等等,而任何一个处理操作不当就可能导致程序异常崩溃,或者遭受其他恶意攻击,这就需要对这些数据操作异常小心。

数据的操作自然离不开 C 库函数了,如 memcpy、strcpy 等等。这些函数如果使用不当,则是很危险的,比如 memcpy 拷贝的长度实际大于目标长度,这就造成内存越界了。

而业界也有针对此类接口进行二次封装修改,以减少内存越界等这种错误的可能性,比如思科的 safec 库,都以原 C 库接口名加后缀 _s 命名作为替换,如 memcpy_s。下面就简单说下 safec 库的编译操作,具体接口使用说明可以直接看代码。

safeclib 其对应的 github 地址:
https://github.com/rurban/safeclib

然后下载了当前较新的版本 safeclib-3.6.tar.gz,根据 README 说明文档,构建操作如下:

./build-aux/autogen.sh
./configure
make

但实际执行时出现如下错误:
➜ safeclib-3.6 ./build-aux/autogen.sh fatal: not a git repository (or any of the parent directories): .git

说明文档给出了对应的提示
autogen.sh only needs to be run if you are building from the git repository.

就通过 git clone 操作下载了源码

git clone https://github.com/rurban/safeclib.git

再执行 ./build-aux/autogen.sh 命令就可以生成 configure 脚本文件了,不知道之前下载的压缩包源码要咋编译~

然后执行 configure 脚本生成 Makefile 文件

./configure CFLAGS="-fPIC" CC=arm-linux-gnueabihf-gcc --disable-extensions --disable-constraint-handler  --prefix=`pwd`/install_dir -host=arm-linux

选项 --disable-extensions--disable-constraint-handler 则是为了减少库大小。

随后 make;make install 即可完成编译安装