Shellshock(シェルショック)
2014年9月公開のGNU bash脆弱性CVE-2014-6271。環境変数経由RCE・25年存在の歴史的バグ。
概要
Shellshock(Bashdoor、CVE-2014-6271)は、2014年9月24日に公開されたGNU bash(Bourne Again Shell)の重大なリモートコード実行脆弱性で、1989年初代bashリリース以来25年間存在し続けた歴史的バグとして情報セキュリティ史に深く刻まれている。フランス Akamai社のセキュリティ研究員Stéphane Chazelasが発見・報告、CVSS v2 10.0(最高値)の評価で、bash 1.14-4.3(つまり1989年-2014年9月までの全bashバージョン)に影響、全Linux/macOS/Solaris等のUnix系システムに影響を及ぼした。脆弱性の本質は環境変数の値として関数定義を渡された場合、関数定義の終わりで処理を停止せず後続のコマンド文字列を実行してしまうbash設計上の欠陥で、HTTP CGI(Common Gateway Interface)経由+SSHのForceCommand設定+DHCPクライアント+OpenVPN認証等多数の経由でリモートからbashを実行できる場面で攻撃可能。代表的攻撃ベクトルはHTTP CGIスクリプトのUser-Agent等のヘッダ値経由で、攻撃文字列例:() { :; }; /bin/cat /etc/passwdをUser-Agentヘッダに設定するだけで、CGIスクリプトを起動するbashが/etc/passwdを実行・出力してしまう。CVE-2014-6271初期パッチ後にもCVE-2014-7169(Tavis Ormandy/Florian Weimer発見)等の関連脆弱性が連鎖的に発覚し、9月24日-10月初旬の2週間で6回の連続パッチが必要となった対応の難しさが特筆される。Apple macOS(OS X)も影響を受け、Apple はOS X bash Update 1.0(2014年9月29日)を緊急配布。Heartbleed CVE-2014-0160(2014年4月、OpenSSL)と並ぶ2014年最重大脆弱性ペアとして記憶される。
主な特徴・仕組み
- CVE: CVE-2014-6271(Shellshock初代)
- CVSS v2: 10.0(最高値)
- 影響バージョン: GNU bash 1.14-4.3(1989年-2014年9月)
- 公開日: 2014年9月24日
- 報告者: Stéphane Chazelas(Akamai社、フランス)
- 悪用方式: 環境変数の関数定義パーサ脆弱性
- 攻撃ベクトル: HTTP CGI、SSH ForceCommand、DHCP、OpenVPN等
- 影響: 全Linux/macOS/Solarisシステム
- 連鎖CVE: CVE-2014-7169・7186・7187・6277・6278(計6回パッチ)
- macOS対応: OS X bash Update 1.0(2014年9月29日)
スペック比較表
| 脆弱性 | 公開年 | CVSS | 影響 | 重大度 |
|---|---|---|---|---|
| Shellshock | 2014/09 | 10.0 | bash 25年存在 | 史上最大級 |
| Heartbleed | 2014/04 | 7.5 | OpenSSL TLS全 | 重大 |
| Log4Shell | 2021/12 | 10.0 | Java Log4j 2全 | 史上最大級 |
| EternalBlue | 2017/03 | 8.1 | Windows SMBv1 | 重大 |
| Spectre | 2017/06 | 5.6 | 全CPU | 中規模 |
具体例・対応製品
- Stéphane Chazelas発見(Akamai、2014年9月12日内部報告)
- CVE-2014-6271公表(2014年9月24日)
- Red Hat緊急パッチbash-4.1.2-15.el6_5.2(同日リリース)
- Apple OS X bash Update 1.0(2014年9月29日)
- CVE-2014-7169 Tavis Ormandy報告(同9月24日関連)
- Apache CGI Logger攻撃ログ: 2014年9月-10月で大量検出
- 対応 systemd: 環境変数フィルタリング強化
- 代替 dash/zsh: bashの代替シェル使用提案
自作PCでの選び方・注意点
Shellshockは現代のLinux/macOSでは完全パッチ済み(2014年9月-10月の6回連続パッチ後安定)。現代のbash対策として、bash 4.4以降(2016年)使用必須、SUDO_ASKPASS環境変数フィルタ有効、CGI使用は最小限+FastCGI/PHP-FPM等の代替、ForceCommand SSHコマンド制限、DHCP optionsパースは別ロジック等の多重防御。Webサーバ運用ではApache mod_cgiは2026年現在も使用可能だが、PHP・Python・Node.js等のFCGI/WSGI/HTTP直接処理に移行推奨。Shellshock事件は「長期存続する古典バグ」+「OSSコードレビューの限界」+「無料OSS=安全という誤解」を業界に強く印象付けた重要な転換点で、その後のOpenSSL Heartbleedとの連鎖でOSS資金援助強化(Core Infrastructure Initiative、Linux Foundation主導2014年4月設立)等の業界対応につながった。
関連用語との違い
Heartbleed(2014年4月、CVE-2014-0160、CVSS 7.5)はOpenSSLメモリリーク脆弱性で「TLS/SSL通信内容流出」、Shellshockは「リモートコード実行」で攻撃の深刻度が異なる。Log4Shell(2021年12月、CVE-2021-44228、CVSS 10.0)はJava Log4j 2のJNDI経由RCEで、Shellshockと同じCVSS 10.0だがプラットフォームが異なる。EternalBlue(2017年3月、Microsoft Windows SMBv1、CVSS 8.1)はWindows特有でWannaCry/NotPetyaで使用。
よくある質問(FAQ)
Q1: なぜ25年も発見されなかった? A: bash環境変数の関数定義パーサは1989年初代bash(Brian Fox)から存在し、その後機能拡張を重ねる中で副作用が見落とされ続けました。OSSコードレビューの困難さ・限定的なリソースで重要セキュリティ機能が十分監視されなかった典型例で、Heartbleedと並ぶ「OSSの落とし穴」事例です。
Q2: なぜ6回も連続パッチが必要? A: 初期パッチCVE-2014-6271は環境変数パーサの一部分のみ修正、Tavis Ormandy(Google Project Zero)等の研究者が関連バイパスを次々発見、結果としてCVE-2014-7169・7186・7187・6277・6278の合計6回の連続パッチが必要となりました。徹底的な根本修正の難しさを示す事例です。
Q3: HeartbleedとShellshockは関連? A: 直接関連はありませんが、両方2014年の重大OSS脆弱性として、OSSセキュリティ全体への警告として認識され、Core Infrastructure Initiative(Linux Foundation 2014年4月設立、OpenSSL等への資金援助)等のOSSセキュリティ強化施策の起点となりました。
まとめ
- 2014年9月24日公開・GNU bash CVE-2014-6271
- 1989年-2014年の25年間存在した歴史的バグ
- 環境変数経由RCE・全Linux/macOS影響
- 6回連続パッチ・Heartbleedと並ぶ2014年最重大
- OSSセキュリティ業界対策の起点・OSS Funding改革契機