CN115943378A - 特定于应用程序的网络数据过滤 - Google Patents
特定于应用程序的网络数据过滤 Download PDFInfo
- Publication number
- CN115943378A CN115943378A CN202180044110.6A CN202180044110A CN115943378A CN 115943378 A CN115943378 A CN 115943378A CN 202180044110 A CN202180044110 A CN 202180044110A CN 115943378 A CN115943378 A CN 115943378A
- Authority
- CN
- China
- Prior art keywords
- application
- data
- sandbox
- message
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0245—Filtering by information in the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/212—Monitoring or handling of messages using filtering or selective blocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Abstract
本公开提供了用于特定于应用程序的网络数据过滤的系统和方法。在将网络数据提供给该网络数据所指向的应用程序之前,可以通过沙箱化进程来执行特定于应用程序的网络数据过滤。在该网络数据中包括的任何恶意的或以其他方式潜在有害的数据可以被特定于应用程序的网络数据过滤器去除,或者可以被允许破坏沙箱内的特定于应用程序的网络数据过滤操作,从而防止该恶意的或有害的数据影响该应用程序或电子设备的其他部分。在一个或多个具体实施中,诸如特定于应用程序的网络数据过滤进程的第一进程可从诸如应用程序的第二进程请求分配用于该第一进程的存储器,该第二进程与该电子设备的存储器管理器分离。
Description
相关申请的交叉引用
本申请要求于2020年6月21日提交的名称为“Application Specific NetworkData Filtering”的美国临时专利申请第63/042,002号的优先权,该美国临时专利申请的公开内容据此全文并入本文。
技术领域
本说明书整体涉及接收和处理网络数据,并且更具体地,涉及特定于应用程序的网络数据过滤。
背景技术
诸如文本消息的消息通常由设备处的消息传送应用程序接收和处理,以用于向用户显示消息。
附图说明
本主题技术的一些特征在所附权利要求书中予以阐述。然而,出于解释的目的,在以下附图中阐述了本主题技术的若干实施方案。
图1示出了根据一个或多个具体实施的用于电子消息传送的示例性网络环境。
图2示出了根据一个或多个具体实施的具有应用程序的示例性电子设备的示意图。
图3示出了根据一个或多个具体实施的实现特定于应用程序的网络数据过滤的示例性电子设备的示意图。
图4示出了根据一个或多个具体实施的用于特定于应用程序的网络数据过滤的示例性过程。
图5示出了根据一个或多个具体实施的用于链式特定于应用程序的网络数据过滤的示例性过程。
图6示出了根据一个或多个具体实施的用于特定于应用程序的网络数据过滤的示例性过程的流程图。
图7示出了根据一个或多个具体实施的实现一个进程的存储器分配以供另一进程使用的示例性电子设备的示意图。
图8示出了根据一个或多个具体实施的示例性电子设备的示意图,该示例性电子设备实现由第一进程使用为另一进程分配的存储器。
图9示出了根据一个或多个具体实施的可由用于使用由另一进程分配的存储器来处理数据的一个进程执行的示例性操作的流程图。
图10示出了根据一个或多个具体实施的可由一个进程执行用于分配存储器以由另一进程处理数据的示例性操作的流程图。
图11示出了根据一个或多个具体实施的可用以实现本主题技术的各个方面的示例性电子系统。
具体实施方式
下面示出的具体实施方式旨在作为本主题技术的各种配置的描述并且不旨在表示主题技术可被实践的唯一配置。附图被并入本文并且构成具体实施方式的一部分。具体实施方式包括具体的细节旨在提供对本主题技术的透彻理解。然而,主题技术不限于本文所述的具体细节,并且可使用一个或多个其他具体实施来实践。在一个或多个具体实施中,以框图形式示出了结构和部件,以便避免使本主题技术的概念模糊。
诸如个人计算机(例如,台式计算机和膝上型计算机)、便携式电子设备(例如,平板计算机和智能电话)和可穿戴设备(例如,智能手表等)之类的电子设备通常包括通过网络从另一设备或服务器接收和处理特定于应用程序的网络数据的应用程序。例如,设备可包括接收和处理电子消息(例如,包括文本、图像、视频内容、音频内容和/或其他对象)并处理消息以在消息传送应用程序的用户界面中显示消息内容的消息传送应用程序。可以在电子设备处直接从另一用户的另一电子设备、从服务器或从另一联网设备接收消息。在另一示例中,浏览器应用程序可接收诸如对超文本传输协议(http)请求的http响应的网络数据,并处理http响应,以在浏览器应用程序的用户界面中显示网络内容,和/或根据http响应获得其他资源。
网络数据通常以编码数据流的形式接收,该编码数据流提供给相应的应用程序,以便被解析、解码和/或解包为有用的数据(例如,各种对象类型的对象,诸如文本字段、图像、视频、图形和/或其他消息内容),供应用程序进一步处理(例如,用于显示消息或用于呈现网页)。
网络系统与服务器和/或接收设备处的安全软件可以扫描传入消息或其他网络数据有无已知的恶意内容。这些系统和/或安全软件旨在防止已知的恶意内容到达设备或在设备处被访问。然而,此类系统和/或安全软件有时难以或不可能应用于网络数据,直到网络数据所针对的应用程序已经解析、解码和/或解包该数据。因此,用于解析、解码和/或解包网络数据的特定于应用程序的进程可能易受恶意的或无意的破坏的影响,此破坏甚至在通过安全软件之后也可使应用程序和/或设备的其他部分崩溃。此外,这些系统和/或安全软件通常不能阻止尚未知的恶意或其他潜在的有问题的内容。
根据本主题技术的具体实施,提供了特定于应用程序的网络数据过滤,其假设将存在在设备处接收和处理的对象和/或其他消息内容,这将导致用于处理网络数据的特定于应用程序的进程崩溃/损害/破坏,否则其可能未被前面的安全软件检测到。为了确保这些被损害的进程不损害应用程序或设备的其他部分,在与应用程序分离的沙箱内执行解析、解码和/或解包网络数据的特定于应用程序的进程。在沙箱内进行特定于应用程序的操作之后,从沙箱内的网络数据生成的对象通过与该沙箱和该应用程序分离的模式验证。可将通过模式验证的已验证对象提供给该应用程序以供进一步处理和/或在应用程序的用户界面中显示。
由于对沙箱许可和后续模式验证的严格限制,即使沙箱的一些或所有特定于应用程序的操作受到损害或破坏,也可防止此损害/破坏引起该应用程序或该设备的其他问题。以这种方式允许该沙箱的一些或全部进程被特定于应用程序的操作破坏,使本文公开的沙箱和模式验证能够捕捉到传入网络数据中的已知和未知问题。
根据一个或多个具体实施,提供了一种方法,该方法包括:在与被配置为处理消息的应用程序分离的沙箱内,(i)确定在该消息中接收的对象的对象类型,以及(ii)基于所确定的对象类型生成该对象,然后在该沙箱外部和该应用程序外部基于所确定的类型执行该对象的模式验证。
本文描述了各种示例,其中网络数据包括要提供给消息传送应用程序的消息。然而,应当理解,本主题技术可应用于通过网络或从另一设备接收的与特定应用程序一起使用的任何数据。网络数据的其他示例可以包括推送通知、http请求响应、下载的文档等。
图1示出了根据一个或多个具体实施的包括各种设备的示例性网络环境100。然而,并非所有所描绘的部件均可在所有具体实施中使用,并且一个或多个具体实施可包括与图中所示的那些相比附加的或不同的部件。可进行这些部件的布置和类型的变化,而不脱离本文所列出的权利要求的实质或范围。可提供附加的部件、不同的部件或更少的部件。
网络环境100包括电子设备102和104、网络106以及通信地耦接到网络106的一个或多个服务器120。网络106可以例如包括诸如因特网的公共网络的部分。网络106可包括将对应电子设备耦接到更广泛的因特网的局域网(LAN)部件,诸如Wi-Fi路由器和/或者在电子设备102和104中的每一者本地的以太网连接。将电子设备102和/或104连接到因特网的LAN可包括一个或多个不同的网络设备/网络介质,和/或可利用一种或多种不同的无线和/或有线网络技术,诸如以太网、光学、Wi-Fi、蓝牙、Zigbee、以太网电源线、同轴、Z波、一般来说可将电子设备通信地耦接到因特网的任何无线网络技术和/或有线网络技术。网络106的各部分包括蜂窝通信网络,该蜂窝通信网络包括位于若干地理“小区”中的每一者中的固定位置处的一个或多个基站收发器,这些基站收发器与诸如电子设备102和104的终端设备无线地通信,并且经由与用于语音调用和文本消息、移动数据和公共电话的各种切换网络的有线和/或卫星通信来通信。
电子设备102和104可以直接地和/或经由网络106向彼此和/或从彼此和/或向其他电子设备和/或从其他电子设备发送和/或接收诸如文本消息、多媒体消息的消息。电子设备102和/或104还可以从或经由诸如服务器120的一个或多个服务器接收消息和/或其他网络数据。为了防止通过网络106接收的网络数据崩溃或以其他方式破坏或损害设备的各部分,电子设备102和104可以实现如本文所述的网络数据的特定于应用程序的过滤。
电子设备102和104中的一者或多者可以是例如便携式计算设备,诸如膝上型计算机、智能电话、智能扬声器;外围设备(例如数码相机、耳机);数字媒体播放器;平板计算机设备;可穿戴设备,诸如智能手表或带;或者包括和/或通信耦合到例如一个或多个有线或无线接口的任何其他适当的设备,诸如Wi-Fi通信电路系统、蜂窝通信电路系统、蓝牙通信电路系统、Zigbee通信电路系统、近场通信(NFC)通信电路系统和/或其他有线或无线通信电路系统,并且具备用于发送和接收电子消息的软件和/或硬件。
借助于示例,在图1中,电子设备102和104中的每一者被描绘为智能电话。在一个或多个具体实施中,电子设备102和104中的一者或多者可以是智能电视、膝上型计算机或移动设备,诸如智能电话或智能手表。在一个或多个具体实施中,电子设备102和104中的一者或多者可集成到其对应显示设备中。电子设备102和104中的一者或多者可以是和/或可以包括下文关于图7所论述的电子系统的全部或部分。
电子设备102和104可包括处理器、存储器、通信接口和/或其他电子部件。处理器可包括能够处理数据和/或控制设备的操作的合适的逻辑部件、电路系统和/或代码。在这方面,可使得处理器能够向设备的各种其他部件提供控制信号。处理器还可控制设备的各个部分之间的数据转移。另外,处理器可使得能够实施操作系统,或以其他方式执行代码以管理设备的操作。存储器可包括使得能够存储各种信息类型的合适的逻辑部件、电路系统和/或代码,所述信息类型诸如所接收到的数据、所生成的数据、代码和/或配置信息。存储器可包括例如随机存取存储器(RAM)、只读存储器(ROM)、闪存和/或磁性存储装置。在一个或多个具体实施中,处理器、存储器、通信接口和/或它们的一个或多个部分中的一者或多者可在软件(例如子例程和代码)中实施,可在硬件(例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、控制器、状态机、门控逻辑部件、分立硬件部件或任何其他合适的设备)中实施,和/或两者的组合。
服务器120中的一者或多者可以是和/或可以包括下文关于图7所论述的电子系统的全部或部分。服务器120中的每一者可包括一个或多个服务器,诸如服务器云130。出于解释的目的,关于用于向电子设备102和104提供网络数据和/或在两者之间提供网络数据的各种操作,示出和讨论了两个服务器。然而,本文所论述的这些操作和其他操作可由一个或多个服务器执行,并且每个不同的操作可由相同或不同的服务器来执行。
出于解释的目的,网络环境100在图1中被示为包括电子设备102和104以及服务器120;然而,网络环境100可包括任何数量的电子设备和任何数量的服务器。
图2示出了具有应用程序的电子设备的各种方面。在图2的示例中,电子设备102包括应用程序200(例如,存储在设备处的存储器中并且可由该设备的一个或多个处理器执行)。如图所示,应用程序200可以(例如,通过网络106和/或从诸如电子设备102的另一电子设备)接收网络数据。例如,网络数据可包括来自电子设备102的消息,或来自诸如服务器120的服务器的服务器数据(例如,推送通知或网页的网络内容)。网络数据可以是将由电子设备104处的特定应用程序200处理的特定于应用程序的网络数据。例如,应用程序200可以是用于处理消息的消息传送应用程序、用于处理网页数据的网页浏览器应用程序、用于处理下载的字处理器文档的字处理器应用程序、用于处理来自与第三方应用程序相关联的第三方服务器的网络数据(例如,推送通知)的第三方应用程序,或者被配置为接收和/或处理特定于应用程序的网络数据的任何其他应用程序。
为了处理网络数据,应用程序可以访问电子设备处的各种硬件和/或逻辑资源。例如,应用程序200可访问系统资源202(例如,硬件资源和/或逻辑资源,前者诸如CPU、GPU或设备的存储器,后者诸如用于访问存储器中的数据和/或访问设备的其他部件的系统资源)。如图所示,网络数据所针对的应用程序200还可访问可由应用程序200基于所接收的网络数据来激活和/或操作的其他应用程序208和/或扩展应用程序210。
然而,向应用程序200提供对系统资源202、其他应用程序208和扩展应用程序210(作为示例)的访问可使系统资源202、其他应用程序208和/或扩展应用程序210暴露于网络数据中包括的被破坏数据和/或恶意数据。如果允许这种类型的被破坏数据和/或恶意数据到达和/或损害处理网络数据的应用程序操作,则此类数据可导致应用程序200、系统资源202、其他应用程序208和/或扩展应用程序210的崩溃和/或其他损害行为。
根据本主题技术的一个或多个具体实施,电子设备104可以配备有特定于应用程序的网络数据过滤,如图3所示,以防止被破坏的和/或恶意的网络数据到达和/或损害应用程序200和/或该应用程序能访问的其他系统部件和/或资源。
如图3的示例中所示,电子设备104可包括沙箱300,其接收针对应用程序200的网络数据。沙箱300可以是受限环境,可以从该受限环境执行代码(例如,解析器、解码器、转码器等),以对网络数据进行解包,以供应用程序200使用。如图所示,沙箱300可以与应用程序200分离,并且可以例如由操作系统防止其访问应用程序200可访问的其他应用程序208、扩展应用程序210和/或系统资源202。在一个或多个具体实施中,沙箱300可以是仅计算沙箱,例如,沙箱可以仅访问计算资源或仅访问特定计算资源,诸如访问CPU而不访问GPU。例如,可以防止仅计算沙箱访问(例如,读取或修改)存储在设备的存储器中的数据,而不是与消息一起提供的数据。仅计算沙箱可以具有有限量的存储器,用于执行解析、解码、转码和/或解包消息的计算,而不读取或修改设备处的现有数据。可以防止仅计算沙箱访问、控制或以其他方式与设备的可操作部件(诸如传感器、相机、扬声器、麦克风等)交互。可以防止仅计算沙箱向其他设备、系统或服务器发送或接收数据。例如,如果沙箱内的进程受到恶意代码的损害,该恶意代码试图修改或删除来自设备的数据,从另一设备获得其他恶意内容以安装在该设备处,或者将存储在该设备处的设备/用户信息传输到另一设备,则由于沙箱的仅计算布置,将防止这些操作。在沙箱内执行的代码可包括特定于应用程序200的代码。
例如,电子设备104可以接收包括与具有对象类型的对象相关联的信息的消息。在该示例中,应用程序200可被配置为处理该消息以向用户界面提供包括该对象的消息内容。在该示例中,当接收到网络数据(例如,消息)时,可以将该消息提供给沙箱300,并且电子设备104可以在与该应用程序分离的沙箱300中对该消息执行针对该应用程序的特定于应用程序的操作。在该示例中,特定于应用程序的操作可包括确定对象类型,并基于所确定的对象类型尝试从该消息中与该对象相关联的信息生成该对象。
例如,对象类型可对应于颜色、图像、数组、文本、键入指示符、字体等。在沙箱300内,电子设备104可解析消息以确定对象类型(例如,并确定与消息内的对象相关联的信息的位置),然后可基于所确定的对象类型尝试从与对象相关联的信息生成该对象。例如,如果对象类型是图像,则电子设备104可以在沙箱300内尝试从包括在消息内的图像数据生成图像对象(例如,通过从消息中提取对应于该图像的图像数据,并对所提取的图像数据进行解码、转码和/或解包,以形成具有模式验证302所期望的格式的数据结构)。例如,在沙箱300内,原始消息格式的数据串(例如,二进制数据)可由一个或多个解析器确定以对应于图像的图像数据。在沙箱300内,可以处理被确定为图像数据的消息数据以形成图像对象,诸如包括(例如,串行化)数值阵列和头部或用于由模式验证302处理的其他封装的数据结构。如果在沙箱中生成的图像对象在模式验证302处被验证为图像对象(例如,被验证为包括预期数值数组的数据结构),该图像对象可以被传递到应用程序200。应用程序200随后可进一步处理该图像对象(例如,使用不可用于沙箱300内的进程的附加资源,例如GPU或扩展应用程序)以产生对应于该图像对象的图像以供显示。例如,应用程序200可以处理该图像对象,以基于设备显示器的属性和/或应用程序的用户界面的属性将图像对象所表示的图像的颜色空间调整到不同的颜色空间。作为另一示例,应用程序200可进一步处理图像对象以在应用程序的用户界面中的消息流内显示。作为另一示例,应用程序200可根据在消息中接收的附加信息将图像与附加内容组合。
在一些场景中,沙箱300中的进程可能被消息数据破坏或损害。例如,该消息可以包括字符串,该字符串无论是无意的还是恶意的,都会导致沙箱内的解析操作或解码操作崩溃。这种类型的崩溃可能防止对象生成,或者可能导致对象以不符合对象类型和/或应用程序的模式的方式生成。在一个或多个具体实施中,应用程序的模式可以标识该应用程序期望接收的每个不同的对象类型,并且可以包括用于验证该对象类型的一个或多个参数(例如,任何串对象应当具有X的最大长度,任何图像对象应当具有5MB的最大尺寸等)。在崩溃防止对象生成的场景中,可防止对象到达应用程序200。在崩溃导致对象以不符合对象类型的模式的方式生成的场景中,与沙箱300和应用程序200分离的模式验证302可确定该对象不符合对象类型的模式,并且可防止对象被传递到应用程序200。在一个或多个具体实施中,模式验证302可在与沙箱300和应用程序200分离的第二沙箱(例如,第二仅计算沙箱)中执行。模式验证302可以例如是使用验证模式执行的基于模式的验证。
在一些操作场景中,在沙箱300内执行的特定于应用程序的操作可导致整个沙箱300的崩溃,或者可允许恶意代码完全控制沙箱300。然而,因为沙箱300是与应用程序200分离的受控环境,所以崩溃的和/或被破坏的特定于应用程序的进程(例如,包括崩溃、完全失去控制或整个沙箱的完全失败)不影响设备的任何其他操作。在一个或多个具体实施中,如果特定于应用程序的操作导致整个沙箱崩溃,则电子设备可以向消息的发送设备发送故障消息,从而防止消息被传递到应用程序200。
还应当理解,除非沙箱300中的操作完全失败,否则沙箱300仍可从用于模式验证302的消息输出一个、一些或所有对象。在各种场景中,对象可以由或不由模式验证302验证。
当在沙箱300内生成对象并将其提供给模式验证302时,执行模式验证302可包括基于对象类型(例如,如在沙箱内确定的和/或作为模式验证302的一部分重新确定的)并基于对应于对象类型的模式来验证对象。在一个或多个具体实施中,对诸如字典类型、数组类型、串类型、数字类型、空值类型和数据类型等属性列表(例如,plist)类型执行模式验证302。在一个或多个具体实施中,可以通过在沙箱300内将数据类型对象分解为用于验证的字典类型对象来避免数据类型的模式验证。例如,在沙箱300内执行的操作可包括将图像转码为图像格式,以及将图像的头部信息提取为字典。原始样本可以作为数据传递,并且重新创建图像文件(例如在应用程序200内)。在另一示例中,具有对象类型“串”的对象可具有N个字符的相应最大长度。模式验证302可以鉴定对象的长度小于N个字符的最大长度。
虽然图3示出了单个应用程序200和单个对应的沙箱300,但是在一个或多个具体实施中,电子设备104可以具有接收网络数据的多个应用程序200以及多个对应的沙箱300,在该沙箱内可以执行该应用程序的特定于应用程序的操作。例如,用于消息传递应用程序的第一沙箱300可包括用于处理消息数据的消息处理操作,而用于网页浏览器应用程序的第二沙箱300可包括网页数据处理操作(例如,用于解析http数据的操作)。例如,可以与用于网页浏览器的http响应或来自第三方服务器的用于第三方应用程序的推送通知不同地解析和解包消息数据。
在一个或多个具体实施中,模式验证302可以是对象特定的(例如,包括用于验证图像的模式验证,以及用于验证串的不同模式验证),并用于多个不同的应用程序/沙箱对。在其他具体实施中,可以为每个应用程序提供一组模式验证的特定于应用程序的组。
如图3所示,在一些操作场景中,在电子设备104处接收的网络数据可以是加密的网络数据,诸如加密的消息。如图所示,电子设备104可以对加密的消息执行解密操作306以获得未加密的消息数据。在各种具体实施中,解密操作306可由应用程序200在向沙箱300提供未加密消息之前执行,或者解密操作306可在与沙箱300和应用程序200分离的附加沙箱(例如,附加的仅计算沙箱)中执行(例如,以进一步防止被破坏和/或损害的解密操作影响应用程序或设备的其他部分)。例如,可以向用于解密操作306的附加沙箱提供对特定于应用程序200的网络数据的解密密钥(例如,用于消息传送应用程序的消息的解密密钥)的访问。
图4示出了用于特定于应用程序的网络数据过滤的示例性过程的各种附加方面。如图4所示,在沙箱300内,诸如电子设备104的电子设备可以对在该设备处接收的网络数据执行解析、解码和/或解包操作400。这些解析、解码和/或解包操作400可以是用于解析、解码、转码和/或解包特定应用程序200的特定于应用程序的数据的特定于应用程序的操作。在一些示例中,解析数据可包括从字符串或二进制串获得数据(例如,以从所获得的数据构造数据结构)。在一些示例中,解码数据可包括使用编码方案对先前从未编码的数据编码(例如,在另一设备处或在服务器处)的编码数据进行解码,以获得未编码的数据。在一些示例中,转码数据可包括将先前使用第一编码方案编码的编码数据直接转换为使用不同的第二编码方案编码的编码数据(例如,不存储使用第一编码方案编码的编码数据的中间解码版本)。在一些示例中,解包数据可包括从复合数据结构中提取先前已封装到复合数据结构中的多个数据元素。例如,可以为每个应用程序提供沙箱300,需要解析、解码和/或解包针对该应用程序的消息和/或网络内容以由该应用程序进一步处理。
图4还示出了如何通过作为特定于应用程序的网络数据过滤进程一部分的一个或多个串行化操作传递网络数据。在图4的示例中,在将网络数据提供给沙箱300之前,网络数据通过串行化编码器402(例如,XPC编码器)传递。串行化编码器402可以将以消息编码格式接收的网络数据编码成串行化的不可信封装网络数据,用于由沙箱300内的特定于应用程序的进程来解析、解码和/或解包。在沙箱300内,串行化数据可任选地由串行化解码器404解码,以便由解析、解码和解包操作400处理。
在沙箱300内的特定于应用程序的解析、解码和解包操作400之后,来自网络数据的所得解包对象可在沙箱300内由附加的串行化编码器406编码成串行化的对象。然后,可任选地将串行化的解包对象提供给另一串行化解码器408,以进行解码/转码,从而执行模式验证302。
在一些示例中,从沙箱300输出的串行化编码数据(例如,从串行化编码器406到串行化解码器408或模式验证302)不同于输入到沙箱300的串行化编码数据(例如,从串行化编码器402)。这部分是因为在沙箱300内的解析、解码和解包操作400之前,从网络数据生成的对象的对象类型可能是未知的。
作为一个例示性示例,解析、解码和解包操作400可包括用于解析和/或解包在网络数据中的各种输入表示(例如,用于文本的颜色的表示、用于便携式文档格式的颜色的表示或用于透明图像的背景颜色的表示)中表示的颜色的操作。解析、解码和解包操作400可包括用于解析和/或解码以这些多个表示中的任何一个表示的颜色的操作。相反,一旦由沙箱300中的解析、解码和解包操作400解析和解包颜色,则串行化编码器406可将以任何表示形式接收的颜色编码成颜色的单个(例如,标准)表示(例如,作为四个分量的数组)。包括与针对沙箱300内的各种数据类型的各种表示的各种解析/解包操作相关联的解析、解码和解包操作400可防止与针对各种数据类型的各种表示的各种解析/解包操作相关联的任何预期或未预期的弱点成为应用程序200本身或应用程序200可访问的逻辑和/或硬件资源的弱点。
图4所示的特定于应用程序的网络数据过滤进程可将部件从其原始格式(例如,键控存档器、plist、protobuf、图像/数据解码器等)解码和/或转码为基本串行化(例如,XPC)对象,并且可对得到的串行化的对象实施严格模式(例如,以减轻处理中的逻辑缺陷)。当串行化的对象被转换回结构表示时,可以验证模式以确保字段类型是正确的,并且成功地评估它们的验证不变量。
图4所示的特定于应用程序的网络数据过滤进程可以帮助确保转码和/或解析错误都发生在沙箱300内,可以帮助确保模式验证302提供解码参数和参数组合的严格验证,并且可以防止在不鉴定模式扩展的情况下添加到零点击攻击表面。
在一个或多个具体实施中,可以为单个应用程序200提供多个沙箱300(例如,用于消息的不同部分的各个沙箱)。例如,图5示出了其中特定于应用程序的网络过滤进程链可被链接在一起以安全地下载和转码诸如图像和/或视频附件的网络数据的示例。
如图5所示,用于消息传送的IDS客户端501可以将诸如消息数据二进制大对象的网络数据提供给代理500,例如用于管理应用程序的传入网络数据的代理。在图5的示例中,代理500将消息数据二进制大对象提供给第一过滤器进程502。例如,第一过滤器进程502可以是用于消息传送应用程序的特定于应用程序的网络数据过滤进程(例如,包括沙箱300的第一实现、模式验证302和/或如以上结合图3和/或图4所述的其他进程)。
如图所示,第一过滤器进程502可以解串行化并验证消息数据二进制大对象,并向代理500返回已验证的属性列表(例如,plist)。代理500可向传送代理504提供从消息数据二进制大对象获得的媒体资产的属性列表和统一资源定位符(URL)。传送代理504可以从URL下载媒体资产并将其保存为磁盘上的文件。传送代理504可以向代理500提供到下载并保存在磁盘上的媒体资产的路径。
代理500可向第二过滤器进程506提供到磁盘上媒体文件的路径。例如,第二过滤器进程506也可以是用于处理消息传送应用程序的图像的特定于应用程序的网络数据过滤进程(例如,包括沙箱300的第二实现、模式验证302和/或如以上结合图3和/或图4所述的其他进程)。如图所示,第二过滤器进程506可包括执行操作以将媒体文件(例如,使用一个或多个图像相关应用程序编程接口(API)和/或其他进程)转码为预定格式(例如,诸如自适应可缩放纹理压缩(ASTC)格式的压缩格式)。第二过滤器进程506可以将已转码介质(例如,在存储器中)提供给传送代理504。传送代理504可以将转码后的媒体写入磁盘,并将用于已转码媒体的已转码媒体文件路径提供给代理500以用于连续的操作(例如,用于使用消息传送应用程序的用户界面来显示图像)。
使用图5中的链式过滤器进程502和506,每个过滤器进程包括沙箱300和模式验证302,可使用如本文所述的多个特定于应用程序的网络数据过滤进程来处理和验证消息以及与消息相关联的图像和/或视频附件。在一个或多个具体实施中,模式验证302可以是特定于应用程序的的,在这种情况下,相同的模式验证302可用于每个链式过滤器进程502和506。
图6示出了根据一个或多个具体实施的用于特定于应用程序的网络数据过滤的示例性过程600的流程图。出于解释的目的,本文中主要参考图1的电子设备102和104以及服务器120和140来描述过程600。然而,过程600不限于图1的电子设备102和104以及服务器120和140,并且过程600的一个或多个框(或操作)可由一个或多个其他部件和/或其他合适的设备来执行。进一步出于解释的目的,过程600的框在本文中被描述为顺序地或线性地发生。然而,过程600的多个框可并行发生。此外,过程600的框不必按所示顺序执行,并且/或者过程600的一个或多个框不必执行和/或可由其他操作替代。
在框602,在具有(例如,如本文所述的应用程序200)的设备处,可接收包括与具有对象类型的对象相关联的信息的消息。该应用程序可被配置为处理该消息以向用户界面提供包括该对象的消息内容。该应用程序可以例如是消息传送应用程序或能够接收和处理消息、各种对象类型的消息对象和/或其他消息内容的另一应用程序。例如,消息传送应用程序可包括用于向用户显示消息以及用于接收用于编写传出消息的消息输入的用户界面。对象类型的示例可包括颜色、图像、视频、文本、键入指示符、字体等。
在框604,可在与应用程序分离的沙箱(例如,如本文所述的沙箱300)中对消息执行针对应用程序的特定于应用程序的操作。特定于应用程序的操作可包括确定对象类型。特定于应用程序的操作还可包括基于所确定的对象类型,尝试从消息中与对象相关联的信息生成对象。在一些示例中,沙箱被布置为允许特定于应用程序的操作破坏一个或多个特定于应用程序的操作和沙箱本身,并且防止特定于应用程序的操作或沙箱本身的任何破坏来破坏该应用程序或该设备的其他部分。在一些示例中,确定对象类型包括解析消息以获得对象类型。在一些示例中,生成对象包括基于该解析来解包该消息。
在各种示例中,消息可包括一种或多种类型的对象。进入沙箱的消息有效载荷可以不包括标识对象类型的元数据。在这些示例中,在沙箱内处理消息有效载荷(例如,由特定于应用程序的进程解析、解码和/或解包)以找出消息中包括信息的对象的类型。在这些示例中,可以将对象的类型从沙箱提供给应用程序以进一步处理和/或显示对象。
在一个或多个具体实施中,本文结合框604所述的操作可以在为沙箱预分配的存储器内执行(例如,在接收用于在沙箱内处理的任何数据之前和/或独立于接收用于在沙箱内处理的任何数据)。在一个或多个其他操作中,本文结合框604所述的操作可以在由应用程序为沙箱300分配的附加存储器中执行(例如,如以下结合图7、图8和/或图9进一步详细描述的)。
在框606,根据在沙箱中生成对象的尝试的完成,可基于对象类型在沙箱外部和应用程序外部执行对象的模式验证(例如,如本文所述的模式验证302)。在一个或多个具体实施中,模式验证发生在与沙箱并与应用程序分离的第二沙箱内部。在一些示例中,响应于框604的至少一些特定于应用程序的操作的完成来执行模式验证。例如,如果所有特定于应用程序的操作失败和/或如果沙箱本身被破坏或崩溃,则消息/对象可能不通过沙箱传递到模式验证。根据在沙箱中生成对象的不完整尝试,可防止将与对象相关联的数据提供给模式验证或应用程序。在一些示例中,不完整尝试可以是用于生成对象的一个或多个特定于应用程序的进程的失败。虽然本文描述了使用模式验证302来生成并验证单个对象类型的单个对象的示例,但是应当理解,在一个或多个具体实施中,可以在沙箱300内生成多个不同类型的多个对象,然后使用模式验证302来验证。
在一些示例中,消息的另一部分可以提供给应用程序,即使当对象未通过沙箱时(例如,由于在沙箱内生成对象的不完整尝试)。例如,在沙箱内,可以从消息生成另一对象,并且可以基于该另一对象的另一对象类型,在沙箱外部和在应用程序外部为该另一对象执行另一模式验证。根据另一对象的成功模式验证,对应于该另一对象的已验证对象可以提供给应用程序。
在一些场景中,整个沙箱可能被破坏,使得特定于应用程序的操作不能从沙箱产生任何输出。根据沙箱中的特定于应用程序的操作的完全失败,可以防止向应用程序传递消息。在防止向应用程序传递消息的情况下,可以将失败通知发送到远程设备,例如消息传送服务器或消息发送者的设备。
根据在沙箱中生成的对象的成功模式验证,可以向应用程序提供对应的经验证对象。在一个或多个具体实施中,成功的模式验证指示该对象符合该对象类型的模式。在一个或多个具体实施中,可基于对象的模式验证来确定对象不符合对象类型的预期模式。响应于对象不符合对象类型的模式的确定,可防止将对象提供给应用程序。
在一个或多个具体实施中,消息可以是加密消息。在消息是加密消息的场景中,可以在沙箱中对消息执行特定于应用程序的操作之前对加密消息进行解密,以获得包括与对象相关联的信息的未加密消息数据。加密消息可以由应用程序解密,然后提供给沙箱,或者可以在与沙箱并与应用程序分离的附加沙箱中解密。在一些示例中,附加沙箱可访问消息的解密密钥(例如,用于解密消息)。
在本文结合例如图2至图6所述的示例中,用于解析、解码和/或解包网络数据的特定于应用程序的进程的各种特征被描述为在与用于处理网络数据的应用程序分离的沙箱内执行。在一个或多个具体实施中,沙箱可以具有可用于存储和/或处理网络数据的有限和/或固定量的存储器。在一个或多个操作场景中,网络数据可以具有对于特定于应用程序的进程可用的存储器内(例如,在为沙箱300分配的存储器内)的存储和/或处理而言太大的大小。
根据本公开的各方面,特定于应用程序的进程可确定(或被通知)要在沙箱中处理的网络数据具有对于沙箱可用的存储器内的存储和/或处理而言太大的大小,并且可请求分配附加的存储器。然而,因为例如沙箱中的特定于应用程序的进程可能无法访问诸如存储器管理器的系统资源,所以特定于应用程序的进程可能无法从系统进程请求存储器和/或可能被阻止分配附加的存储器。
根据本公开的各方面,特定于应用程序的进程可请求从已接收到网络数据的应用程序或其他进程分配附加的存储器。例如,图7示出了其中沙箱300包括存储器区域703的操作场景,该存储器区域被专门分配用于由沙箱300中的进程使用。在各种具体实施中,沙箱300的存储器区域703可以是与电子设备104的系统存储器702物理上分离的存储器区域和/或逻辑上分离的存储器区域(例如,如图7的示例中),或者可以是系统存储器702中被专门且排他地分配给沙箱300的区域(例如,在接收网络数据之前)。
在一个或多个操作场景中,在电子设备104处接收到的网络数据对于沙箱300的存储器区域703中的处理和/或存储来说太大。例如,存储器区域703可以具有不足以存储第一处理的输出和/或不足以存储第一处理的中间处理数据的固定大小。
在一个或多个具体实施中,应用程序200可对沙箱300内的特定于应用程序的进程进行初始调用,以确定与应用程序要处理的数据(例如,网络数据)相关联的文件类型、大小和/或其他对象信息。例如,在沙箱300内,电子设备104可以解析消息以确定要从消息数据生成的对象的对象类型,并确定与消息内的对象相关联的信息的位置。例如,如果对象类型是图像,则电子设备104可以在沙箱300内尝试确定图像类型和获得图像的大小。可以向应用程序200提供利用沙箱300从消息获得的图像类型、图像大小和/或其他元数据(例如,在通过模式验证302成功验证图像类型和/或图像大小之后)。在一个或多个具体实施中,从沙箱300提供给应用程序200的大小信息可以构成存储器请求,或者可以以存储器请求的形式提供。在一个或多个具体实施中,存储器请求还可包括对应用程序200的图像大小大于沙箱300可用的存储器区域703的大小的指示,或对沙箱300处理图像所需的附加存储器的量的指示。在其他具体实施中,应用程序200可基于图像大小来确定要分配附加的存储器(例如,通过确定图像大小大于大小阈值,诸如大于存储器区域703的大小)。
如图7的示例中所示,一旦确定(例如,通过沙箱300和/或应用程序200内的特定于应用程序的进程)存储器区域703的大小不足以使用存储器区域703执行特定于应用程序的进程和/或图像大小已提供给应用程序200,应用程序200就可以向电子设备104的存储器管理器700提供(例如,响应于从沙箱300接收大小信息和/或存储器请求)分配请求。例如,应用程序200可具有被分配给应用程序使用的存储器区域704(例如,存储器702中的地址空间)。分配请求可以包括注册端口和/或管道的请求,用于应用程序和沙箱300之间的通信。存储器管理器700可以生成(例如,响应于来自应用程序的分配请求)用于通信的标识符(例如,描述符,诸如文件描述符)。应用程序200可以将标识符映射或链接到存储器区域700。
应用程序200可对沙箱300进行(例如,第二)调用以执行第一处理(例如,以从消息中提取对应于图像的图像数据,并对所提取的图像数据进行解码、转码和/或解包以形成应用程序200和/或模式验证302所期望的格式的数据结构)。对沙箱300的第二调用可包括作为存储器区域704的区域标识符的标识符。以此方式,当沙箱300内的进程将输出写入区域标识符(例如,如由存储器管理器响应于应用程序200的请求而授权的)时,将来自沙箱300的输出写入已分配给应用程序200的存储器区域704。在一个或多个具体实施中,区域标识符可包括对应于存储器区域704的统一资源标识符或统一资源定位符。在一个或多个具体实施中,因为存储器区域704被分配给应用程序200,所以存储器管理器700将存储器区域704记入应用程序200(例如,而不是沙箱300),即使沙箱300内的特定于应用程序的进程利用存储器区域704。
如图8所示,使用从应用程序200提供的区域标识符,沙箱300中的特定于应用程序的进程可以向存储器区域704提供(例如,写入)第一进程数据。如图所示,存储在存储器区域704中的第一经处理数据随后可由模式验证302访问和/或由应用程序200调用和/或以其他方式访问以用于进一步处理(例如,如本文结合图2至图6中的任一者或全部所述的处理)。如图8所示,应用程序200可以进一步处理第一经处理数据并生成第二经处理数据。第二经处理数据可存储在同一存储器区域704中,或可存储在由存储器管理器分配给应用程序的附加存储器中。
图7和图8的示例是在分配存储器给沙箱化进程使用的应用程序的上下文中描述的。然而,应当理解,结合图7和图8所述的操作,其中设备处的第一进程(例如,沙箱化进程)从与设备的存储器管理器分离的第二进程(例如,应用程序)接收存储器分配,可以应用于其他第一进程和第二进程(例如,在第一进程不具有足够存储器并且其中存储器统计将被应用于第二进程的任何场景中)。
图9示出了根据一个或多个具体实施的用于由设备处的一个进程使用设备处的另一进程的存储器来处理数据的示例性过程900的流程图。出于解释的目的,本文主要参考图1的电子设备104来描述过程900。然而,过程900不限于图1的电子设备104,并且过程900的一个或多个框(或操作)可由一个或多个其他部件和/或其他合适的设备来执行。进一步出于解释的目的,过程900的框在本文中被描述为顺序地或线性地发生。然而,过程900的多个框可并行地发生。此外,过程900的框不必按所示顺序执行,并且/或者过程900的一个或多个框不必执行和/或可由其他操作替代。
在框902,在包括第一进程(例如,沙箱化进程或另一进程,诸如沙箱300中的特定于应用程序的进程)、第二进程(例如,应用程序或另一进程)和存储器管理器(例如,存储器管理器700)的计算设备(例如,电子设备104)处,第一进程可标识要由第二进程处理的数据。第一进程可通过接收该数据、通过从第二进程接收指示该数据可用的调用或通过从另一进程(例如,系统进程)接收该数据可用的消息或其他事件(作为示例)来标识要处理的数据。要处理的数据可包括通过网络接收的网络数据(诸如图像数据),和/或可以是由设备接收或存储在设备处的另一类型的数据,诸如JavaScript对象符号(JSON)数据、属性列表(plist)数据、其他类型的数据和/或无类型数据。在一个或多个具体实施中,第一进程可包括图5的过滤器进程502和过滤器进程506中的任一者或两者。在一个或多个具体实施中,由第一进程标识要由第二进程处理的数据可包括在第一进程处从第二进程接收对与该数据相对应的大小信息的初始请求。
在一个或多个具体实施中,在由计算设备处的第一进程标识要由第二进程处理的数据之前,计算设备可接收该数据(例如,在经由诸如对应于第二进程的消息传送应用程序等消息传送应用程序接收的消息中)。第一进程和第二进程可以各自与存储器管理器分离。例如,第一进程可以是仅计算沙箱化进程(例如,沙箱300)。第二进程(例如,应用程序200)可访问仅计算沙箱化进程不可访问的系统资源(例如,任何或所有系统资源202,诸如存储器管理器700和/或其他系统软件和/或硬件资源)。
在框904,第一进程可向第二进程传输存储器分配请求。例如,第一进程可以向第二进程传输存储器请求,如本文结合图7所述。在一个或多个具体实施中,第一进程可响应于(例如,由第一进程)确定第一进程的另一存储器区域(例如,存储器区域703)不足以处理数据而传输存储器请求。在一个或多个具体实施中,传输存储器请求可包括响应于来自第一进程的对指示与数据相关联的存储器要求的大小或其他大小信息的初始请求而将指示与数据相关联的存储器要求的数据大小或其他大小信息提供给第二进程。
在框906,第一进程可从第二进程接收对应于存储器区域(例如,存储器区域704)的标识符(例如,区域标识符)。例如,第二进程可以向存储器管理器提供分配请求,从存储器管理器接收标识符(例如,诸如用于文件端口的文件描述符的描述符),将该标识符链接到存储器区域,以及向第一进程提供区域标识符。因为存储器区域被分配给第二进程,所以存储器管理器可将存储器区域记入第二进程(例如,而不是第一进程)。
在一个或多个具体实施中,标识符可以是由存储器管理器(例如,存储器管理器700)生成的描述符。例如,描述符可以由存储器管理器基于来自第二进程的请求(例如,分配请求)来生成,该请求包括为第一进程提供对描述符的访问的请求。在一个或多个具体实施中,提供给第一进程的区域标识符可包括存储器区域的端口标识符和/或统一资源定位符。
在框908,第一进程可执行数据的第一处理。在一个或多个具体实施中,可以在从第二进程到第一进程的调用中提供在框906从第二进程提供给第一进程的区域标识符,以执行数据的第一处理。例如,第一进程对数据进行的第一处理可以包括重复地读取数据的一部分(例如,从所分配的存储器区域)、处理数据的该部分(例如,在所分配的存储器区域中),以及使用标识符将数据的经处理部分(例如,如本文结合图8所述的第一经处理数据)写入存储器区域。例如,第一进程可以在所分配的存储器区域中执行第一处理。
在一个或多个具体实施中,用第一进程对数据进行的第一处理可包括解码或转码数据(例如,如本文结合图3、图4、图5和/或图6所述)。例如,第一进程可包括通过将数据从接收该数据的格式转码为与第二进程相关联的数据格式来转码该数据。例如,第二进程可以在对用于第一处理的第一进程的调用中指定数据格式。
在一个或多个具体实施中,对数据进行转码包括移除数据的一部分。例如,数据可包括图像数据(例如,jpeg数据或任何其他图像格式的图像数据),并且移除数据的一部分可包括针对图像数据的每个像素从数据中移除未使用的比特。例如,jpeg文件的每个像素可以包括四位,其中三位包括图像信息,而其中一位未使用。在一个或多个操作场景中,恶意数据可被编码到jpeg数据的各个像素的未使用位中。由第一进程(例如,在一个或多个具体实施中的沙箱300内)移除未使用位可防止未使用位中的恶意或其他有害内容影响计算设备处的第二进程和/或其他进程。例如,在第一进程是沙箱化进程的具体实施中,所移除的恶意数据可被无害地移除或可导致第一进程失败,两种情况均防止恶意数据影响计算设备的其他部分或进程(例如,如本文结合图3至图6所述)。
在第一进程包括转码进程的一个或多个具体实施中,第一进程还可包括在执行转码之前执行数据有效的初始验证(例如,通过向模式验证302提供数据的类型数据或其他元数据)。在一个或多个具体实施中,数据包括图像数据,并且第二进程对应于图像分析进程。在一个或多个具体实施中,第二进程(例如,图像分析进程)可以是或可以包括机器学习进程,诸如图像分析进程(例如,对象识别进程、过滤进程、面部识别进程等)。
在框910,第一进程可使用标识符将第一处理的输出(例如,第一经处理数据)写入存储器区域。例如,第一处理的输出可包括数据的解码或转码版本。在一个或多个具体实施中,可在将输出写入存储器区域之前和/或在由第二进程访问之前通过模式验证(例如,模式验证302)来处理第一处理的输出。
在一个或多个具体实施中,由第二进程对所分配的存储器区域中的第一处理的输出进行的第二处理可包括当在存储器区域中从第一进程接收到数据的每个经处理部分时对所述每个经处理部分进行处理。在其他操作场景中,可在存储器区域中从第一进程接收到数据的所有经处理部分之后执行第二处理。在一个或多个具体实施中,第二进程从存储器区域重新调用经处理数据并执行经处理数据的第二处理。
图10示出了根据一个或多个具体实施的用于便于由设备处的另一进程对该设备处的一个进程的存储器中的数据进行处理的示例性过程1000的流程图。出于解释的目的,本文主要参考图1的电子设备104来描述过程1000。然而,过程1000不限于图1的电子设备104,并且过程1000的一个或多个框(或操作)可由一个或多个其他部件和/或其他合适的设备来执行。进一步出于解释的目的,过程1000的框在本文中被描述为顺序地或线性地发生。然而,过程1000的多个框可并行地发生。此外,过程1000的框不必按所示顺序执行,并且/或者过程1000的一个或多个框不必执行和/或可由其他操作替代。
在框1002,第一进程(例如,应用程序200或诸如客户机进程之类的另一进程)标识要由第二进程(例如,沙箱化进程或诸如沙箱300中的特定于应用程序的进程之类的另一进程)处理的数据,第一进程和第二进程各自与计算设备(例如,电子设备104)的存储器管理器(例如,存储器管理器700)分离。为清楚起见,应当理解,在一些示例中,图10的描述中的术语“第一进程”和“第二进程”可对应于图9的描述中的相应“第二进程”和“第一进程”的方面。
在框1004,第一进程可向第二进程传输对关于要处理的数据的存储器要求的信息的请求。例如,在一个或多个具体实施中,第一进程可以是对第二进程作出对要处理的数据的大小的初始请求的客户机进程。
在框1006,第一进程可从第二进程接收关于要处理的数据的存储器要求的信息。例如,第二进程可以确定数据的大小并将数据的大小传输到第一进程。
在框1008,第一进程可分配满足从第二进程接收的响应中概述的要求的存储器(例如,存储器704)(例如,具有足够大小来存储和/或处理数据的存储器)。例如,第一进程可以向存储器管理器提供分配请求,从存储器管理器接收标识符(例如,诸如用于文件端口的文件描述符的描述符),将标识符链接到存储器区域,以及向第二进程提供区域标识符(例如,如以上结合图7至图9所述)。因为存储器区域被分配给第一进程,所以存储器管理器可将存储器区域记入第一进程(例如,而不是第二进程)。
在框1010,第一进程可向第二进程传输对应于存储器区域的标识符(例如,区域标识符)。
在框1012,第二进程可执行数据的第一处理。例如,在一个或多个具体实施中,用第二进程对数据的第一处理可包括解码或转码数据(例如,如本文结合图3、图4、图5、图6和/或图9所述)。例如,数据的第一处理可包括通过将数据从接收该数据的格式转码为与第二进程相关联的数据格式来转码该数据。例如,第一进程可以在对用于第一处理的第二进程的调用中指定数据格式。
在框1014,第二进程可使用标识符将第一处理的输出写入存储器区域。例如,第一处理的输出可包括数据的解码或转码版本。在一个或多个具体实施中,可在由第二进程将输出写入存储器区域之前和/或在由第一进程访问输出之前通过模式验证(例如,模式验证302)来处理第二处理的输出。
在框1016,第一进程可使用先前传输的存储器区域标识符来重新调用经处理数据。然后,第一进程可以对所调用的经处理数据执行第二处理。
图11示出了可被用于实现本主题技术的一个或多个具体实施的电子系统1100。电子系统1100可以是图1所示的电子设备102或104及服务器120和/或可以是这些电子设备或服务器的一部分或当中的一者或多者。电子系统1100可包括各种类型的计算机可读介质以及用于各种其他类型的计算机可读介质的接口。电子系统1100包括总线1108、一个或多个处理单元1112、系统存储器1104(和/或缓冲器)、ROM 1110、永久性存储设备1102、输入设备接口1114、输出设备接口1106以及一个或多个网络接口1116,或者其子集及变型形式。
总线1108总体表示通信地连接电子系统1100的许多内部设备的所有系统、外围设备以及芯片组总线。在一个或多个具体实施中,总线1108将该一个或多个处理单元1112与ROM 1110、系统存储器1104和永久性存储设备1102通信地连接。该一个或多个处理单元1112从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行主题公开的过程。在不同的具体实施中,该一个或多个处理单元1112可以是单个处理器或者多核处理器。
ROM 1110存储该一个或多个处理单元1112以及电子系统1100的其他模块需要的静态数据和指令。另一方面,永久性存储设备1102可以是读写存储器设备。永久性存储设备1102可以是即使在电子系统1100关闭时也存储指令和数据的非易失性存储器单元。在一个或多个具体实施中,海量存储设备(诸如,磁盘或光盘及其相应盘驱动器)可被用作永久性存储设备1102。
在一个或多个具体实施中,可移除存储设备(诸如,软盘、闪存驱动器及其相应盘驱动器)可被用作永久性存储设备1102。与永久性存储设备1102一样,系统存储器1104可以是读写存储器设备。然而,与永久性存储设备1102不同,系统存储器1104可以是易失性读写存储器,诸如随机存取存储器。系统存储器1104可存储一个或多个处理单元1112在运行时可能需要的指令和数据中的任何指令和数据。在一个或多个具体实施中,本主题公开的过程被存储在系统存储器1104、永久性存储设备1102和/或ROM 1110中。该一个或多个处理单元1112从这些各种存储器单元检索要执行的指令和要处理的数据,以便执行一个或多个具体实施的过程。
总线1108还连接到输入设备接口1114和输出设备接口1106。输入设备接口1114使得用户能够向电子系统1100传送信息以及选择命令。可与输入设备接口1114一起使用的输入设备可包括例如字母数字混合键盘和指向设备(也称为“光标控制设备”)。输出设备接口1106可使得例如能够显示电子系统1100所生成的图像。可与输出设备接口1106一起使用的输出设备可包括例如打印机和显示设备,诸如液晶显示器(LCD)、发光二极管(LED)显示器、有机发光二极管(OLED)显示器、柔性显示器、平板显示器、固态显示器、投影仪或用于输出信息的任何其他设备。一个或多个具体实施可包括既充当输入设备又充当输出设备的设备,诸如触摸屏。在这些具体实施中,提供给用户的反馈可以是任何形式的感官反馈,诸如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声学、语音或触觉输入。
最后,如图11所示,总线1108还通过一个或多个网络接口1116将电子系统1100耦接到一个或多个网络和/或耦接到一个或多个网络节点,诸如图1中所示的服务器120。以此方式,电子系统1100可以是计算机网络(诸如LAN、广域网(“WAN”)或内联网)的一部分,或者可以是网络的网络(诸如互联网)的一部分。电子系统1100的任何或所有部件可与本主题公开一起使用。
根据本公开的各方面,提供了一种方法,该方法包括在具有应用程序的设备处接收包括与具有对象类型的对象相关联的信息的消息。该应用程序被配置为处理该消息以向用户界面提供包括该对象的消息内容。该方法还包括在与该应用程序分离的沙箱中对该消息执行针对该应用程序的特定于应用程序的操作。这些特定于应用程序的操作包括:确定该对象类型;以及基于所确定的对象类型,尝试从该消息中与该对象相关联的该信息生成该对象。该方法还包括:根据在该沙箱中生成该对象的尝试的完成,在该沙箱外部和该应用程序外部基于该对象类型执行该对象的模式验证。
根据本公开的各方面,提供了一种存储指令的非暂态机器可读介质,这些指令当由一个或多个处理器执行时致使该一个或多个处理器执行操作,这些操作包括:在具有应用程序的设备处接收包括与具有对象类型的对象相关联的信息的消息。该应用程序被配置为处理该消息以向用户界面提供包括该对象的消息内容。这些操作还包括在与该应用程序分离的沙箱中对该消息执行针对该应用程序的特定于应用程序的操作。这些特定于应用程序的操作包括:确定该对象类型;以及基于所确定的对象类型,尝试从该消息中与该对象相关联的该信息生成该对象。这些操作还包括:根据在沙箱中生成该对象的尝试的完成(例如,如果成功生成该对象),在该沙箱外部和该应用程序外部基于该对象类型执行该对象的模式验证。
根据本公开的各方面,提供了一种电子设备,该电子设备包括存储应用程序的存储器以及一个或多个处理器,其中该一个或多个处理器被配置为接收包括与具有对象类型的对象相关联的信息的消息。该应用程序被配置为处理该消息以向用户界面提供包括该对象的消息内容。该一个或多个处理器还被配置为在与该应用程序分离的沙箱中对该消息执行针对该应用程序的特定于应用程序的操作。这些特定于应用程序的操作包括:确定该对象类型;以及基于所确定的对象类型,尝试从该消息中与该对象相关联的该信息生成该对象。该一个或多个处理器还被配置为根据在该沙箱中生成该对象的尝试的完成,在该沙箱外部和该应用程序外部基于该对象类型执行该对象的模式验证。
根据本公开的各方面,提供了一种方法,该方法包括在包括第一进程、第二进程和存储器管理器的计算设备处:由该第一进程标识要由该第二进程处理的数据,该第一进程和该第二进程各自与该存储器管理器分离;从该第一进程向该第二进程传输存储器分配请求;由该第一进程从该第二进程接收对应于存储器区域的标识符;由该第一进程执行该数据的第一处理;以及使用该标识符将该第一处理的输出写入该存储器区域。
根据本公开的各方面,提供了一种电子设备,该电子设备包括第一进程;第二进程;存储器管理器,该第一进程和该第二进程各自与该存储器管理器分离;以及一个或多个处理器,该一个或多个处理器被配置为:由第一进程标识要由第二进程处理的数据;从该第一进程向该第二进程传输存储器分配请求;由该第一进程从该第二进程接收对应于存储器区域的标识符;由该第一进程执行该数据的第一处理;以及使用该标识符将该第一处理的输出写入该存储器区域。
根据本公开的各方面,提供了一种存储指令的非暂态机器可读介质,这些指令当由一个或多个处理器执行时致使该一个或多个处理器执行操作,这些操作包括在包括第一进程、第二进程和存储器管理器的计算设备处:由该第一进程标识要由该第二进程处理的数据,该第一进程和该第二进程各自与该存储器管理器分离;从该第一进程向该第二进程传输存储器分配请求;由该第一进程从该第二进程接收对应于存储器区域的标识符;由该第一进程执行该数据的第一处理;以及使用该标识符将该第一处理的输出写入该存储器区域。
可以利用编写有一个或多个指令的有形计算机可读存储介质(或一种或多种类型的多个有形计算机可读存储介质)部分地或全部地实现本公开范围之内的具体实施。有形计算机可读存储介质实质上也可以是非暂态的。
计算机可读存储介质可以是任何可以由通用或专用计算设备读、写或以其他方式访问的存储介质,包括任何能够执行指令的处理电子器件和/或处理电路。例如,非限制地,计算机可读介质可包括任何易失性半导体存储器,诸如RAM、DRAM、SRAM、T-RAM、Z-RAM和TTRAM。计算机可读介质也可包括任何非易失性半导体存储器,诸如ROM、PROM、EPROM、EEPROM、NVRAM、闪存、nvSRAM、FeRAM、FeTRAM、MRAM、PRAM、CBRAM、SONOS、RRAM、NRAM、赛道存储器、FJG和Millipede存储器。
此外,计算机可读存储介质可包括任何非半导体存储器,诸如光盘存储装置、磁盘存储装置、磁带、其他磁性存储设备或者能够存储一个或多个指令的任何其他介质。在一个或多个具体实施中,有形计算机可读存储介质可直接耦接到计算设备,而在其他具体实施中,有形计算机可读存储介质可例如经由一个或多个有线连接、一个或多个无线连接、或它们的任意组合而间接地耦接到计算设备。
指令可以是直接能执行的,或者可用于开发可执行指令。例如,指令可被实现为可执行的或不可执行的机器代码,或者可被实现为可被编译以产生可执行的或不可执行的机器代码的高级语言指令。此外,指令也可被实现为数据,或者可包括数据。计算机可执行指令也可以任何格式组织,包括例程、子例程、程序、数据结构、对象、模块、应用、小程序、函数等。如本领域技术人员认识到的那样,包括但不限于指令的数量、结构、序列和组织的细节可明显不同,而不改变底层的逻辑、功能、处理和输出。
虽然以上论述主要涉及执行软件的微处理器或多核处理器,但一个或多个具体实施由一个或多个集成电路诸如ASIC或FPGA执行。在一个或多个具体实施中,此类集成电路执行存储在电路自身上的指令。
本领域的技术人员将会认识到,本文所述的各种例示性的框、模块、元件、部件、方法和算法可被实现为电子硬件、计算机软件或两者的组合。为了说明硬件和软件的这种可互换性,上文已经一般性地按照功能性对各种例示性的框、模块、元件、部件、方法和算法进行了描述。此类功能性是被实现为硬件还是软件取决于具体应用程序以及对整个系统施加的设计约束。技术人员对于每个具体应用程序可通过不同方式实现所描述的功能性。各种部件和框可被不同地布置(例如,以不同的顺序排列,或以不同的方式划分),而不脱离本主题技术的范围。
应当理解,本发明所公开的过程中的框的特定顺序或分级结构为示例性方法的例示。基于设计优选要求,应当理解,过程中的框的特定顺序或者分级结构可被重新布置或者所有示出的框都被执行。这些框中的任何框可被同时执行。在一个或多个具体实施中,多任务和并行处理可能是有利的。此外,上述具体实施中各个系统部件的划分不应被理解为在所有具体实施中都要求此类划分,并且应当理解,程序部件和系统可一般性地被一起整合在单个软件产品中或者封装到多个软件产品中。
如本说明书以及本专利申请的任何权利要求中所用,术语“基站”、“接收器”、“计算机”、“服务器”、“处理器”及“存储器”均是指电子设备或其他技术设备。这些术语排除人或者人的群组。出于本说明书的目的,术语“显示”或“正在显示”意指在电子设备上显示。
如本文所用,在用术语“和”或“或”分开项目中任何项目的一系列项目之后的短语“中的至少一者”是将列表作为整体进行修饰,而不是修饰列表中的每个成员(即每个项目)。短语“中的至少一者”不要求选择所列出的每个项目中的至少一个;相反,该短语允许包括任何一个项目中的至少一个和/或项目的任何组合中的至少一个和/或每个项目中的至少一个的含义。举例来说,短语“A、B和C中的至少一者”或“A、B或C中的至少一者”各自是指仅A、仅B或仅C;A、B和C的任意组合;和/或A、B和C中的每一个中的至少一个。
谓词字词“被配置为”、“能够操作以”以及“被编程以”并不意味着对某一主题进行任何特定的有形或无形的修改而是旨在可互换使用。在一个或多个具体实施中,被配置为监视和控制操作或部件的处理器也可以是意指处理器被编程以监视和控制操作或者处理器可操作以监视和控制操作。同样,被配置为执行代码的处理器可解释为被编程以执行代码或能够操作以执行代码的处理器。
短语诸如方面、该方面、另一方面、一些方面、一个或多个方面、具体实施、该具体实施、另一具体实施、一些具体实施、一个或多个具体实施、实施方案、该实施方案、另一实施方案、一些实施方案、一个或多个实施方案、配置、该配置、其他配置、一些配置、一种或多种配置、主题技术、公开、本公开、它们的其他变型等等都是为了方便,并不意味着涉及这样的一个或多个短语的公开对于主题技术是必不可少的,也不意味着这种公开适用于主题技术的所有配置。涉及此类一个或多个短语的公开可适用于所有配置或一个或多个配置。涉及此类一个或多个短语的公开可提供一个或多个示例。短语诸如方面或一些方面可指代一个或多个方面,反之亦然,并且这与其他前述短语类似地应用。
字词“示例性”在本文中被用于意指“用作示例、实例或者例示”。在本文中被描述为“示例性的”或作为“示例”的任何实施方案不必被理解为优选于或优于其他具体实施。此外,在术语“包括”、“具有”等在说明书或权利要求中使用的限度内,这样的术语旨在是包含性的,与术语“包括”当在权利要求中被用作过渡字词时“包括”被解释的方式类似。
本领域的普通技术人员已知或稍后悉知的贯穿本公开描述的各个方面的元素的所有结构和功能等同物通过引用明确地并入本文,并且旨在被权利要求书所涵盖。此外,本文所公开的任何内容并非旨在提供给公众,而与该公开是否明确地被陈述在权利要求中无关。不应根据35U.S.C.§112(f)的规定解释任何权利要求要素,除非使用短语“用于……的装置”明确陈述了该要素,或者就方法权利要求而言,使用短语“用于……的步骤”陈述了该要素。
先前的描述被提供以使得本领域的技术人员能够实践本文所述的各个方面。这些方面的各种修改对本领域的技术人员而言是显而易见的,并且本文所限定的通用原则可应用于其他方面。因此,本权利要求书并非旨在受限于本文所示的方面,而是旨在使得全部范围与语言权利要求书一致,其中对奇异值中的元素的引用并非旨在意味着“仅仅一个”,而是指“一个或多个”,除非被具体指出。除非另外特别说明,否则术语“一些”是指一个或多个。男性的代名词(例如,他的)包括女性和中性(例如,她的和它的),并且反之亦然。标题和子标题(如果有的话)仅为了方便起见而使用并且不限制本主题公开。
Claims (41)
1.一种方法,包括:
在具有应用程序的设备处接收消息,所述消息包括与具有对象类型的对象相关联的信息,其中所述应用程序被配置为处理所述消息以向用户界面提供包括所述对象的消息内容;
在与所述应用程序分离的沙箱中对所述消息执行针对所述应用程序的特定于应用程序的操作,其中所述特定于应用程序的操作包括:
确定所述对象类型;以及
基于所确定的对象类型,尝试从所述消息中与所述对象相关联的所述信息生成所述对象;以及
根据在所述沙箱中生成所述对象的所述尝试的完成,在所述沙箱外部和所述应用程序外部基于所述对象类型来执行所述对象的模式验证。
2.根据权利要求1所述的方法,其中执行所述模式验证包括在与所述沙箱分离并与所述应用程序分离的附加沙箱中执行所述模式验证。
3.根据权利要求1所述的方法,还包括根据所述沙箱中生成的所述对象的成功模式验证,向所述应用程序提供对应的经验证对象,其中所述成功模式验证指示所述对象符合所述对象类型的模式。
4.根据权利要求1所述的方法,还包括根据在所述沙箱中生成所述对象的不完整尝试:
防止将与所述对象相关联的数据提供给所述模式验证或所述应用程序。
5.根据权利要求4所述的方法,还包括:
在所述沙箱内从所述消息生成另一对象;
基于所述另一对象的另一对象类型,在所述沙箱外部和所述应用程序外部执行所述另一对象的另一模式验证;以及
根据所述另一对象的成功模式验证,向所述应用程序提供对应于所述另一对象的经验证对象。
6.根据权利要求1所述的方法,还包括根据所述沙箱中的所述特定于应用程序的操作的完全失败:
防止将所述消息传递给所述应用程序;以及
向远程设备发送失败通知。
7.根据权利要求1所述的方法,还包括:
基于所述对象的所述模式验证来确定所述对象不符合所述对象类型的预期模式;以及
响应于所述对象不符合所述对象类型的模式的所述确定,防止将所述对象提供给所述应用程序。
8.根据权利要求1所述的方法,其中所述沙箱包括仅计算沙箱。
9.根据权利要求1所述的方法,其中所述消息是加密消息,所述方法还包括:
在与所述沙箱分离并与所述应用程序分离的附加沙箱中解密所述消息,以获得包括与所述对象相关联的所述信息的未加密消息数据。
10.一种存储指令的非暂态机器可读介质,所述指令在由一个或多个处理器执行时致使所述一个或多个处理器执行操作,所述操作包括:
在具有应用程序的设备处接收消息,所述消息包括与具有对象类型的对象相关联的信息,其中所述应用程序被配置为处理所述消息以向用户界面提供包括所述对象的消息内容;
在与所述应用程序分离的沙箱中对所述消息执行针对所述应用程序的特定于应用程序的操作,其中所述特定于应用程序的操作包括:
确定所述对象类型;以及
基于所确定的对象类型,尝试从所述消息中与所述对象相关联的所述信息生成所述对象;以及
根据在所述沙箱中生成所述对象的所述尝试的完成,在所述沙箱外部和所述应用程序外部基于所述对象类型来执行所述对象的模式验证。
11.根据权利要求10所述的非暂态机器可读介质,其中执行所述模式验证包括在与所述沙箱分离并与所述应用程序分离的附加沙箱中执行所述模式验证。
12.根据权利要求10所述的非暂态机器可读介质,所述操作还包括根据所述沙箱中生成的所述对象的成功模式验证,向所述应用程序提供对应的经验证对象,其中所述成功模式验证指示所述对象符合所述对象类型的模式。
13.根据权利要求10所述的非暂态机器可读介质,所述操作还包括根据在所述沙箱中生成所述对象的不完整尝试:
防止将与所述对象相关联的数据提供给所述模式验证或所述应用程序。
14.根据权利要求13所述的非暂态机器可读介质,所述操作还包括:
在所述沙箱内从所述消息生成另一对象;
基于所述另一对象的另一对象类型,在所述沙箱外部和所述应用程序外部执行所述另一对象的另一模式验证;以及
根据所述另一对象的成功模式验证,向所述应用程序提供对应于所述另一对象的经验证对象。
15.根据权利要求10所述的非暂态机器可读介质,所述操作还包括:
基于所述对象的所述模式验证来确定所述对象不符合所述对象类型的预期模式;以及
响应于所述对象不符合所述对象类型的模式的所述确定,防止将所述对象提供给所述应用程序。
16.一种电子设备,包括:
存储器,所述存储器存储应用程序;和
一个或多个处理器,其中所述一个或多个处理器被配置为:
接收消息,所述消息包括与具有对象类型的对象相关联的信息,其中所述应用程序被配置为处理所述消息以向用户界面提供包括所述对象的消息内容;
在与所述应用程序分离的沙箱中对所述消息执行针对所述应用程序的特定于应用程序的操作,其中所述特定于应用程序的操作包括:
确定所述对象类型;以及
基于所确定的对象类型,尝试从所述消息中与所述对象相关联的所述信息生成所述对象;以及
根据在所述沙箱中生成所述对象的所述尝试的完成,在所述沙箱外部和所述应用程序外部基于所述对象类型来执行所述对象的模式验证。
17.根据权利要求16所述的电子设备,其中所述一个或多个处理器还被配置为根据所述沙箱中的所述特定于应用程序的操作的完全失败:
防止将所述消息传递给所述应用程序;以及
向远程设备发送失败通知。
18.根据权利要求16所述的电子设备,其中所述一个或多个处理器还被配置为:
基于所述对象的所述模式验证来确定所述对象不符合所述对象类型的预期模式;以及
响应于所述对象不符合所述对象类型的模式的所述确定,防止将所述对象提供给所述应用程序。
19.根据权利要求16所述的电子设备,其中所述沙箱包括仅计算沙箱。
20.根据权利要求16所述的电子设备,其中所述消息是加密消息,其中所述一个或多个处理器还被配置为:
在与所述沙箱分离并与所述应用程序分离的附加沙箱中解密所述消息,以获得包括与所述对象相关联的所述信息的未加密消息数据。
21.一种方法,包括:
在包括第一进程、第二进程和存储器管理器的计算设备处:
由所述第一进程识别要由所述第二进程处理的数据,所述第一进程和所述第二进程各自与所述存储器管理器分离;
从所述第一进程向所述第二进程传输存储器分配请求;
由所述第一进程从所述第二进程接收对应于存储器区域的标识符;
由所述第一进程执行所述数据的第一处理;以及
使用所述标识符将所述第一处理的输出写入所述存储器区域。
22.根据权利要求21所述的方法,其中所述第一进程是仅计算沙箱化进程,并且所述第二进程能够访问所述沙箱化仅计算进程不能够访问的系统资源。
23.根据权利要求21所述的方法,其中所述标识符是由所述存储器管理器生成的描述符。
24.根据权利要求23所述的方法,其中所述描述符由所述存储器管理器基于来自所述第二进程的请求而生成,所述请求包括为所述第一进程提供对所述描述符的访问的请求。
25.根据权利要求23所述的方法,其中所述存储器管理器将所述存储器区域记入所述第二进程。
26.根据权利要求21所述的方法,其中由所述第一进程对所述数据进行的所述第一处理包括重复地读取所述数据的一部分,处理所述数据的所述一部分,以及使用所述标识符将所述数据的经处理部分写入所述存储器区域。
27.根据权利要求26所述的方法,其中由所述第二进程对所分配的存储器区域中的所述第一处理的所述输出进行的第二处理包括当在所述存储器区域中从所述第一进程接收到所述数据的每个经处理部分时对所述每个经处理部分进行处理。
28.根据权利要求21所述的方法,其中用所述第一进程对所述数据进行的所述第一处理包括对所述数据进行解码或转码。
29.根据权利要求21所述的方法,还包括在所述计算设备处由所述第一进程识别要由所述第二进程处理的所述数据之前,在所述计算设备处在经由消息传送应用程序接收到的消息中接收所述数据。
30.一种电子设备,包括:
第一进程;
第二进程;
存储器管理器,所述第一进程和所述第二进程各自与所述存储器管理器分离;和
一个或多个处理器,所述一个或多个处理器被配置为:
由所述第一进程识别要由所述第二进程处理的数据;
从所述第一进程向所述第二进程传输存储器的分配请求;
由所述第一进程从所述第二进程接收对应于存储器区域的标识符;
由所述第一进程执行所述数据的第一处理;以及
使用所述标识符将所述第一处理的输出写入所述存储器区域。
31.根据权利要求30所述的电子设备,其中所述第一进程是仅计算沙箱化进程,并且其中所述电子设备还包括所述沙箱化仅计算进程不能够访问并且所述第二进程能够访问的系统资源。
32.根据权利要求30所述的电子设备,其中所述标识符是由所述存储器管理器生成的描述符。
33.根据权利要求32所述的电子设备,其中所述描述符由所述存储器管理器基于来自所述第二进程的请求而生成,所述请求包括为所述第一进程提供对所述描述符的访问的请求。
34.根据权利要求33所述的电子设备,其中所述存储器管理器将所述存储器区域记入所述第二进程。
35.根据权利要求30所述的电子设备,其中由所述第一进程对所述数据进行的所述第一处理包括重复地读取所述数据的一部分,处理所述数据的所述一部分,以及使用所述标识符将所述数据的经处理部分写入所述存储器区域。
36.根据权利要求35所述的电子设备,其中由所述第二进程对所分配的存储器区域中的所述第一处理的所述输出进行的第二处理包括当在所述存储器区域中从所述第一进程接收到所述数据的每个经处理部分时对所述每个经处理部分进行处理。
37.一种存储指令的非暂态机器可读介质,所述指令在由一个或多个处理器执行时致使所述一个或多个处理器执行操作,所述操作包括:
在包括第一进程、第二进程和存储器管理器的计算设备处:
由所述第一进程识别要由所述第二进程处理的数据,所述第一进程和所述第二进程各自与所述存储器管理器分离;
从所述第一进程向所述第二进程传输存储器的分配请求;
由所述第一进程从所述第二进程接收对应于存储器区域的标识符;
由所述第一进程执行所述数据的第一处理;以及
使用所述标识符将所述第一处理的输出写入所述存储器区域。
38.根据权利要求37所述的非暂态机器可读介质,其中用所述第一进程对所述数据进行的所述第一处理包括对所述数据进行解码或转码。
39.根据权利要求37所述的非暂态机器可读介质,所述操作还包括在所述计算设备处由所述第一进程识别要由所述第二进程处理的所述数据之前,在所述计算设备处在经由消息传送应用程序接收到的消息中接收所述数据。
40.根据权利要求37所述的非暂态机器可读介质,其中所述第一进程是仅计算沙箱化进程,并且其中所述计算设备还包括所述沙箱化仅计算进程不能够访问并且所述第二进程能够访问的系统资源。
41.根据权利要求37所述的非暂态机器可读介质,其中:
由所述第一进程识别要由所述第二进程处理的所述数据包括在所述第一进程处从所述第二进程接收对与所述数据相对应的大小信息的初始请求;以及
从所述第一进程向所述第二进程传输所述存储器的所述分配请求包括响应于所述初始请求,从所述第一进程向所述第二进程传输对应于所述数据的所述大小信息。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063042002P | 2020-06-21 | 2020-06-21 | |
US63/042,002 | 2020-06-21 | ||
PCT/US2021/038259 WO2021262600A1 (en) | 2020-06-21 | 2021-06-21 | Application specific network data filtering |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115943378A true CN115943378A (zh) | 2023-04-07 |
Family
ID=76972005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180044110.6A Pending CN115943378A (zh) | 2020-06-21 | 2021-06-21 | 特定于应用程序的网络数据过滤 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20210400019A1 (zh) |
EP (1) | EP4143710A1 (zh) |
KR (1) | KR20230015956A (zh) |
CN (1) | CN115943378A (zh) |
WO (1) | WO2021262600A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11863573B2 (en) | 2020-03-06 | 2024-01-02 | ThreatConnect, Inc. | Custom triggers for a network security event for cybersecurity threat intelligence |
US20220414206A1 (en) * | 2021-06-25 | 2022-12-29 | ThreatConnect, Inc. | Browser extension for cybersecurity threat intelligence and response |
CN116599772B (zh) * | 2023-07-14 | 2024-04-09 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及相关设备 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8601579B2 (en) * | 2011-06-03 | 2013-12-03 | Apple Inc. | System and method for preserving references in sandboxes |
US20150106947A1 (en) * | 2013-10-10 | 2015-04-16 | Elwha Llc | Methods, systems, and devices for handling image data from captured images |
US9811658B2 (en) * | 2014-07-28 | 2017-11-07 | Iboss, Inc. | Selectively capturing video in a virtual environment based on application behavior |
US9916443B1 (en) * | 2015-07-21 | 2018-03-13 | Palo Alto Networks, Inc. | Detecting an attempt to exploit a memory allocation vulnerability |
US10581874B1 (en) * | 2015-12-31 | 2020-03-03 | Fireeye, Inc. | Malware detection system with contextual analysis |
JP6738013B2 (ja) * | 2016-06-23 | 2020-08-12 | 富士通株式会社 | 攻撃内容分析プログラム、攻撃内容分析方法及び攻撃内容分析装置 |
-
2021
- 2021-06-21 EP EP21743333.3A patent/EP4143710A1/en active Pending
- 2021-06-21 US US17/353,690 patent/US20210400019A1/en active Pending
- 2021-06-21 WO PCT/US2021/038259 patent/WO2021262600A1/en unknown
- 2021-06-21 CN CN202180044110.6A patent/CN115943378A/zh active Pending
- 2021-06-21 KR KR1020227044773A patent/KR20230015956A/ko active Search and Examination
Also Published As
Publication number | Publication date |
---|---|
EP4143710A1 (en) | 2023-03-08 |
US20210400019A1 (en) | 2021-12-23 |
WO2021262600A1 (en) | 2021-12-30 |
KR20230015956A (ko) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115943378A (zh) | 特定于应用程序的网络数据过滤 | |
US10552238B2 (en) | Secure inter-process communications for mobile devices | |
US10007776B1 (en) | Systems and methods for distinguishing among human users and software robots | |
CN108769027B (zh) | 安全通信方法、装置、移动终端和存储介质 | |
US9294479B1 (en) | Client-side authentication | |
US10127373B1 (en) | Systems and methods for distinguishing among human users and software robots | |
US20140032505A1 (en) | Method, computer readable medium and a device for neutralization of attacks | |
CN112035827B (zh) | 密码数据处理方法、装置、设备以及可读存储介质 | |
US10725861B2 (en) | Error correction code memory security | |
WO2020211555A1 (zh) | 文件检测方法、装置、设备及计算机可读存储介质 | |
US9990487B1 (en) | Systems and methods for distinguishing among human users and software robots | |
CN107517252A (zh) | 一种文件下载控制方法、装置及系统 | |
JP2016522931A (ja) | パスワードへの攻撃を阻害すること | |
CN114266033A (zh) | 验证码生成方法、装置、验证码登录系统及电子设备 | |
US11063915B1 (en) | Cluster of network-attachable storage devices with cluster manifest | |
WO2023065637A1 (zh) | 一种数据处理方法、装置、电子设备以及存储介质 | |
US9203607B2 (en) | Keyless challenge and response system | |
US20220214898A1 (en) | Systems and methods for traffic optimization via system on chip of intermediary device | |
CN114244518B (zh) | 数字签名混淆加密方法、装置、计算机设备、存储介质 | |
CN105323287B (zh) | 第三方应用程序的登录方法及系统 | |
CN115795417B (zh) | 一种ooxml文档的溯源方法、装置、电子设备及存储介质 | |
US20170054693A1 (en) | Integrity verification system using remote code execution and method thereof | |
US11502850B2 (en) | Server apparatus, client terminal, information processing system and information processing method | |
Mohamed | Steganography for better data integrity and privacy | |
US11297099B2 (en) | Redisplay computing with integrated data filtering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |