App安全测评问题处理

App安全测评问题处理

App安全测评问题分类

1.自身安全
  • 权限信息-info.plist中权限字段访问
  • 行为信息-访问相册、拨打电话
2.客户端数据存储安全
  • 动态调试攻击风险
  • 第三方SDK检测
  • 敏感词
3.二进制代码保护
  • 代码未混淆风险
  • 输入监听风险
  • 调试日志函数调用风险
  • 配置文件信息明文存储风险
  • 动态库信息泄露风险
  • WebView组件跨域访问危险
  • 数据库明文存储风险
  • 越狱设备运行风险
4.数据传输安全
  • HTTP数据传输安全
  • HTTPS未校验服务器证书漏洞
  • URL Schemes劫持漏洞
5.加密算法及数据安全
  • AES/DES加密算法不安全使用漏洞
  • 弱哈希算法使用漏洞
  • 随机数不安全使用漏洞
6.iOS应用安全规范
  • XcodeGhost感染漏洞
  • 不安全的API函数引用风险
  • 未使用自动管理内存技术风险

--

App安全测评问题处理

1.动态调试攻击风险(阻止 gdb/lldb 调试)
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
// 阻止 gdb/lldb 调试
// 调用 ptrace 设置参数 PT_DENY_ATTACH,如果有调试器依附,则会产生错误并退出
#import <dlfcn.h>
#import <sys/types.h>

typedef int (*ptrace_ptr_t)(int _request, pid_t _pid, caddr_t _addr, int _data);
#if !defined(PT_DENY_ATTACH)
#define PT_DENY_ATTACH 31
#endif

void anti_gdb_debug() {
    void *handle = dlopen(0, RTLD_GLOBAL | RTLD_NOW);
    ptrace_ptr_t ptrace_ptr = dlsym(handle, "ptrace");
    ptrace_ptr(PT_DENY_ATTACH, 0, 0, 0);
    dlclose(handle);
}

int main(int argc, char * argv[]) {
#ifndef DEBUG
    // 非 DEBUG 模式下禁止调试
    anti_gdb_debug();
#endif
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
2.输入监听风险

使用第三方的安全自绘随机键盘,防止输入内容被监听(自定义键盘⌨️)

3.调试日志函数调用风险

开发者检测在发布正式应用时,移除通过NSLog输出程序日志的代码信息。防止输出敏感日志信息暴露程序逻辑

#ifdef DEBUG
//调试状态
#define HKLog(fmt,...) NSLog((@"%s [Line %d] " fmt),__PRETTY_FUNCTION__,__LINE__,##__VA_ARGS__)

#else
//发布状态
#define HKLog(...)
#endif
4.HTTP数据传输安全

使用HTTPS协议对传输数据进行加密保护,尽可能去掉项目中的HTTP链接

5.弱哈希算法使用漏洞

开发者自查应用开发中勿使用CC_SHA1 的方式进行数据哈希,推荐使用 CC_SHA256 算法进行数据哈希操作

6.不安全的API函数引用风险

开发者移除应用程序中调用的系统风险函数和过期api,同时防止系统直接调用存在C缓冲区溢出的函数如 memcpy、scanf、sprintf、strcpy、vsprintf
如:第三方API SSZip 和 GCDAasyncSocket, Lottie

7.代码混淆
  • 定义:将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为
  • 代码混淆的方式
    为避免出现盗版,提高应用安全性,技术人员对项目源代码进行了代码混淆。即对源代码文件中的一些类名做了变换,改成了以英文字母命名的名称,这样破解者在阅读时就不容易理解其特指的含义。
  • 代码混淆的利与弊
    这种代码混淆方法简单、便于操作。但也因此会给开发者的调试工作带来困难,开发人员通常需要保留原始的未混淆的代码用于调试。由于混淆是不可逆的,在混淆的过程中一些不影响正常运行的信息将永久丢失,这些信息的丢失会使程序变得更加难以理解。

常见的安全测评公司

  • 梆梆安全
  • 绿盟科技(NSFOCUS)
原文地址:https://www.cnblogs.com/StevenHuSir/p/AppSecurity.html