分析和防范Zipperdown远程DoS漏洞

0x00背景 最近,已经确定了一种通用类型的移动安全漏洞。 该漏洞在[1]中发布​​。 据说,大多数流行的应用程序(如微博,momo,neteasy云音乐,(腾讯)QQ音乐,快手等)都受到了影响,整个iOS应用程序应用程序中大约有10%可能会受到此漏洞的影响。 很容易猜到该漏洞与ZIP文件有关。实际上,IOS文档没有可用的官方解压缩API函数,并且大多数iOS应用程序都使用第三方库。 实现unzip功能的最流行的库是maid和ziparchive。 在对这两个第三方库的背景和使用情况进行快速分析之后,便可以确定一个漏洞,该漏洞也可以通过盘古在Chain Project问题中提交的漏洞报告来确定[2]-根本原因和解决方案。此漏洞的关键是:当开发人员在提取zip文件“ ../../”的过程中使用未考虑文件名的第三方zip库时,恶意黑客可能会利用它并产生路径操作漏洞。这是因为,如果恶意的热补丁zip文件被ziparchive库提取并被覆盖,则磁盘中的每个文件都可能被覆盖,最终将导致DoS,代码执行(RCE)等。 0x01构造恶意zip文件(POC) 由于许多应用程序无法修复该漏洞,因此我们决定隐藏POC代码,想要详细信息的人可以联系阿里巴巴SRC。 0x02 POC 在线演示:https://v.qq.com/x/page/a0655dtirv7.html 0x03如何修复 最完整的解决方案是在提取函数中修补库: +(Bozeman)图:(nsstring *)路径目标:(nsstring *)目标保留属性:(LOL)保留属性覆盖:(LOL)覆盖:(nsinteger)porterpassword:(nullable nsstring *)密码错误:(nserror ** *)错误委托人:(字母数字ID)委托人:(无效(^ _ _字母数字)(nsstring *条目,女仆zipinfo,长条目号,总长)progresshandlercompletedhandler:(无效(^ _ nullable)(nsstring *路径,婆罗洲无花果, nserror * _可为空的错误)完成处理程序 找到最终提取的str路径,并在用户可以控制路径的任何位置阻止“ ../”字符串。 此外: 如果发生中间人攻击,则应加密客户端和服务之间的传输。 hotpatch软件包应在本地加密存储,并在运行之前进行完整性检查。 尽管漏洞可能会导致对某些重要文件的拒绝服务攻击,但至少不会导致代码执行。 0x05参考资料 — Https://zipperdown.org -https://github.com/ZipArchive/ZipArchive/issues/453 -中文版本分析https://weibo.com/ttarticle/p/show?id=2309404240316772294076

无需命令行即可在任何硬件上测试您的应用程序

记住要设置团队并选择“包括UI测试” 创建您的UI测试 如果您不是从头开始创建项目,则需要创建一个包含UI测试的目标。 否则,请跳过本节。 在左侧的项目导航器中选择您的项目,然后单击屏幕底部的“ +”。 在打开的对话框中,选择“ iOS UI测试包”,然后单击“下一步”。 仔细检查测试包的所有设置是否符合您的喜好,然后单击“完成”。 建立测试包 在这里,您将了解到直到最近才知道的Xcode功能。 您可以针对特定目的进行构建,在我们的情况下,我们希望构建用于测试的测试包。 这将生成一个应用程序,稍后再上传到AWS Device Farm。 请注意,AWS Device Farm要求针对iOS设备而不是针对模拟器构建测试包,因为测试将在实际设备上运行。 如果您错过了此步骤,则会收到一个神秘错误,即您上传的文件无效… 首先是命令行,下面我将对其进行解释(请记住用您的工作空间和方案名称替换适当的字符串)。 xcodebuild -workspace“ aws设备场博客post.xcworkspace” \ -scheme“ aws设备场博客\ -destination“ generic / platform = iOS” \ -derivedDataPath“ ./build” \ -配置“调试” 测试构建 CODE_SIGN_IDENTITY =“” \ CODE_SIGNING_REQUIRED =否 所以我在这里做什么: -workspace:使用选项构建的工作空间 -scheme:要构建的方案,从您项目的方案的Xcode列表中获取 -destination:设置为设备而非模拟器构建 -derivedDataPath:指定本地派生的数据路径,因此您不必去挖掘构建产品 -configuration:指定要使用的配置,这是可选的,但是指定它可以确保您知道要构建的内容 测试构建:将构建测试运行器的魔术命令 我发现CODE_SIGN_IDENTITY =“”和CODE_SIGNING_REQUIRED只是解决您项目中可能存在的任何类型的代码签名问题的一种方法 构建完成后,您将拥有AWS设备场所需的测试运行程序,但是由于某种原因,他们需要将其作为.IPA文件。 因此,以下是创建该.IPA文件的步骤: […]

纹理最佳实践5

MVVM활용한材质纹理应用程序만들기 서론 图1〜4편까로는를를를본적인본적인본적인본적인뤘고뤘고뤘고뤘고뤘고뤘고뤘고뤘고뤘고본적인본적인본적인본적인본적인본적인본적인본적인본적인듭니듭니듭니듭니듭니듭니。 이번에높높매우매우때문에팅을팅을하신하신하신한한한한한듭니듭니듭니듭니듭니듭니듭니듭니듭니。。。。。。。。。。 RxSwift / RxCocoa Link이해(链接) Texture UI发布(AsyncDisplayKit) 型号,视图해이해,기존MVC패턴에패턴에 MVC와MVVM 우선MVVM존에에에존존MVC패턴을말씀드리자면 MVC패턴이Model ?,模型—视图—控制器의로약자리케이션을가지의로역할다。 应用程序应用程序控制器控制器模型数据视图,视图视图菜单视图。 iOS장가장기본적인이며,많이쓰이기도다。 下载,下载iOS代理到Google Play上的应用程序。 왜이,MVVM패턴이탄생하게된?。 죠다똑같은케리케이션인데죠이죠。 MVC在UI的다。。。上케케케케케케케케면면면면뿐더러뿐더러。 MVC模型模型视图控制器控制器控制器控制器控制器控制器控制器控制器控制器지게다。 따라서查看模型것이것이MVVM패턴입니다。 MVVM模型— ViewModel —查看로있습니다。 ViewModel的下载,ViewModel的ViewModel的下载,ViewModel的下载,ViewModel的下载。 ViewModel模型在模型中的使用。 iOS는ViewController때문에기模型— ViewModel View View(ViewController)이되겠습니다。 면따라서어플되케에에에에에에에에에에에에에에같습니다。다 에MVVM이랑MVC했습니다만른다고감사참조하시면다하겠습니 (이번스포지취지는기아니기비교할려는게이니다。) 已下载MVVM,Texture和Github存储库列表。 준비물이필요하겠죠? 。사항은같습니다。 Github存储库API(https://api.github.com/repositories) Xcode Cocoapod(Texture,RxSwift / RxCocoa 4.x이상,AlamoFire) 분들은https://github.com/GeekTree0101/RxMVVM-Texture 위의Github存储库를克隆되겠습니다。 (星级눌려주시면사하겠습니다。ㅎ) 迅速下载Swift4.x。 模特과视图를보자! 우선,개략적으로개략적으알아보도록하겠습니다。 在ViewModel中查看ViewModel,在ModelUp中查看模型,在ModelProvider中获取模型。 Model Provider的模型Model和Array的模型。 View저희가만들를넣었고넣었고。나타냈습니다나타냈습니다 […]

iOS:使用命令行在设备上进行UI测试!

Devากที่ได้รับหน้าที่เป็นMobile Dev.。 ฝั่งiOSก็ได้ทำCIบนJenkinsทั้ง单元测试และUi Testingผ่านFastlane…。 ก็สะดวกดี runาคือหลายครั้งที่เมื่อrun ui testบนเครื่องjenkinsมันไม่เสถียร iา ที่มั ผ่านบ้างแล้วแต่ดวง(พูดเล่นนะ) UiTestที่มันมากับ fastlane ui-testingเนี่ยโดย默认默认รันบน模拟器ที่ใช้ทรัพยากรของเครื่อื่ มีอมี工作ื่รๆนพร้อมกันก็ทำให้เครื่องช้า(Mac miniรันUi,单元测试ของทั้งAndroidและiOS) iางทีมก็เริ่มอยากรันUi TestingบนDeviceเพราะเชื่อว่ามันจะดีกว่าที่รันผ่าน仿真器 และมันก็เป็นอย่างนั้นจริงๆราะโดยปกติ UIา ที่รัน UI TestจะบนJenkinsด้วfastlane(simulator)ใช้เวลา〜20分钟 ีกอาจจะพังใช้เวลาหาสาเหตุอีก〜10分钟ลองรันบนเครื่องตัวเองอีก〜7分钟โถ่ววชีวิต Device ล อลองรันบนDeviceกลับใช้เวลา〜8分钟แล้วTesterก็เห็นscreenของdeviceตอนrunด้วยดี้ดีย์ ขี้เกียจเล่าแล้วมาลองกันเถอะ… สร้าง项目ง่ายๆเพื่อลอง เหมือนทำแอพเปิดปิดอะไรสักอย่าง… เมื่อเริ่มต้น应用 ให้状态เป็น关闭 วนไป上的และเมื่อกดปุ่มON / OFFให้状态เปลี่ยนไปเป็น…。 codeนcodeนั้นอยู่ด้านล่างจย้า 设置方案Ui测试设置项目ให้รันได้นDeviceได้นะครับ provisionานการเพิ่มเครื่องเข้าไปใน供应配置文件เซ็ทApps IDให้โปรเจค ส่วนนี้ค่อนข้างยาว ViewController.swift 导入UIKit 类ViewController:UIViewController { @IBOutlet弱var lightStatusLabel:UILabel! @IBOutlet弱var lightSwitcherButton:UIButton! var isLightOn = false 覆盖func viewDidLoad(){ super.viewDidLoad() […]

v0.8.6 —哈西上校

由Armen Youssefian于2018年6月14日发布在JustHive上 …..(这真令人尴尬)对于Hathi上校我没有任何有趣的事实,但是在这里,请欣赏我们的好朋友上校的这段剪辑! TidBits进行了一些改造! 温柔你不觉得吗? 我们还在TidBits中添加了计时器,以便用户知道他们正在查看的当前TidBit何时到期。 敬请期待! 我们将推出更多更新!

使用网络链接调节器实用程序

通过iOS和macOS上的Network Link Conditioner,您可以在网络条件下测试应用程序,例如用户在使用应用程序时可能遇到的情况。 它允许您模拟网络条件,例如3G,边缘或高延迟DNS。 在iOS上使用网络链接调节器 您可以在iOS的“设置”应用程序的开发人员页面中找到“网络”部分。 除了启用多路径网络,您还可以导航到默认情况下禁用的网络链接调节器。 您可以在此处阅读有关多路径网络的更多信息。 可以在“网络链接调节器”页面上找到默认预设的列表。 您可以通过点击其中之一来选择预设。 启用该开关,以在所选预设上测试您的应用。 可以通过导航到“ Add a profile页面来定义适合您需求的自定义预设。 在MacOS上使用网络链接调节器 在MacOS上使用该实用程序之前,您需要为当前Xcode版本安装其他工具。 通过导航到Xcode Main Menu > Open Developer Tool > More Developers Tools您可以在登录后下载这些工具。 在下载的.dmg内,您可以找到许多有趣的实用程序。 可以在“ Hardware文件夹中找到“网络链接调节器”。 通过双击该应用程序,您可以在“系统偏好设置”中安装该实用程序。 该应用程序与iOS版本非常相似,还包含一系列自定义预设。 这些可用于模拟一系列网络条件。 除此之外,您还可以在“ Manage Profiles页面中定义自己的预设。 选择预设并启用开关后,您可以在仿真网络预设的同时开始在模拟器中测试Mac OS应用或iOS应用。 这个故事最初发布在: https://www.avanderlee.com/debugging/network-link-conditioner-utility/

试用“暂停圣经”应用程序-深入审查

结果是立即的。 艺术创造了一个丰富的环境,使我想深入探索该应用程序,并加入故事和播放列表。 该应用程序的设计直观,几乎没有选项或多余的区域。主屏幕直接指导用户参与计划,并包含“最近收听”和“我的计划”的空间(尽管我确实希望“我的计划”部分不是需要滚动的区域,因为这是打开应用程序时要寻找的主要位置)。 “正在播放”区域也很清晰,并且还有明显的速度,音量和Airplay控件选项。 屏幕还为您提供了易于访问的控件,可在您收听时更改语音和音乐。 音频体验 该应用程序的最佳功能也许是自定义您的聆听体验的能力。 开发人员致力于创造独特的聆听体验,使用户可以在四种截然不同的声音(Felix,Gregory,Mark和Rosie)和四种背景音乐选项(钢琴,环境,吉他和大提琴与钢琴)之间进行选择。 每种声音都非常专业,清晰,音乐感觉很好,不会像粗俗的“鼓舞人心”的视频那样显得俗气或听起来不俗。 我更喜欢将这些选项随机化的体验,但是用户可以根据自己的喜好为应用设置默认首选项。 坏人与丑陋 老实说,关于使用该应用程序的体验并没有太多不好的地方。 这是改善应用程序的几种方法 缺乏离线聆听 应用程序上的加载时间似乎非常慢。 通常,在选择计划或段落时,背景音乐几乎会立即加载,然后在加载语音文件时自行播放15-30秒。 尽管这可能是服务器问题,但让我怀疑这是由于我正在流式传输的音频文件的大小所致。 我有足够的数据问题,不能在不使用Wifi的情况下流式传输整个有声读物。 我对Dwell开发此应用的主要希望是,离线保存播放列表或计划。 我依赖于Audible,Spotify,Overcast和Hoopla(我每天使用的其他音频应用程序)中的离线收听功能,如果没有它们,我的账单就会透支。 播放列表和计划有什么关系? Dwell提供了播放列表和计划,当您开始与任何一个进行接触时,这种区别就会变得非常混乱。 计划使您能够一天一次遍历各个段落,并在进行时检查每个段落。 另一方面,播放列表是一串连续播放的段落,之间没有间断。 从理论上讲,这很好,但是在用户体验中,这似乎完全是语义上的差异。 我的意思是,一个45分钟的播放列表怎么也不能成为我过去几天所经历的计划? 我选择首先进行的7天计划实际上只有40分钟之久,比一些现有的播放列表要短。 我真正希望Dwell采取此功能的地方是使用户能够构建自己的播放列表/计划,类似于Spotify(我经常使用的功能)。 我希望能够将经文或章节保存到自己选择的播放列表中,以便能够组织我正在研究的内容或我正在研究的主题。 能够创建公共播放列表,允许教会为布道系列建立播放列表,或允许小组为即将进行的圣经研究制定计划,这将特别好。 搜索诗歌和文字 现在,Dwell让您根据章节或他们的播放列表之一选择监听。 除非团队为他们的计划或播放清单之一删减了某节经文,否则搜索特定经文不会产生任何结果。 另外,令我惊讶的是,您无法搜索您要查找的段落文本。 除非您知道这段经文来自该应用程序的特定书籍和章节,否则将无法代替在手机上安装另一个圣经应用程序来查找经文。 潜在的(非常)保守的精益 在最初使用该应用程序时,我感觉到应用程序背后的团队可能(非常)保守。 在最初浏览该应用程序以进行聆听时,我选择了“灵魂保护”计划作为开始。 这是“精选计划”之一,是一个为期7天的计划,其中包含字母1 Timothy,2 Timothy和Titus。 选择每个计划时,都会简要说明该计划的用途,并且在广告中附有“了解如何照看使徒保罗向基督的羊群发展”的广告。在不考虑这些字母包括什么的情况下,并且对描述很感兴趣,因此我决定采用该计划。 我很失望,在我新的学习如何照顾其他基督徒的第一天,我得到了提摩太书1&2,其中包括: 那时我希望人们在每个地方都应祈祷,举起圣手,不要生气或吵架。 同样,妇女应以谦虚和自我控制的方式打扮成受人尊敬的服装,而不是辫子,金色,珍珠或昂贵的衣服,而要适合自称敬虔的妇女,并要有良好的作风。 让一个女人顺从地静静地学习。 我不允许女人教男人或对男人行使权力; 相反,她要保持安静。 因为亚当先成立,然后是夏娃。 亚当并没有受骗,但那女人却被骗了,成为罪犯。 然而,如果他们继续以信心,爱心和圣洁并自我控制,她将通过生育而得救。 — 1提摩太前书2:8-15(ESV) 请注意,这并不是圣经中应该忽略的这些段落。 但是,在想为一捆简短的保罗后期信件找到整洁,令人兴奋的标题和描述的过程中,开发人员给人的印象是,这就是我们应该如何对待和领导21世纪的其他基督徒。 […]

Xamarin Live Player…第3卷

在进行了很多有趣的娱乐(不是!)并发现Live Player当前不支持情节提要之后,我不得不调整计划。 我想看看这件事正在运行。 在我的机器上! 最后我成功了。 以下步骤应该可以帮助您启动Xamarin Live Player并在Mac上运行。 所以我们开始吧🙂 首先,请确保您的Mac上已准备好以下软件(最新版本): – macOS 10.12.x – Xcode 8.3.x – Visual Studio for Mac 7.1预览版(切换到Alpha通道) 并确保您的手机 –配备了有效的iOS版本– 10.2.x或更高版本即可完成工作 –已从App Store安装Xamarin Live Player 现在打开Visual Studio for Mac并创建一个新的解决方案。 选择一个iOS Single View应用,为其命名并选择一个保存位置。 现在,您必须对代码进行一些调整才能使解决方案在Live Player上运行。 我们已经了解到,目前不支持情节提要。 因此,我们必须摆脱它们。 和不! 我们不会讨论以下事实:故事板非常好,对开发iOS应用程序很有帮助。 为了使该程序正常运行,我们现在将其取消链接。 具体来说就是Main.storyboard🙂 因此,让我们在代码中进行以下更改: 1.删​​除Main.storyboard(是可选的,但是在此解决方案中,您将无法使用它,因此请删除它) 2.打开Info.plist,然后从“主界面”设置中删除值“主” 3.删除ViewController.designer.cs文件(该文件直接列在ViewController.cs文件下) 4.打开ViewController.cs文件,从类定义中删除“ partial”关键字,并向该类添加公共默认构造函数 5.打开AppDelegate.cs,因为我们必须手动加载ViewController作为我们的根视图控制器(在删除和分离情节提要之后) 6.将以下行添加到FinishedLaunching方法中: Window =新的UIWindow(UIScreen.MainScreen.Bounds); var […]

iOS 2018系列:破解iOS采访或成为iOS专家(7)

第7章:核心数据与并发 假设您正在开发一个小型或简单的应用程序,那么您可能看不到在后台运行Core Data操作的好处。 但是,如果在第一次启动应用程序时在主线程上导入了数百或数千条记录,将会发生什么情况? 结果可能是戏剧性的。 当使用核心数据时,我们在现实的编程世界中都面临着所有这些问题,因此让我们讨论解决方案。 基本: 核心数据是用于管理应用程序中的模型层对象的框架 并发是同时处理多个队列上的数据的能力。 脚步: *初始化核心数据栈 使用模型文件创建管理对象模型实例 使用管理对象模型实例创建持久性存储协调器 使用SQLite或SQLite dB的其他类型和文件路径在PSC实例中添加永久存储 创建并发类型为NSMainQueueConcurrencyType和NSPrivateQueueConcurrencyType托管对象上下文。 在“管理”对象模型实例中设置持久性存储协调器。 *创建和保存托管对象 使用NSEntityDescription实体创建实体 使用实体和MOC创建需要插入的行实例,该实例将成为被管理对象实例。 在MO实例中设置Value 将MO条目保存在核心数据中-上下文。 保存() *提取对象 准备实体的NSFetchRequest类型的请求 let request = NSFetchRequest (实体名称:“用户”) 2.从上下文中以[NSManagedObject]数组的形式获取结果 让结果=尝试context.fetch(request) 3.遍历数组以获取特定键的值 对于数据结果! [NSManagedObject] 核心数据堆栈设置-简单方法(NSPersistentContainer) 设置核心数据堆栈需要一些工作。 典型的设置需要许多步骤: 从应用程序捆绑包中加载托管对象模型 使用模型创建一个持久性存储协调器 要求协调器加载持久性存储 创建一个或多个托管对象上下文 从iOS 10开始, NSPersistentContainer 删除了大部分样板代码。 在应用程序中封装核心数据堆栈的容器。 如果采用一些简单的命名约定和默认存储位置,则核心数据栈的设置可以像这样简单: container = NSPersistentContainer(name: “storeName”) container.loadPersistentStores { (storeDescription, […]

您准备好使用iOS 12了吗?

对于开发人员来说,这意味着您将能够通过Siri Shortcuts API将应用程序的各种操作构建并集成到Siri中。 通过定义自定义意图,开发人员将能够在Siri能够识别的应用程序中构建特定的动作。 这将使用户更容易与应用程序一起访问Siri。 另外,通过使用Intent App扩展程序,快捷方式可以在后台运行。 图片 苹果发布了可以分割照片中各层的人像分割API。 开发人员将能够构建可轻松分离前景和背景图像的应用程序,从而创建独特的照片效果。 第三方开发人员也将能够在自己的应用程序中使用分离数据。 汽车游戏 除了支持第三方导航应用程序(Waze,Google Maps)外,苹果公司iOS Car Experience团队的Albert Wan还提到了CarPlay改进的四个关键方面:整体性能,更快的启动顺序,更流畅的动画和更好的应用程序通信。 为CarPlay进行构建时,开发人员还应考虑常见情况的变通方法,例如与CarPlay连接的密码锁定的iPhone和变化的网络/服务信号。 CarPlay现在拥有一个框架,该框架允许开发人员使用一系列受用户界面控制但可以自定义程度的模板来构建应用程序。 该版本将转换为用户界面,并且所有CarPlay系统都将支持该应用程序。 最终,新框架将使将出色的应用程序引入CarPlay变得更加容易。 爱科特2.0 ARKit使开发人员能够通过利用环境环境并将其与数字对象融合来为iPhone和iPad创建增强现实应用程序。 现在,借助ARKit 2.0,开发人员可以使用此类应用程序做更多的事情。 ARKit 2.0增加并改进了功能-人脸跟踪,对象渲染,3D对象检测,并且开发人员现在可以创建持久的体验。 苹果还使用Pixar创建了一种新文件格式:USDZ。 新的3D文件格式经过优化,可以共享和保留3D图形保真度和动画。 此外,原生USDZ支持将集成到Adobe的Creative Cloud中,从而可以相对轻松地创建AR体验和应用程序。 共享的AR体验也许是ARKit 2.0最酷的新功能之一。 借助ARWorldMap,开发人员可以通过将存档的对象发送到附近的iOS设备来创建共享的参考系。 假设他们正在跟踪同一张世界地图,则多个用户可以通过使用USDZ格式进行构建来共享和体验相同的3D内容。 有关创建多用户AR体验的更多信息,请查阅Apple的开发人员文档。 session.getCurrentWorldMap {worldMap,错误 守卫let worldMap = worldMap else { showAlert(错误) 返回 } } let configuration = ARWorldTrackingConfiguration()configuration.initialWorldMap = worldMap session.run(配置) […]