¡¾Ô­´´·ì϶¡¿Adobe ColdFusion ·´ÐòÁл¯RCE·ì϶·ÖÎö£¨CVE-2019-7091£©

°ä²¼¹¦·ò 2019-02-14

·ì϶¸ÅÊö


2019Äê2ÔÂ12ÈÕ£¬£¬ £¬£¬£¬£¬£¬Adobe¹Ù·½°ä²¼ÁËÕë¶ÔAdobe ColdFusionµÄ°²È«¸üв¹¶¡£¬£¬ £¬£¬£¬£¬£¬±àºÅΪAPSB19-10¡£¡£¡£¡£¡£¡£¡£¡£²¹¶¡ÖÐÔ̺¬8827Ì«Ñô¼¯ÍÅADLab·¢ÏÖ²¢µÚÒ»¹¦·òÌá½»¸ø¹Ù·½µÄCritical£¨Î£»ú£©·´ÐòÁл¯·ì϶£¬£¬ £¬£¬£¬£¬£¬ÀûÓø÷ì϶¹¥»÷Õß¿ÉÔ¶³ÌÖ´ÐÐËÁÒâ´úÂë¡£¡£¡£¡£¡£¡£¡£¡£·ì϶±àºÅΪCVE-2019-7091£¬£¬ £¬£¬£¬£¬£¬ÈçÏÂͼËùʾ£º


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


±¾´Î·ì϶ΪAdobe ColdFusionÖÐFlashGateway·þÎñÖеķì϶¡£¡£¡£¡£¡£¡£¡£¡£Adobe ColdFusionµÄFlashGateway·þÎñ´æÔÚ·´ÐòÁл¯·ì϶£¬£¬ £¬£¬£¬£¬£¬Î´¾­Éí·ÝÑéÖ¤µÄ¹¥»÷ÕßÏòÖ¸±êAdobe ColdFusionµÄFlashGateway·þÎñ·¢Ë;«ÐÄ»ú¹ØµÄ¶ñÒâÊý¾Ý£¬£¬ £¬£¬£¬£¬£¬¾­·´ÐòÁл¯ºó¿ÉÔ¶³ÌÖ´ÐÐËÁÒâ´úÂë¡£¡£¡£¡£¡£¡£¡£¡£

·ì϶¹¦·òÖá


2018Äê9ÔÂ21ÈÕ£º½«·ì϶ÏêÇéÌá½»¸ø¹Ù·½£»£»£»£»£»£»£»£»
2018Äê12ÔÂ5ÈÕ£ºÈ·ÈÏ·ì϶´æÔÚ²¢ÆðÍ·½¨¸´£»£»£»£»£»£»£»£»
2019Äê2ÔÂ12ÈÕ£º¹Ù·½°ä²¼Õýʽ²¹¶¡¡£¡£¡£¡£¡£¡£¡£¡£

·ì϶·ÖÎö


Adobe ColdFusionµÄFlashGateway·þÎñÔÊÐíflashÏνӵ½CFMLºÍCFCÄ£°å¡£¡£¡£¡£¡£¡£¡£¡£µ±¹¥»÷Õßͨ¹ýHTTPºÍ̸ÏòFlashGateway·þÎñPOST¾«ÐÄ»ú¹ØµÄActionMessageÐÅÏ¢ºó£¬£¬ £¬£¬£¬£¬£¬FlashGateway·þÎñ˳´Îͨ¹ý¸÷ÖÖÀàÐ͵Äfilter½øÐÐinvoke()²Ù×÷¡£¡£¡£¡£¡£¡£¡£¡£ÔÚflashgateway.filter.SerializationFilterµÄinvoke²½ÖèÖУ¬£¬ £¬£¬£¬£¬£¬Ê·ý»¯MessageDeserializerÀàÐ͵ķ´ÐòÁй¤¾ßdeserializer²¢Í¨¹ýdeserializer.readMessage(m)²½Öè¶Ô¾«ÐÄ»ú¹ØµÄActionMessageÐÂÎŽøÐз´ÐòÁл¯£¬£¬ £¬£¬£¬£¬£¬Í¬Ê±½«ActionMessageÖеÄtargetURI¡¢dataµÈÖµ¸³Öµ¸øMessageBody¡£¡£¡£¡£¡£¡£¡£¡£


ʵÏÖÐòÁл¯¹ý³Ìºó£¬£¬ £¬£¬£¬£¬£¬´ËʱActionContext contextÖеÄÄÚÈݼ´ÎªÊäÈëÁ÷Öо«ÐÄ»ú¹ØµÄActionMessageÐÅÏ¢¡£¡£¡£¡£¡£¡£¡£¡£ÔÚflashgateway.filter.AdapterFilterµÄinvoke²½ÖèÖУ¬£¬ £¬£¬£¬£¬£¬¶ÁÈ¡ActionContextÖеÄMessageBodyÐÅÏ¢¸³Öµ¸øserviceName¡¢functionName¡¢parametersµÈ£¬£¬ £¬£¬£¬£¬£¬Í¨¹ýadapter=locateAdapter(context, serviceName, functionName, parameters, serviceType)²½ÖèµÃµ½flashgateway.adapter.java.JavaBeanAdapterÀàÐ͵Äadapter£¬£¬ £¬£¬£¬£¬£¬¶øºóÖ´ÐÐJavaBeanAdapterµÄinvokeFunction²½Öè¡£¡£¡£¡£¡£¡£¡£¡£¹Ø¼ü´úÂëÈçÏ£º


public ActionContext invoke(ActionContext context) throws  Throwable {
        ...
      //¶ÁÈ¡MessageBodyÐÅÏ¢
      MessageBody  requestMessageBody = context.getRequestMessageBody();
      String serviceName  = requestMessageBody.serviceName;
      String  functionName = requestMessageBody.functionName;
      List parameters = requestMessageBody.parameters;
        ...
     if  (context.isDescribeRequest()) {
      result = adapter.describeService(context,  serviceName);
     } else {
  //adapterΪJavaBeanAdapter£¬£¬ £¬£¬£¬£¬£¬Ö´ÐÐflashgateway.adapter.java.JavaBeanAdapterµÄinvokeFunction²½Öè

    result =  adapter.invokeFunction(context, serviceName, functionName, parameters); }


ÔÚJavaBeanAdapterµÄinvokeFunction²½ÖèÖУ¬£¬ £¬£¬£¬£¬£¬¿´µ½¹Ø¼ü´úÂ룺method.invoke(service, parameters.toArray())¡£¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website


ÆäÖУ¬£¬ £¬£¬£¬£¬£¬Ö¸±êÖ´Ðв½Öèmethodͨ¹ýMethod method = this.getMethod(parameters, serviceName, functionName, aClass)µÃµ½£»£»£»£»£»£»£»£»²½ÖèÖ´ÐжÔÏóservice ͨ¹ýservice = aClass.newInstance()µÃµ½£»£»£»£»£»£»£»£»²½ÖèÖ´ÐвÎÊýparameters.toArray()ͨ¹ýMessageBodyµÃµ½¡£¡£¡£¡£¡£¡£¡£¡£


Óɴ˿ɼû£¬£¬ £¬£¬£¬£¬£¬method.invoke(service, parameters.toArray())µÄËùÓòÎÊý¶¼¿É¿Ø£¬£¬ £¬£¬£¬£¬£¬Òâζ×Å¿ÉÖ´ÐÐËÁÒâ²½Öè¡£¡£¡£¡£¡£¡£¡£¡£


Õû¸öÁ÷³ÌÈçÏÂͼËùʾ£º


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

·ì϶ÀûÓóÉЧ

8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website

Ó°Ïì°æ±¾


ColdFusion 11 Update 15¼°Ö®Ç°°æ±¾
ColdFusion 2016 Update 7¼°Ö®Ç°°æ±¾
ColdFusion 2018 Update 1¼°Ö®Ç°°æ±¾

¶ã±Ü¹æ»®


Åú¸Ägateway-config.xmlÎļþµÄÅäÖ㬣¬ £¬£¬£¬£¬£¬²»ÈÝJavaBeanAdapterµÄʹÓᣡ£¡£¡£¡£¡£¡£¡£

Éý¼¶×îв¹¶¡APSB19-10£ºhttps://helpx.adobe.com/security/products/coldfusion/apsb19-10.html¡£¡£¡£¡£¡£¡£¡£¡£


8827Ì«Ñô¼¯ÍÅ(Macau)¹É·ÝÓÐÏÞ¹«Ë¾-Official website