我已成功创建Cordova iOS应用程序,然后进入生产阶段,但我的应用程序在上出现安全问题
Zipperdown Vulnerability leading to Remote Code Execution Attack
kokeuurv1#
此漏洞主要用于获取对设备上文件系统的访问权限,并注入一些恶意代码以远程执行代码。其工作原理是,假设您有一个归档文件,此归档文件中的文件将具有非常常见的名称,如cat.jpg、startup.sh,但有时它们也可以具有类似../../abcd.sh的名称。如果我们将其与目标目录连接起来,则会使用这种类型的文件名(让我们考虑您的目标目录/var/www/webside/com.my.app/userFiles/)将导致/var/www/webside/abcd.sh。因为脚本中的..表示以前的目录,如果您将此文件名附加到目录1,它将返回到2个目录,依此类推。这意味着abcd.sh文件将直接进入/var/www/webside/目录,而不是用户目录。这称为“目录遍历”,利用此攻击,您可以访问您设备的文件系统。如果这将替换您移动的操作系统目录中的某些重要文件,则可能造成严重影响;它可能会危害操作系统或窃取设备中的重要数据。
../../abcd.sh
/var/www/webside/com.my.app/userFiles/
/var/www/webside/abcd.sh
..
/var/www/webside/
**解决方案:**要解决此问题,您需要在将每个文件解压缩到目标文件夹时对其进行验证,一种方法是检查以“../..”开头的文件名。您可以忽略并丢弃这些文件(不要将它们写入目标文件夹);通过这样做,你的应用程序将从目录遍历保存。
for url in listOfFileUrlsInsideZip.allObjects { let path = (url as! NSURL).path! if path.contains("..") { continue } }
1条答案
按热度按时间kokeuurv1#
此漏洞主要用于获取对设备上文件系统的访问权限,并注入一些恶意代码以远程执行代码。其工作原理是,
假设您有一个归档文件,此归档文件中的文件将具有非常常见的名称,如cat.jpg、startup.sh,但有时它们也可以具有类似
../../abcd.sh
的名称。如果我们将其与目标目录连接起来,则会使用这种类型的文件名(让我们考虑您的目标目录/var/www/webside/com.my.app/userFiles/
)将导致/var/www/webside/abcd.sh
。因为脚本中的..
表示以前的目录,如果您将此文件名附加到目录1,它将返回到2个目录,依此类推。这意味着abcd.sh文件将直接进入
/var/www/webside/
目录,而不是用户目录。这称为“目录遍历”,利用此攻击,您可以访问您设备的文件系统。如果这将替换您移动的操作系统目录中的某些重要文件,则可能造成严重影响;它可能会危害操作系统或窃取设备中的重要数据。**解决方案:**要解决此问题,您需要在将每个文件解压缩到目标文件夹时对其进行验证,一种方法是检查以“../..”开头的文件名。您可以忽略并丢弃这些文件(不要将它们写入目标文件夹);通过这样做,你的应用程序将从目录遍历保存。