목차로 이동페이지 탐색으로 이동: 이전 페이지 [액세스 키 p]/다음 페이지 [액세스 키 n]
documentation.suse.com / SUSE 기반 제품의 Meltdown, Spectre 및 L1TF 취약점이 시스템 성능 측면에서 갖는 의미
SUSE Linux Enterprise, SUSE OpenStack Cloud, SUSE Enterprise Storage, 기타 SUSE 기반 제품

SUSE 기반 제품의 Meltdown, Spectre 및 L1TF 취약점이 시스템 성능 측면에서 갖는 의미

Authors
Sheilagh Morlan, SUSE 소프트웨어 엔지니어링 관리자
Bryan Stephenson, SUSE OpenStack Cloud 보안 엔지니어
T.R. Bosworth, SUSE OpenStack Cloud 수석 제품 관리자
Jiri Kosina, SUSE Labs Core 담당 이사
Vojtech Pavlik, SUSE Labs 부사장
Olaf Kirch, SUSE Linux Enterprise 부사장
날짜: 2019-01-17
본 문서에서는 SUSE Linux Enterprise 기반 제품의 Meltdown, Spectre 및 L1TF(L1 Terminal Fault: L1 터미널 결함)에 대비해 공개된 완화 조치에 관한 정보를 제공합니다. 본 문서의 목적은 고객이 배포에 대한 최선의 성능 테스트 방법이 무엇인지 평가하는 데 도움을 드리는 것입니다.

1 배경 설명

1990년대에 Intel은 칩셋 성능을 향상하기 위해 x386 칩에 새로운 아키텍처를 도입하였습니다. 이 아키텍처에서는 예측 계산을 통해 프로세스 처리 속도를 높일 수 있었습니다. 간단히 설명하자면 이 설계에는 프로세스가 특정 계산과 직접적인 관련이 없는 버퍼와 캐시를 읽을 수 있는 기능이 포함되어 있었습니다. 1995년 NSA의 자금 지원을 받아 진행된 연구를 통해 Meltdown, Spectre 및 L1TF의 핵심부에 채널 및 변환 색인 버퍼(TLB) 취약점이 숨어 있음을 알게 되었습니다. 하지만 당시에는 익스플로잇 공격이 쉽지 않았으므로 업계는 보안보다는 성능에 더 관심이 많았습니다. 20년 후 클라우드 컴퓨팅, 컨테이너, 다중 테넌시가 등장하고 성능이 비약적으로 향상됨에 따라 이러한 취약점에 대한 익스플로잇 공격이 가능한 환경이 조성되었습니다.

성능과 보안은 항상 균형이 유지되고 있습니다. 보안 강화는 곧 격리된 계산, 메시지 및 로드 암호화, 보안 스레딩, 보안 데이터베이스 변환을 뜻하며, 이 모든 것은 성능 저하의 원인이 됩니다. 속도가 곧 시장 점유율일 정도로 경쟁이 치열한 업계에서 보안은 후순위로 밀려나고 있습니다. 보안 문제를 파악하여 완화 조치를 취하면 성능이 타격을 입습니다.

2018년 1월 이후 칩셋 제조업체들은 각 취약점에 대비해 칩의 마이크로코드를 업데이트하였습니다. 이 마이크로코드 업데이트로 칩의 보안이 강화되는 만큼 성능은 저하됩니다.

참고
참고: 칩셋 취약점

Meltdown, Spectre 및 L1TF 취약점은 칩셋 하드웨어의 문제입니다. 이 문제를 완전히 해결하려면 칩셋 제조업체가 새로운 아키텍처를 개발하여 출시 가능한 엔터프라이즈 및 소비자 하드웨어로 구현되는 새로운 칩셋을 만드는 수밖에 없습니다.

운영 체제 및 소프트웨어 공급자의 당면 과제는 영향을 받는 칩셋(전체)을 포함하는 시스템에 패치된 취약점이 있어 시스템에서 실행되는 소프트웨어를 통해 이러한 패치된 취약점을 수용해야 한다는 것입니다. 이는 특히 운영 체제에 해당되며 그 정도는 덜하지만 이러한 운영 체제에서 실행되는 응용 프로그램에도 해당됩니다.

2018년 1월 Meltdown 및 Spectre 취약점이 공개된 이후 고객은 이러한 하드웨어 취약점을 완화하는 패치가 성능에 미치는 영향에 대한 지침을 요청해 왔습니다. 초미의 관심사는 다음과 같습니다.

  • 이러한 패치가 성능에 영향을 주는가?

  • 준다면 어느 정도인가?

워크로드에 따라 달라진다는 답변은 매우 불만족스러운 것입니다. 어떤 유형의 워크로드는 거의 영향을 받지 않는 반면, 어떤 유형은 크게 영향을 받습니다.

워크로드가 영향을 받는지 여부를 결정하는 주된 요인은 다음과 같습니다.

  • 워크로드 자체:

    • 더 많은 시스템 호출을 실행하는 워크로드는 더 큰 영향을 받음

      • 대량의 데이터베이스 작업

      • 파일 관리

      • 상태 정보 전송

      • 원격 장치 연결/분리

      • 메시지 전송/수신

      • 수치 계산을 수행하는 워크로드는 영향을 덜 받음

  • CPU 제조업체 및 제품군:

    • 모든 최신 CPU가 영향을 받았으나 그 정도는 동일하지 않음

    • 일부 CPU는 특정 유형의 트랜잭션/프로세스에 최적화되어 있음

  • 사용 중인 운영 체제:

    • 다양한 CPU가 다양한 패치에 대해 서로 다르게 반응

      • 운영 체제 빌드 조정은 지속적인 프로세스임

자체 테스트 결과, 성능 벤치마크에서 약간의 퇴행이 있었고 일부 결과에서는 15퍼센트 이상 퇴행하는 것으로 나타났습니다. 벤치마크별로 운영 체제의 서로 다른 영역을 실행하므로 성능 퇴행이 다양하게 나타난 것은 놀랄 일이 아닙니다. 정작 놀라운 것은 대부분의 벤치마크에서 CPU 제조업체 및 모델에 따라 상대적인 영향 정도가 때로 2배 이상 큰 편차를 보였다는 것입니다. 이는 한 플랫폼에서는 5퍼센트의 영향을 나타내는 벤치마크가 다른 플랫폼에서는 10퍼센트 이상의 영향을 나타낸다는 의미입니다.

따라서 Spectre, Meltdown 및 L1TF 취약점에 대한 보안 수정의 결과로 워크로드 X가 N퍼센트의 성능 퇴행을 겪게 될 것이라고 안내하는 표를 제공한다면 이는 고객을 오도하는 일이 될 것입니다. 마이크로코드 변경이 취약점 완화에 큰 역할을 하는 경우, 사용자가 경험하는 성능 영향은 사용자가 보유한 하드웨어의 종류에 매우 크게 좌우됩니다. 또한 모든 제조업체가 최종적인 마이크로 업데이트를 제공할 때까지는 모든 성능 측정을 예비적인 것으로 간주해야 합니다.

확정적인 평가를 하려면 워크로드를 벤치마킹하여 워크로드가 얼마나 영향을 받는지 알아내야 합니다. 다음 섹션에서는 다양한 클래스의 응용 프로그램이 어떻게 저마다 다른 정도로 영향을 받는지 이해하실 수 있도록 성능 저하를 초래하는 원인이 무엇인지 더 자세히 설명하겠습니다. 또한 손실된 성능 중 일부를 복구하기 위해 SUSE가 하고 있는 작업도 설명하겠습니다.

2 Meltdown

무엇보다 이 취약점은 커널 메모리 위치를 읽으려는 잘못된 사용자 공간 프로세스에 의해 악용될 수 있습니다. 이 취약점은 Intel CPU, 일부 ARM 정식 사용자, IBM POWER 프로세서에 일정 정도 영향을 미칩니다. 이를 완화하는 유일한 방법은 운영 체제를 변경하여 CPU가 커널에서 사용자 공간으로 전환할 때(예: 시스템 호출에서 복귀할 때)마다 자체 커널 주소 매핑을 잊어버리도록 지원하는 것입니다.

x86-64 아키텍처의 자체 커널 주소 매핑을 잊어버리도록 지원하기 위한 패치 세트를 PTI(Page Table Isolation: 페이지 테이블 격리)라고 합니다. PTI는 시스템 호출 입력 및 종료 코드와 다른 장소 몇 곳에 (다량의) 코드를 추가하여 커널 페이지 테이블을 사용자 공간 액세스에서 완전히 격리합니다. 이 과정에는 커널 메모리에 관한 모든 주소 매핑 정보를 CPU에서 제거하고 주소 변환 캐시에서 플러시(TLB 플러시라고 함)를 수행하는 작업이 수반됩니다. 따라서 각 시스템 호출, 인터럽트 등에 고정적인 비용이 조금 더 들게 됩니다. 작업 자체 비용이 엄청나게 많이 들지는 않지만, 빠르지도 않습니다. 워크로드 자체로 인해 PTI가 없는 모든 TLB 적중의 지연 시간이 늘어날 수 있습니다. 따라서 이것은 워크로드별 성능의 또 다른 예입니다.

SUSE의 패치 세트는 프로세스 컨텍스트 ID라고 하는 비교적 최근에 개발된 CPU 기능에 의존하는 Intel CPU에 어느 정도 최적화되어 있습니다. 이 ID를 사용해 페이지 테이블 격리 속도를 약간 높일 수 있습니다. 시스템 호출에서 복귀할 때는 커널 메모리에 관한 모든 매핑 정보를 제거해야 하지만 이 작업의 또 다른 부분인 TLB 플러시는 생략할 수 있습니다. SUSE가 실행한 몇 가지 벤치마크 중에서 PCID 기능을 사용하면 성능 영향이 최대 절반까지 줄어듭니다. 이 PTI 최적화는 CPU가 지원할 경우 기본적으로 활성화됩니다.

AMD CPU는 부팅 프로세스 동안 자동으로 탐지되어 비활성화되므로 이 완화 조치가 필요하지 않습니다. 자세한 내용은 https://www.suse.com/support/kb/doc/?id=7022512에서 기술 정보 문서를 참조하십시오.

3 Spectre

Spectre는 단일한 취약점이라기보다는 여러 취약점이 하나로 합쳐진 것입니다. 이러한 공격군에는 여러 가지 변종이 있습니다. 전체 목록은 https://www.suse.com/c/overview-of-meltdown-spectre/의 SUSE 블로그 게시물에서 확인하실 수 있습니다. 어떤 형태의 경우, Spectre는 SUSE Linux Enterprise 제품이 지원되는 모든 현행 CPU에 영향을 미칩니다.

Spectre 1 익스플로잇 공격은 CPU(또는 하이퍼바이저)로 하여금 공격자가 제어할 수 있는 포인터를 통해 메모리에 예측적으로 액세스하게 하는 능력에 의존합니다. 커널 및 하이퍼바이저 수준에서 취해지는 완화 조치는 대부분 익스플로잇 공격 방식으로 사용자 제어 포인터에 액세스하는 코드를 찾고, 분기 예측 로직을 플러시(비용이 많이 드는 작업임)하는 예측 장벽으로 이러한 포인터를 보호하는 과정이 수반됩니다. 기본적인 예로 확장된 BPF(Berkeley Packet Filtering) 설비를 들 수 있는데, 이 설비는 최초 업데이트에서 상당한 성능 타격을 입었습니다.

SUSE 커널 개발자는 가능한 경우 영향을 완화하기 위해 이러한 변경 중 일부를 개선하는 작업을 하고 있습니다. 예를 들어 SUSE는 현재 준비 중인 다음 커널 업데이트에서는 (하드웨어) 장벽을 소프트웨어 기반 완화 조치로 교체함으로써 eBPF 성능이 거의 이전 수준으로 회복될 것으로 기대하고 있습니다. SUSE는 SkyLake를 제외한 모든 CPU에서 기본값을 렛폴린(retpoline) 완화로 설정합니다.

Spectre 2 익스플로잇 공격은 적극적으로 CPU 내 분기 대상 예측을 혼동하게 만드는 능력에 의존합니다. 이것은 기본적으로 간접 호출이 결국 어디로 도약할지 예측하는 데 사용되는 캐시입니다. 공격자는 이 캐시를 포이즈닝하여 CPU가 공격자가 제어하는 주소에서 공격자가 제어하는 인수와 함께 코드를 추측 실행하게 할 수 있습니다. 이 취약점은 조합의 수가 거의 무한하므로 Spectre 1에 대해 한 것과 마찬가지로 악용할 수 있는 코드 부분을 찾아내는 방법으로 해결할 수 있습니다.

현재 SUSE의 업데이트 커널에 있는 완화 조치는 다음 세 가지 새로운 CPU 기능(최근 마이크로코드 업데이트와 렛폴린 소프트웨어 기반 완화 조치에 따라 도입됨)에 기반을 두고 있습니다.

  • IBRS(Indirect Branch Restricted Speculation: 간접 분기 제한 예측):

    • 권한 수준 간 캐시 플러시(사용자와 커널 간)

    • 이웃 CPU 스레드의 분기 예측 비활성화

    • 커널 입력 시 활성화, 커널 종료 시 비활성화

    • 부팅 시 또는 런타임에 활성화할 수 있음

  • STIBP(Single Thread Indirect Branch Predictors: 단일 스레드 간접 분기 예측자)

    • 이웃 CPU 스레드의 분기 예측 비활성화

    • 하이퍼 스레딩에 악영향을 미칠 수 있음

    • 2018년 11월 릴리스에서는 이를 한정적으로 실행할 수 있게 허용함

      • 프로세스에서 요청하는 경우에만 실행

      • SECCOMP 스레드

  • IBPB(Indirect Branch Prediction Barrier: 간접 분기 예측 장벽):

    • 동일한 권한 수준에서 실행되는 코드의 캐시를 플러시

  • “리턴 트램폴린(Return Trampoline)”(렛폴린: Retpoline):

    • IBRS의 잠재적 대안

    • 간접 호출에 대해 다양한 시스템 코드 시퀀스 발신

    • 모든 간접 코드를 교체해도 성능이 저하됨

    • IBRS보다는 성능 저하가 덜할 것으로 기대됨

    • 마이크로코드 업데이트는 여전히 IBPB 완화 조치를 이용해야 함

4 L1 터미널 결함

L1 터미널 결함(L1TF)에 대한 익스플로잇 공격은 보호 장벽을 우회함으로써, 이 방법이 아니면 공격자가 액세스하지 못하는 권한 있는 메모리를 읽습니다. 여기에는 다중 테넌트 환경의 물리적 시스템 및 가상 머신에 저장된 데이터가 포함됩니다. 이 익스플로잇 공격은 L1 캐시 내 메모리를 읽을 수 있는 최신 CPU의 기능을 악용합니다. 노출될 수 있는 데이터가 상주하는 곳은 다음과 같습니다.

  • Intel의 SGX(Software Guard Extensions) 보안 인클레이브

  • SMM(System Management Mode) 메모리 또는 운영 체제의 커널

  • 하이퍼바이저/VMM(Virtual Machine Monitor)의 데이터

  • 동일한 하드웨어에서 실행 중인 다른 가상 머신의 데이터

취약한 프로세서는 다음과 같습니다.

  • SGX 지원 Intel Core 및 Xeon 프로세서(Skylake 및 Kaby Lake)

SGX, AMD 및 ARM 칩이 포함된 Intel Atom 제품군은 영향을 받지 않는 것으로 보입니다.

또한 Intel은 하이퍼바이저가 VM에서 악성 가능성이 있는 코드를 실행하기 전에 L1 데이터 캐시 플러시에 사용할 수 있는 flush_l1d 기능을 제공합니다.

SUSE는 베어메탈과 가상 머신 둘 다에서 사용할 수 있는 l1tf 커널 부팅 파라미터의 형태로 추가 L1TF 완화 조치를 릴리스하였습니다. 권장되는 완화 조치는 새로운 CPU 기능에 대한 지원을 포함하며 환경에 따라 다릅니다. L1TF 완화 조치는 l1tf 커널 부팅 파라미터를 통해 제어됩니다.

SUSE는 사용 가능한 완화 조치의 상태를 표시하는 새로운 sysfs 변수가 포함된 Linux 커널 업데이트를 릴리스하였습니다. 이러한 상태는 비 VMX 시스템, KVM/VMX를 사용하는 시스템, CPU 마이크로코드 보호 수준에 제공됩니다.

업데이트에 관한 추가 정보는 https://www.suse.com/c/suse-addresses-the-l1-terminal-fault-issue/의 SUSE 블로그 게시물에서 확인하실 수 있습니다.

5 리소스

자세한 내용은 다음 문서를 참조하십시오.

7 GNU Free Documentation License

Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or non-commercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.

A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.

The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.

A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.

The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.

The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.

You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

You may also lend copies, under the same conditions stated above, and you may publicly display copies.

If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

  1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.

  2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.

  3. State on the Title page the name of the publisher of the Modified Version, as the publisher.

  4. Preserve all the copyright notices of the Document.

  5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.

  6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.

  7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.

  8. Include an unaltered copy of this License.

  9. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.

  10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.

  11. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.

  12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.

  13. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.

  14. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.

  15. Preserve any Warranty Disclaimers.

If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.

The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".

You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.

If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.

Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.

If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.

You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

Copyright (c) YEAR YOUR NAME.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU
 Free Documentation License".

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts". line with this:

with the Invariant Sections being LIST THEIR TITLES, with the
Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.

If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.