서버 보안 섹션 1: 종속성 없음

'서버 없음'이라는 말은 서버가 없다는 것을 의미하며, 열정적인 사람들이'더 많은 패치가 없고, 더 많은 빈틈 관리가 없다'는 생각을 하도록 격려할 수 있다.비록 이것은 일리가 있지만 서버가 없는 것을 사용하는 것은 그 자체의 안전 문제가 있기 때문에 본고에서 우리는 의존적인 측면에서 서버가 없는 안전성을 연구할 것이다.

서버 없음에 대한 빠른 개요


Serverless는 "서버 없는 컴퓨팅"이라는 용어의 약자이자 프로그래밍 프레임워크입니다.서버 없는 계산은 클라우드에서 코드를 실행하고 서버를 관리하지 않는다는 개념이다.'서비스로서의 기능'(FaaS)은 서버가 없는 계산의 또 다른 용어를 가리킨다.그것은'플랫폼 즉 서비스'(Paas),'인프라 시설 즉 서비스'(Iaas)와'소프트웨어 즉 서비스'(Saas)와 다른 클라우드 용어와 일치한다.FaaS는 클라우드 컴퓨팅에서 SaaS보다 낮은 다음 계층입니다.일부 서버 없는 프레임워크는 특정한 클라우드 공급자에게 서버 없는 계산을 이용하는 구조화된 방식을 제공한다.서버 없음, Chalice, Amplify, Amazon 웹 서비스 없음 서버 응용 프로그램 모델(SAM) 등;Gleekfare의 "15 Frameworks for Creating Serverless Apps"를 참고하십시오.본고는 예시에서 Serverless 프레임워크와 Node.js를 사용할 것이다.

관리에 의존하다


의존 항목은 소프트웨어를 정확하게 실행하는 데 필요한 소프트웨어 그룹입니다.다른 소프트웨어를 이용하면 개발 과정을 가속화할 수 있지만 본질적으로 안전 문제를 가져올 수 있다.다른 패키지를 가져오면 다른 패키지를 가져올 수 있습니다.의존항에는 의존항이 있을 수 있다.
노드 패키지 관리자(NPM)는 종속성 관리에 사용됩니다.코드에 패키지를 추가하려면 어떤 패키지가 필요한지 확인하고 적절한 변경을 해야 합니다.소프트웨어 패키지 관리의 이러한 간단성은 많은 소프트웨어 패키지를 설치하는 것을 매우 쉽게 할 뿐만 아니라, 공격받기 쉬운 소프트웨어를 코드 라이브러리에 도입할 가능성도 증가시킬 수 있다.
필요한 소프트웨어 패키지에서 사용하는 의존항을 고려해야 한다.예를 들어, 소프트웨어에서 HTTP 요청을 실행해야 합니다.너는 내장된 코드를 사용할 수 있다.
const options = {
    hostname: 'www.google.com',
    port: 80,
    path: '/upload',
    method: 'POST',
    headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
        'Content-Length': Buffer.byteLength(postData)
    }
};
const req = http.request(options, (res) => {
    res.setEncoding('utf8');
    res.on('data', (chunk) => {
        console.log(`data: ${chunk}`);  // Print the HTML for the Google homepage.
    });
    res.on('end', () => {
        console.log('No more data in response.');
    });
});
예시 코드는 http에서 왔다.
https://nodejs.org/api/http.html#http_http_request_url_options_callback 라이브러리를 선택할 수 있습니다. http 라이브러리보다 사용하기 쉽습니다.
const request = require('request');
request('http://www.google.com', function (error, response, body) {
    console.log('error:', error); // Print the error if one occurred
    console.log('statusCode:', response.statusCode); // Print the response status code if a response was received
    console.log('body:', body); // Print the HTML for the Google homepage.
});
예시 코드는 request에서 왔다.
요청 라이브러리를 사용할 때 사용하는 코드 줄이 훨씬 적습니다.그런데 이게 제일 좋은 방법인가요?이 창고는 20개의 다른 가방이 있어야만 효과적으로 일할 수 있다.의존 관계 트리를 관찰할 때, 그것은 모두 49개의 의존 관계를 가지고 있다.지난번 업데이트는 8개월 전, 본문을 썼을 때였다.
https://www.npmjs.com/package/request
[Anvaka]를 사용하여 생성된 이미지(http://npm.anvaka.com/#/view/2d/request).
라이브러리는 http 라이브러리의 또 다른 대체품일 수 있습니다.
(async () => {
    try {
        const response = await got('sindresorhus.com');
        console.log(response.body);
        //=> '<!doctype html> ...'
    } catch (error) {
        console.log(error.response.body);
        //=> 'Internal server error ...'
    }
})();
예시 코드는 got에서 왔다.
이 라이브러리를 사용하는 것은 요청 라이브러리보다 더 복잡하지만, 11개의 의존항 (총 24개) 이 있으며, 지난번 업데이트는 3개월 전이었다.
https://www.npmjs.com/package/got
[Anvaka]를 사용하여 생성된 이미지(http://npm.anvaka.com/#/view/2d/got).

취약점 관리


이상적인 상황에서, 당신은 모든 의존항을 보고 전체 소프트웨어에 포함된 내용을 이해하기를 희망합니다.실제로 가져오는 가방의 수량에 따라 효율이 떨어질 수 있습니다.대신 Node와 함께 제공되는 Node Package Manager(NPM)를 사용할 수 있습니다.모든 패키지를 검토합니다.
npm install request got
npm audit

                       === npm audit security report ===

found 0 vulnerabilities
 in 100 scanned packages
이 CLI 예제에서는 Node 및 NPM이 설치된 것으로 가정합니다.
가방에 대한 정기적인 심사를 고려하거나 지속적인 집적 파이프라인에 심사를 통합하는 공급업체를 사용하고 싶을 수도 있습니다.

서버 프레임워크 의존 관계 없음


이 문서는 주로 Node의 서버 없는 프레임워크를 사용하는 것을 논의한다.나는 패키지를 전역 패키지로 설치했다.이것은 명령행 기능으로 접근할 수 있다는 것을 의미하며, 나는 그것을 나의 소프트웨어 패키지에 포함시킬 필요가 없다.서버 없는 패키지에는 40개의 종속성이 있으며 총 355개의 패키지가 필요합니다.내 컴퓨터에는 현재 355개의 입구점이 있는데, 만약 의존하는 소프트웨어 패키지에 빈틈이 있다면.서버 없는 패키지를 정기적으로 업데이트하고 싶습니다.현재 명령줄 인터페이스에서 다음 명령을 보내면 리퀘스트나 get을 사용하는 서버 함수가 없는 장점을 배치할 수 있습니다: serverless deploy.
serverless
[Anvaka]를 사용하여 생성된 이미지(http://npm.anvaka.com/#/view/2d/serverless).

결론


서버 없는 프로그램을 작성할 때 가져온 패키지, 의존 관계 트리, 알려진 빈틈을 보는 것이 좋습니다.

네가 가기 전에


작자의 필기


내 메일 리스트에 가입하여 내가 쓴 글에 대한 업데이트를 받습니다.
액세스 및 등록
안전 유지, 미겔

Miguelacallemba。com/ 구독 작성자 정보


미겔은 수석 안전 엔지니어로 라는 책을 저술했다.개발자이자 보안 엔지니어인 그는 여러 개의 서버 없는 프로젝트에 참여했고 소스 오픈 서버 프로젝트에 참여했으며 각종 공사 역할에서 대형 군사 시스템에 참여했다.
최초 발표Serverless Security
사진 작성자Secjuice.com

좋은 웹페이지 즐겨찾기