Cordova 웹앱을 안드로이드 Playstore 에 올렸더니 jQuery-3.3.1.min.js 에서 보안 취약점이 발견된다고 한다. 무려 "오류"라고 빨리 고치라는 것 같다.

좀 검색해보니 SNYK-JS-JQUERY-174006 이라는 것 같고, 3.4.x 버전이 되어서야 수정이 되었다고는 하는데, jQuery 버전에 따라 ui 가 달라진다는 소문도 있고 하여 소스를 직접 수정하기로 하였다.

문제가 되는 부분은

if ( target === copy ) {

로, 이 코드를

if ( name === "__proto__" || target === copy ) {

이렇게 고치면 된다고 한다....

이 코드의 원래 부분을 찾아보니 아래와 같다.

for ( name in options ) {
  src = target[ name ];
  copy = options[ name ];

  // Prevent never-ending loop
  if ( target === copy ) {
    continue;
  }

지만, 나는 min.js 를 고쳐야 하므로 해당 코드를 찾아보면 아래와 같다.

for(t in e)n=a[t],a!==(r=e[t])&&

대단하다. copy = options[ name ] 구문과 target === copy 인 경우 continue 하는 구문을 a!==(r=e[t])&& 으로 assign 문과 조건을 반대로 하여 continue 이후 구문을 실행하도록 minify 해버렸다.
감탄은 여기서 멈추고 어쨌든 고쳐야 하니 다음과 같이 하자. tname 이니까 아래와 같이 하면 된다. 물론, 조건문을 반대로 하는 것을 잊으면 안된다.

for(t in e)n=a[t],"__proto__"!==t&&a!==(r=e[t])&&

끝.

참고:
https://www.python2.net/questions-137983.htm
https://www.privacy-wise.com/mitigating-cve-2019-11358-in-old-versions-of-jquery/
https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js

profile
polyglot

0개의 댓글