Veracode Scan - Ошибка инкапсуляции (десериализация ненадежных данных) в приложении Java Springboot - PullRequest
0 голосов
/ 10 октября 2019

Сканирование Veracode сообщает об одном среднем риске в коде приложения Springboot. Это недостаток инкапсуляции, связанный с десериализацией ненадежных данных (CWE ID 502). Я надеюсь, что эксперты здесь могут помочь.

searchReqStr - это строка JSON из запроса. Vecacode жалуется на строку objectMapper.readValue.

 try {
  eventSearchFields = 
              objectMapper.readValue(searchReqStr,EventSearchFields.class);
          } catch (IOException e) {
                 ....
          }

Поля класса EventSearchFields являются частными

 public class EventSearchFields implements Serializable{

   private static final long serialVersionUID = 2373607xxxxx;       
   @JsonProperty("searchCriteria")
   private List<EventSearchCriteria> searchCriteria = new ArrayList<>();

   public List<EventSearchCriteria> getSearchCriteria() {
          return searchCriteria;
   }
   public void setSearchCriteria(List<EventSearchCriteria> searchCriteria) 
   {
          this.searchCriteria = searchCriteria;
   }   
 }

public class EventSearchCriteria implements Serializable{

  private static final long serialVersionUID = -624493860290016xxxxx;

  @JsonProperty("searchFieldName")
  private String searchFieldName;

  @JsonProperty("searchFieldValue")
  private transient List<?> searchFieldValue = new ArrayList<>();

  public String getSearchFieldName() {
  return searchFieldName;
  }
  public void setSearchFieldName(String searchFieldName) {
  this.searchFieldName = searchFieldName;
  }
  public List<?> getSearchFieldValue() {
 return new ArrayList<>(searchFieldValue);      
  }
  public void setSearchFieldValue(List<?> searchFieldValue) {
this.searchFieldValue = searchFieldValue;

}

MyЯ предполагаю, что у меня есть подстановочный знак «?» для searchFieldValue в EventSearchCriteria, потому что это может быть List, если String, или List of Map, см. пример запроса ниже. Он работает отлично, не вызывает ли это проблему сканирования Veracode?

Запрос на поиск json string

{
   "searchCriteria": [    

    {
     "searchFieldName":"keys",  
     "searchFieldValue":[    

           {   "searchFieldName":"bNumber", 
               "searchFieldValue":["11"]   
           }, 
           {
               "searchFieldName":"pNumber",
               "searchFieldValue":["22"]
            }, 
           {
               "searchFieldName":"id",
               "searchFieldValue":["BBB"]

           }             
      ]
               },
               {
     "searchFieldName":"unit",  
     "searchFieldValue":["aa","bb"] 
   }   
  ]
}

Я пытался изменить "?"«возразить», но не повезло. Добро пожаловать предложения, чтобы помочь мне пройти сканирование Veracode.

...