01 APP安全基础

1 APP常见漏洞与对策

1.1 APP安全趋势总结

  • 软件安全演变为信息安全
  • 信息安全离大众越来越近
  • 信息安全越来越受重视
  • 信息安全会影响大众的生活

1.2 OWASP Mobile TOP 10

1.2.1 平台使用不当

  • 糟糕的Web服务强化
    • 逻辑缺陷
    • 弱认证
    • 弱会话管理或没有会话管理
    • 会话固定
  • 不安全的Web服务器配置
    • 默认内容
    • 管理界面
  • Web服务和支持移动的网站上的注入
  • 身份验证缺陷

1.2.2 不安全的数据存储

敏感数据未加密存储、本地文件未加密、Webview本地明文存储cookie等问题

  • 常见类型
    • SQL数据库
    • 日志文件
    • XML数据存储和清单文件
    • Cookie
  • 影响:
    • 身份盗用
    • 侵犯隐私
    • 欺诈
    • 声誉受损
    • 物质损失

1.2.3 不安全通信

使用了不安全的通信协议,传输未加密的数据

  • 常见类型
    • 缺少证书检查
      • 自定义SSL x509 TrustManager
  • 影响
    • 隐私泄露
    • 身份盗用
    • 网络钓鱼
    • 中间人攻击
    • 欺诈
    • 声誉受损

1.2.4 不安全的身份验证

身份验证功能不完善,对用户的请求不进行验证

  • 常见类型:
    • 隐藏服务请求
  • 影响
    • 信息窃取
    • 未经授权的数据访问
    • 无法识别执行操作的用户请求

1.2.5 弱加密

加密容易被破解

  • 常见类型:
    • 内置代码加密
    • 硬编码密钥
    • 不安全或过时的算法(RC2/MD4/MD5/SHA1)

1.2.6 不安全的授权

授权不加的技术影响在性质上与认证不良的技术影响相似

  • 常见类型:
    • 隐藏端点:
    • 用户角色或权限传输:
  • 影响
    • 声誉损失
    • 欺诈
    • 信息盗用

1.2.7 客户端代码质量

可以将不受信任的输入传递给移动代码中的方法调用的实体。这些类型的问题本身不一定是安全问题,但是会导致安全漏洞,被人利用漏洞,成为安全问题

目前规范代码协作和代码安全扫描。

  • 常见类型:
    • 不正确的资源关闭
    • 信任用户输入
    • 变量使用问题
    • 运算符使用问题
    • 函数问题
    • 条件语句问题
    • 循环语句问题
    • 数值类型转换问题

1.2.8 代码篡改

对代码和资源的保护不足,应用被修改和重新打包后可以正常运行。

  • 常见类型:
    • 修改代码
    • 修改资源
    • 修改API
  • 影响:
    • 未经授权的新功能
    • 身份盗用
    • 欺诈

1.2.9 逆向

对代码或资源的保护不足,应用可以被反编译出易读的代码或伪代码

  • 常见类型:
    • 保留的符号表
    • 反编译
  • 影响:
    • 显示有关后端服务器的信息
    • 显示加密常量和密码
    • 窃取知识产权
    • 对后端系统进行攻击
    • 修改代码并执行获取所需的信息
    • 知识产权盗窃

1.2.10 无关的功能

存在了不该存在的代码,且这些代码中包含的的内容或实现的功能存在敏感信息。

  • 常见类型:
    • 开发人员可能会在混合应用程序中意外将密码作为注释包含在内
    • 测试期间禁用双因素认证
    • 遗留的测试组件
  • 影响:
    • 暴露后端系统的工作方式
    • 未经授权的访问

1.3 对策与方案

1.3.1 十大安全编码(事前)

  • 验证输入
  • 安全策略的架构与设计
  • 默认拒绝
  • 筛选发送到其他系统的数据
  • 使用有效的质量保证技术
  • 注意编译器警告
  • 保持简洁
  • 坚持最小特权原则
  • 深度防御练习
  • 采用安全的编码标准

1.3.2 开发者对策

  • 安全设计(事前)
  • 安全编码(事中)
    • 模块化
    • 封装性
    • 信息隐藏
    • 限制防御性编程
  • 代码扫描和测试(事后)
    • 功能测试
    • 渗透测试
    • APP安全监测
    • 代码扫描

2 APP漏洞检测与应对

  • 本地文件存储
  • 安全通信
  • 加密
  • 组件安全
  • webview组件安全

2.1 本地文件存储

  • 基本概念:在程序中如果使用了SharedPreference或者SQLiteDatabase,要查看 SharedPreference或SQLiteDatabase是否设置了安全权限,否则可能会导致敏感信息泄露
  • 漏洞危害:
    • 数据丢失
    • 提取程序额敏感信息
    • 业务影响很大程度上取决于被盗信息的性质
  • 解决方法:
    • 禁止全局读写
    • 敏感信息加密存储
    • 敏感数据加密存储的同时可以对本地数据库文件也进行加密,
      • 开源库:SQLCipher
      • 收费版:SQLite Encryption Extension;

2.2 安全通信

  • 基本概念:特征是存在两个设备而且它们之间会传递某些数据
  • 漏洞危害:
    • 敏感信息泄露
    • 中间人攻击
  • 解决方法:
    • 真正实现TrustManager
    • 禁止使用AllowAllHostnameVerifier和 ALLOWALLHOSTNAMEVERIFIER实例化,应该使用 STRICTHOSTNAME_VERIFIER严格校验。
    • 禁止使用SSLCertificateSocketFactory;->getInsecure()函数禁用 所有SSL安全校验
    • 禁止使用proceed()函数忽略证书错误,应该抛给系统进行安 全警告

2.3 组件安全

  • 基本概念:
    • 最小化原则,减少程序权限申请
    • 防止非法调用:自定义权限,设置调用方白名单
    • 私有化:内部使用的类、变量和接口,防止外部非法调用
  • 漏洞危害:
    • 网络钓鱼,盗取各类用户账户
    • 绕过本地认证
    • 本地拒绝服务

2.4 Web组件

  • 漏洞危害:

    • UXSS漏洞攻击
    • 远程命令执行攻击
    • File域同源策略绕过攻击
  • 解决方法:

    • 禁止使用AddJavaScriptInterface方法
    • 设置WebView建议关闭file协议
    mWebView.setAllowFileAccess(false)setAllowFileAccessFromFile 
    URLs(false),setAllowUniversalAccessFromFileURLs(false) 
    
    • 移除危险方法
    removeJavascriptInterface("searchBoxJavaBridge_")
    removeJavascriptInterface("accessibility")
    removeJavascriptInterface("accessibilityTraversal") 
    
    • 使用handler.cancel()

2.5 敏感信息泄露

  • 基本概念:
    • 敏感信息:财务数据、医疗数据和个人可标识信息数据
    • 通过窃取或修改未加密的数据来实施诈骗或其他犯罪行为
    • 未加密的敏感数据容易遭到破坏
    • 可能泄露的数据:传输过程中的数据、存储的数据以及交互数据
  • 漏洞与危害:
    • 错误响应暴露敏感信息
  • 要求:
    • 传输敏感数据做脱敏加密处理
    • catch中避免打印堆栈信息,使用友好的错误提示信息

2.6 日志安全

  • 基本概念:
    • 禁止将敏感信息打印到客户端日志中
    • 包括应用程序本身和应用程序调用的第三方库的程序

2.7 其他常见问题【流未关闭的问题】

  • 漏洞与危害:
    • 流使用未正常关闭,不能释放资源,导致资源枯竭攻击
    • 未关闭会占用资源,导致其他程序访问异常,也可能导致资源过度占用内存溢出等情况
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容