セキュリティで知っておきたい基礎用語集/リンク集

セキュリティを学ぶときがきたので、よく知らなかった用語を調べた。
基本的に大項目のリンク先は公式ページ。参考記事は詳細に別途リンクを貼る。
アルファベット3~4文字の概念が多い。

# 自分なりの理解
ものすごく単純化して、コンピュータを家と考える。
家の中でも、場所によって壁の厚さが違うと考えると、

- CVE/JVN : ここの壁弱いな、この場所の名前を決めよう
- CVSS/CWSS : この場所はやばい? (たとえば外から壊せる?)
- CWE : こういうときに壁が壊れる
- CCE : こうすると壁を補強できる
- CAPEC : こうすると壁を壊せる
- OVAL : いまって壁の補強はできてる?

大前提 : まだ見つかってないけど壁の薄いところはたくさんある。

# 用語集
以下から、自分なりの分類別の用語集。

## 識別子

セキュリティ周りの共通識別子として、IDとラベルを組み合わせたようなデータの塊。これらに対する評価軸は別途存在する。

### [CVE (Common Vulnerabilities and Exposures)](http://cve.mitre.org/index.html)
共通脆弱性識別子。
各脆弱性にユニークなCVE-IDが割り振られる。
CVE-IDは `CVE-西暦-連番`の形式で設定される。
脆弱性の命名と概要情報の登録のみを行い、脆弱性の詳細説明などは後述の脆弱性情報データベース(NVD)に委任する。


### [JVN (Japan Vulnurability Notes)](https://jvn.jp/)
日本で使用されているソフトウェアに対する脆弱性情報リスト。原則として、CVEと紐付けられる。
日本人が利用する前提なので、日本語で提供される。

### [CWE (Common Weakness Enumeration)](https://cwe.mitre.org/data/index.html)         
共通脆弱性タイプ一覧。脆弱性の種類を一覧化するためのプロジェクト、およびそのリスト。

CWEごとにカテゴリ(Category),抽象度(Weakness)などが設定される。たとえば、JVNではCWEは以下のようにツリーマッピングされている。

![000017658.png](https://qiita-image-store.s3.amazonaws.com/0/14275/8a722d4b-ae9a-2b3b-716e-1c519bfc8eb7.png)


### [CPE(Common Platform Enumeration)](https://nvd.nist.gov/products/cpe)
共通プラットフォーム一覧。
ハードウェア、オペレーティングシステム、アプリケーションなどのプラットフォームを一意に識別するために利用。
CPE名は`cpe：/{種別(ハード/OS/アプリケーション)}：{ベンダ名}：{製品名}：{バージョン}：{アップデート}：{エディション}：{言語}` で構成される。

### [CCE(Common Configuration Enumeration)](https://nvd.nist.gov/config/cce/index)

共通セキュリティ設定一覧。
コンピュータにおけるセキュリティ設定項目ごとに番号をつける。これによりどのセキュリティ項目が設定されているかがリスト化できる。
`CCE-番号-チェック番号`で構成される。

### [CAPEC(Common Attack Pattern Enumeration and Classification)](https://capec.mitre.org/index.html)

共通攻撃パターンタイプと分類。
攻撃方法をまとめたリスト。脆弱性に対して、どのような攻撃パターンがあるかがまとまっている。


## データベース


### [NVD (National Vulnurability Database)](https://nvd.nist.gov/)
CVEに登録された脆弱性の詳細情報を提供するデータベース。米国にある。CVSSによる採点を行っている。

### [JVN iPedia](https://jvndb.jvn.jp/)
JVNに登録された脆弱性の検索/詳細情報を提供するデータベース。CVSSによる採点を行っている。

## 検査言語など
### [OVAL(Open Vulnerability and Assessment Language)](https://oval.mitre.org/)

セキュリティを検査するための言語。XMLで記載される。
脆弱性の確認作業を自動化できる。

### [XCCDF(eXtensible Configuration Checklist Description Format)](https://csrc.nist.gov/projects/security-content-automation-protocol/specifications/xccdf/)
情報セキュリティのチェック項目を構造化して記述できる。
CCEとともにチェック項目を作成し、コードで評価する。


## 評価システム

[#識別子](#識別子)をどのような軸で評価していくかというものが以下のもの。

### [CVSS(Common Vulnerability Scoring System)](https://www.ipa.go.jp/security/vuln/CVSSv3.html)
情報システムの脆弱性に対する汎用的な評価指標。状況に応じてバージョンアップされる。現在の最新はversion3。
[オンラインでスコアの評価ができる](https://jvndb.jvn.jp/cvss/ja/v3.html)。

CVSSは以下の評価基準の組み合わせによって算出される。

- Base Metriccs (基本評価基準)
時間の経過により変化しない基準。機密性/完全性/可用性の観点から、脆弱性そのものの深刻度を評価する。

- Temporal Metrics (現状評価基準)
外部環境により変化する基準。攻撃コード(Exploit code)の有無、対策情報があるか、などにより変化する。

- Environmental Metrics(環境評価基準)
ユーザの利用環境に応じて、変更させるための項目。セキュリティ特性のどの項目を重視するか、二次被害の影響などにより変化する。

### [CWSS(Common Weakness Scoring System)](https://cwe.mitre.org/cwss/cwss_v1.0.1.html#appendixA)
共通弱点評価システム。ソフトウェアの脆弱性を計測する。
CVSSと比べると、以下のような点で違いが有るらしい。

- Webアプリケーションに関連するスコアリングが高めに設定してある
- 発見初期段階からスコアリングができる

ただし現在、オンラインでのスコア計算ツールがなく、公開されているものだと[個人が作成したexcel](https://github.com/g4xyk00/CWSS-Calculator)くらい?
CVSSの方が一般的には使われている印象。



## 最低限チェックしたい脆弱性のリスト

### [OWASP Top 10](https://www.owasp.org/images/2/23/OWASP_Top_10-2017(ja).pdf)
Webアプリケーション開発の際、重要な脆弱性をまとめたドキュメント。OWASPが作成。
近年に発生した攻撃の実例数を元に作成されている。
不定期に更新される。最新版は2017年版。

### [CWE/SANS TOP 25](http://cwe.mitre.org/top25/archive/2011/2011_mitigations.html)
最も危険で、最低限対応したほうがいいCWEのリスト。
このリストの脆弱性から対策していくと効果的というもの。
不定期に更新される。最新は2011年版。


## 社内組織について
![csirt_soc.png](https://qiita-image-store.s3.amazonaws.com/0/14275/c407cd02-79af-7861-d62a-ccf3d5cdc744.png)

[SOC（セキュリティオペレーションセンター）運用は
どんな業務で成り立っているのか ?](https://www.mcafee.com/jp/resources/white-papers/wp-soc-mission.pdf?view=legacy?CID=JID016A53901)より引用

### SOC (Security Operation Center)
セキュリティに関する監視を行う運用チーム。

### CSIRT (Computer Security Incident Response Team)
セキュリティインシデント対策チーム。事前対策から、事後対応までを行う。


## よく聞くコミュニティ
### [MITRE Corporation](https://www.mitre.org/)

非営利団体の会社。CVE,CWEなどを管理/運用している。

### [NIST (National Institute of Standards and Technology)](https://www.nist.gov/)
アメリカ国立標準技術研究所。技術の測定可能なものにすること、標準化とその推進により、米国の産業を盛り上げることを目的とした組織。
NVDの管理をしている。MITREのスポンサー。

### [OWASP(Open Web Application Security Project)](https://www.owasp.org/index.php/Main_Page)
信頼できるWebアプリケーションを開発するための環境作りを目指すコミュニティ。

## サービス
### [metasploit](https://www.metasploit.com/)
ペネトレーション(侵入)テストのフレームワーク。exploit codeをもとに実行される。
※ Exploit Code : コンピュータに対しての攻撃が成功する(再現性のある)コードのこと。

### [Vuls](https://github.com/future-architect/vuls)
@kotakanbe@github  さんが作成した脆弱性スキャナ。
NVD, JVNなどを総合した情報を元に脆弱性を確認できる。
Remoteのスキャンにも対応。

### [Retire.js](http://retirejs.github.io/retire.js/)
JSのパッケージに含まれるセキュリティをチェックする。
[脆弱性のあるJavaScriptライブラリを検出するRetire.jsを紹介 - Qiita](https://qiita.com/shisama/items/475d1e6d8d79afa8c5f8)

# まとめ

[IPA](https://www.ipa.go.jp/)のサイトがとても参考になった、[PM試験を受けたとき](https://qiita.com/tomoyamachi/items/5d49e53a4a1e39c0f625)くらいしか接点がなかったけど、セキュリティを中心にめちゃくちゃ活動してた。
無料で公開されている資料が多いので、時間かけて読んでいく。

この記事に対しても、新しく知ったことがあれば追記していく。
ここから先は、セキュリティを高めるための方法と、それを支援するサービスをまとめたい。