Kindle Unlimitedで良さげな技術書
読んでないもの多いけど漁ってみた。独断と偏見で。
(2016/08/12 追記) 今確認するとほとんどUnlimitedではなくなっている(´・ω・`)
絵本シリーズ
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/20
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/20
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/20
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/15
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/06
- メディア: Kindle版
- この商品を含むブログを見る
Androidの絵本 スマートフォンアプリ開発を始める9つの扉
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/04/21
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/06
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/24
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/10
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2013/05/20
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/24
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/24
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/09/11
- メディア: Kindle版
- この商品を含むブログを見る
JavaScriptの絵本 ホームページ作りが楽しくなる9つの扉
- 作者: 株式会社アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2014/10/01
- メディア: Kindle版
- この商品を含むブログを見る
教科書シリーズ
よくわかるDreamweaverの教科書【CS6対応版】 教科書シリーズ
- 作者: 鷹野雅弘,松田直樹
- 出版社/メーカー: マイナビ出版
- 発売日: 2012/08/31
- メディア: Kindle版
- この商品を含むブログを見る
よくわかるHTML5+CSS3の教科書【第2版】 教科書シリーズ
- 作者: 大藤幹
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/05/27
- メディア: Kindle版
- この商品を含むブログを見る
よくわかるPHPの教科書 【PHP5.5対応版】 教科書シリーズ
- 作者: たにぐちまこと
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/03/08
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: たにぐちまこと
- 出版社/メーカー: マイナビ出版
- 発売日: 2012/03/24
- メディア: Kindle版
- この商品を含むブログを見る
プログラミングコンテスト関係
プログラミングコンテストチャレンジブック [第2版] ?問題解決のアルゴリズム活用力とコーディングテクニックを鍛える?
- 作者: 秋葉拓哉,岩田陽一,北川宜稔
- 出版社/メーカー: マイナビ出版
- 発売日: 2012/01/28
- メディア: Kindle版
- この商品を含むブログを見る
世界で闘うプログラミング力を鍛える150問 トップIT企業のプログラマになるための本
- 作者: Gayle Laakmann McDowell
- 出版社/メーカー: マイナビ出版
- 発売日: 2012/11/13
- メディア: Kindle版
- この商品を含むブログ (3件) を見る
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
- 作者: 渡部有隆
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/01/30
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 渡部有隆
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/06/28
- メディア: Kindle版
- この商品を含むブログを見る
プログラミング入門
- 作者: 村山公保
- 出版社/メーカー: マイナビ出版
- 発売日: 2006/05/30
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 岩永信之
- 出版社/メーカー: マイナビ出版
- 発売日: 2011/06/29
- メディア: Kindle版
- この商品を含むブログを見る
Java
創るJava NetBeansでつくって学ぶJava GUI & Webアプリケーション [改訂第3版]
- 作者: きしだなおき
- 出版社/メーカー: マイナビ出版
- 発売日: 2009/09/12
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Go言語
- 作者: 松尾愛賀
- 出版社/メーカー: 翔泳社
- 発売日: 2016/05/11
- メディア: Kindle版
- この商品を含むブログを見る
Python
- 作者: 大津真
- 出版社/メーカー: インプレス
- 発売日: 2016/03/18
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Rails
- 作者: 黒田努
- 出版社/メーカー: インプレス
- 発売日: 2014/08/20
- メディア: Kindle版
- この商品を含むブログを見る
OpenCV
- 作者: 藤本雄一郎,青砥隆仁,浦西友樹,大倉史生,小枝正直,中島悠太,山本豪志朗
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/09/29
- メディア: Kindle版
- この商品を含むブログを見る
GPUプログラミング
CUDA C プロフェッショナル プログラミング impress top gear
- 作者: John Cheng,Max Grossman,Ty McKercher
- 出版社/メーカー: インプレス
- 発売日: 2015/09/24
- メディア: Kindle版
- この商品を含むブログを見る
サーバサイドJS
- 作者: 掌田津耶乃
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/03/25
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
フロントエンド
HTML5 スタンダード・デザインガイド?Webサイト制作者のためのビジュアル・リファレンス&セマンティクスによるコンテンツデザインガイド? [リフロー版]
- 作者: エ・ビスコム・テック・ラボ
- 出版社/メーカー: マイナビ出版
- 発売日: 2013/02/14
- メディア: Kindle版
- この商品を含むブログを見る
WebクリエイターのためのCreateJSスタイルブック:JavaScript+HTML5で作るアニメーション/インタラクティブコンテンツ[リフロー版] .
- 作者: 野中文雄
- 出版社/メーカー: マイナビ出版
- 発売日: 2013/06/25
- メディア: Kindle版
- この商品を含むブログを見る
ゲームを作りながら楽しく学べるHTML5+CSS+JavaScriptプログラミング (NextPublishing)
- 作者: 田中賢一郎
- 出版社/メーカー: インプレスR&D
- 発売日: 2013/10/11
- メディア: Kindle版
- この商品を含むブログを見る
HTML5+WebGLでつくる3Dウェブサイト [iOS8/Android対応] Vixar Cartoonによるアニメーションサイト制作術 Mynavi Advanced Library
- 作者: 大西武
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/05/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 斉藤祐也,水野隼登,谷拓樹,菅原のびすけ,林優一,古沢宏太
- 出版社/メーカー: マイナビ出版
- 発売日: 2016/01/28
- メディア: Kindle版
- この商品を含むブログを見る
HTML&CSS 標準デザイン講座【HTML5&CSS3対応】
- 作者: 草野あけみ
- 出版社/メーカー: 翔泳社
- 発売日: 2013/10/30
- メディア: Kindle版
- この商品を含むブログを見る
今、見直すCSS ネット時代の、これから始めるプログラミング (ネット時代の、これから始めるプログラミング(NextPublishing))
- 作者: 林拓也
- 出版社/メーカー: インプレスR&D
- 発売日: 2014/08/06
- メディア: Kindle版
- この商品を含むブログを見る
ゲームで学ぶJavaScript入門 HTML5&CSSも身につく!
- 作者: 田中賢一郎
- 出版社/メーカー: インプレス
- 発売日: 2015/12/11
- メディア: Kindle版
- この商品を含むブログを見る
Android開発
Android StudioではじめるAndroidアプリ開発の教科書 (教科書シリーズ)
- 作者: 松岡謙治
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/07/29
- メディア: Kindle版
- この商品を含むブログを見る
Android実践プログラミング 現場で生まれた設計パターン
- 作者: TechBooster
- 出版社/メーカー: 翔泳社
- 発売日: 2016/03/17
- メディア: Kindle版
- この商品を含むブログを見る
ゲーム開発
- 作者: 加藤潔
- 出版社/メーカー: 翔泳社
- 発売日: 2013/12/06
- メディア: Kindle版
- この商品を含むブログを見る
Kinectv2楽しいプログラミング入門 (NextPublishing)
- 作者: 大田昌幸,江田周平
- 出版社/メーカー: インプレスR&D
- 発売日: 2015/09/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 岩井雅幸
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/09/01
- メディア: Kindle版
- この商品を含むブログを見る
JavaScriptでインタラクティブ3Dコンテンツを作ろう―Kinect+jThree+Milkcocoaを使って東北ずん子と踊る (NextPublishing)
- 作者: 大田昌幸,落合渉悟,菅原のびすけ,中佳博,山本允葵
- 出版社/メーカー: インプレスR&D
- 発売日: 2015/09/11
- メディア: Kindle版
- この商品を含むブログを見る
Game Programming Patterns ソフトウェア開発の問題解決メニュー impress top gear
- 作者: Robert Nystrom
- 出版社/メーカー: インプレス
- 発売日: 2015/09/24
- メディア: Kindle版
- この商品を含むブログを見る
Raspberry Pi
- 作者: 林和孝
- 出版社/メーカー: ラトルズ
- 発売日: 2013/08/01
- メディア: Kindle版
- この商品を含むブログを見る
Esoteric Language
Rubyで作る奇妙なプログラミング言語 ?ヘンな言語のつくりかた?
- 作者: 原悠
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/01/16
- メディア: Kindle版
- この商品を含むブログを見る
ショートコーディング
- 作者: Ozy
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/03/11
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
機械語
31バイトでつくるアセンブラプログラミング ?アセンブラ短歌の世界?
- 作者: 坂井弘亮,愛甲健二,松田和樹,坂井丈泰,竹迫良範
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/01/16
- メディア: Kindle版
- この商品を含むブログ (2件) を見る
- 作者: 渡辺徹
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/03/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 坂井弘亮,坂井丈泰,愛甲健二,竹迫良範,松田和樹
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/04/23
- メディア: Kindle版
- この商品を含むブログを見る
プロジェクト管理
スクラム現場ガイド スクラムを始めてみたけどうまくいかない時に読む本(固定レイアウト版)
- 作者: Mitch Lacey
- 出版社/メーカー: マイナビ出版
- 発売日: 2016/02/27
- メディア: Kindle版
- この商品を含むブログを見る
アプリ開発チームのためのプロジェクトマネジメント チーム駆動開発でいこう!
- 作者: 稲山文孝
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/04/28
- メディア: Kindle版
- この商品を含むブログを見る
Git
- 作者: 大杉充,外村和仁
- 出版社/メーカー: マイナビ出版
- 発売日: 2014/06/28
- メディア: Kindle版
- この商品を含むブログを見る
エンジニアのためのGitの教科書[上級編] Git内部の仕組みを理解する
- 作者: 河村聖悟
- 出版社/メーカー: 翔泳社
- 発売日: 2016/01/19
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
インフラ/Docker
DevOpsを支えるHashiCorpツール大全 Think IT Books
- 作者: 前佛雅人
- 出版社/メーカー: インプレス
- 発売日: 2015/10/22
- メディア: Kindle版
- この商品を含むブログを見る
Dockerコンテナ実践検証 (Think IT Books)
- 作者: 佐藤司,冨永善視,森元敏雄
- 出版社/メーカー: インプレス
- 発売日: 2015/07/24
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 古賀政純
- 出版社/メーカー: インプレス
- 発売日: 2015/12/17
- メディア: Kindle版
- この商品を含むブログを見る
データベース
MySQL Clusterによる高可用システム運用ガイド ThinkIT Books
- 作者: 山?由章
- 出版社/メーカー: インプレス
- 発売日: 2016/03/31
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: ミック
- 出版社/メーカー: 翔泳社
- 発売日: 2013/08/28
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
アルゴリズム
- 作者: 伊藤静香
- 出版社/メーカー: インプレス
- 発売日: 2016/03/16
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
セキュリティ
セキュリティコンテストチャレンジブック CTFで学ぼう!情報を守るための戦い方
- 作者: 碓井利宣,竹迫良範,廣田一貴,保要隆明,前田優人,美濃圭佑,三村聡志,八木橋優
- 出版社/メーカー: マイナビ出版
- 発売日: 2015/09/30
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 小島拓也,中嶋亜美,吉原恵美子,中塚淳
- 発売日: 2014/11/10
- メディア: Kindle版
- この商品を含むブログを見る
AI
- 作者: 森川幸人
- 出版社/メーカー: 森川幸人
- 発売日: 2014/01/05
- メディア: Kindle版
- この商品を含むブログ (11件) を見る
位置情報技術
- 作者: 神武直彦,関治之,中島円,古橋大地,片岡義明
- 出版社/メーカー: インプレスR&D
- 発売日: 2014/03/28
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
OS
- 作者: 川合秀実
- 出版社/メーカー: マイナビ出版
- 発売日: 2006/03/01
- メディア: Kindle版
- この商品を含むブログを見る
Excel
- 作者: 奥谷隆一
- 出版社/メーカー: インプレス
- 発売日: 2016/03/04
- メディア: Kindle版
- この商品を含むブログを見る
「あるある」で学ぶ 忙しい人のためのExcel仕事術 (できるビジネスシリーズ)
- 作者: 植山周志,できるシリーズ編集部
- 出版社/メーカー: インプレス
- 発売日: 2015/04/09
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 奥谷隆一
- 出版社/メーカー: インプレス
- 発売日: 2015/03/13
- メディア: Kindle版
- この商品を含むブログを見る
その他
ゲーム界のトップに立った天才プログラマー 岩田聡の原点: 高校同期生26人の証言
- 作者: 岩田聡の記録を残す会
- 出版社/メーカー: スタジオスパーク
- 発売日: 2016/07/06
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 作者: ケン・シーガル
- 出版社/メーカー: NHK出版
- 発売日: 2012/07/31
- メディア: Kindle版
- 購入: 4人 クリック: 5回
- この商品を含むブログを見る
Kindle Unlimitedで良さげなコミック
探すとそこそこ見つかった。
完結か連載中かは正確じゃないかも。
完結したもの
- 作者: 赤松健
- 発売日: 2014/12/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 檜山大輔
- 出版社/メーカー: 一迅社
- 発売日: 2014/04/26
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
- 出版社/メーカー: マイクロマガジン・コミックス
- 発売日: 2014/04/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 高田慎一郎
- 出版社/メーカー: Benjanet
- 発売日: 2014/04/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 梅川和実
- 出版社/メーカー: 一迅社
- 発売日: 2016/03/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: まつもと剛志
- 出版社/メーカー: 白泉社
- 発売日: 2013/06/10
- メディア: Kindle版
- この商品を含むブログを見る
コーセルテルの竜術士物語: 1 (ZERO-SUMコミックス)
- 作者: 石動あゆま
- 出版社/メーカー: 一迅社
- 発売日: 2013/01/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 石動あゆま
- 出版社/メーカー: 一迅社
- 発売日: 2012/12/31
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 石動あゆま
- 出版社/メーカー: 一迅社
- 発売日: 2014/05/24
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 押川雲太朗
- 出版社/メーカー: 押川雲太朗
- 発売日: 2014/09/26
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: にわのまこと
- 出版社/メーカー: 日本文芸社
- 発売日: 2013/12/27
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 平松伸二
- 出版社/メーカー: グループ・ゼロ
- 発売日: 2013/03/14
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 平松伸二
- 出版社/メーカー: グループ・ゼロ
- 発売日: 2013/03/14
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 平松伸二
- 出版社/メーカー: 日本文芸社
- 発売日: 2013/10/25
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 平松伸二
- 出版社/メーカー: 日本文芸社
- 発売日: 2014/02/21
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 保谷伸
- 出版社/メーカー: ノース・スターズ・ピクチャーズ
- 発売日: 2015/06/08
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: アサミ・マート
- 出版社/メーカー: 徳間書店(リュウ・コミックス)
- 発売日: 2013/11/29
- メディア: Kindle版
- この商品を含むブログを見る
がんばれ!消えるな!!色素薄子さん: 1 (REXコミックス)
- 作者: 水月とーこ
- 出版社/メーカー: 一迅社
- 発売日: 2013/03/15
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 八神健
- 発売日: 2014/09/28
- メディア: Kindle版
- この商品を含むブログを見る
きりん The Last Unicorn VOL.1 ユニコーンの少年の巻
- 作者: 八神健
- 発売日: 2014/09/26
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 伊咲ウタ
- 出版社/メーカー: 一迅社
- 発売日: 2014/06/27
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: つばな
- 出版社/メーカー: 徳間書店(リュウ・コミックス)
- 発売日: 2013/12/27
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 中村 明日美子
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 鈴木みそ
- 出版社/メーカー: 鈴木みそ
- 発売日: 2013/01/05
- メディア: Kindle版
- 購入: 19人 クリック: 23回
- この商品を含むブログ (16件) を見る
- 作者: 鈴木みそ
- 出版社/メーカー: Miso Suzuki
- 発売日: 2014/01/23
- メディア: Kindle版
- この商品を含むブログ (11件) を見る
- 作者: オノ・ナツメ
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 志村貴子
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 手塚治虫
- 出版社/メーカー: 手塚プロダクション
- 発売日: 2014/04/25
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 手塚治虫
- 出版社/メーカー: 手塚プロダクション
- 発売日: 2014/04/25
- メディア: Kindle版
- この商品を含むブログ (4件) を見る
- 作者: 藤原カムイ,寺島優
- 出版社/メーカー: eBookJapan Plus
- 発売日: 2016/03/23
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 粟岳高弘
- 出版社/メーカー: 一迅社
- 発売日: 2014/04/26
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 竹宮惠子
- 出版社/メーカー: eBookJapan Plus
- 発売日: 2015/02/27
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 福本伸行
- 出版社/メーカー: フクモトプロ/highstone, Inc.
- 発売日: 2013/07/25
- メディア: Kindle版
- この商品を含むブログ (6件) を見る
- 作者: ジョージ秋山
- 出版社/メーカー: ゴマブックス株式会社
- 発売日: 2015/11/06
- メディア: Kindle版
- この商品を含むブログを見る
単巻のみ
- 作者: 押切蓮介
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
フォービリオンナイツ ?久正人傑作短編集? (アース・スターコミックス)
- 作者: 久正人
- 出版社/メーカー: アース・スター エンターテイメント
- 発売日: 2015/07/06
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 鈴木みそ
- 出版社/メーカー: 鈴木みそ
- 発売日: 2013/01/29
- メディア: Kindle版
- 購入: 3人 クリック: 16回
- この商品を含むブログ (9件) を見る
- 作者: オノ・ナツメ
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログを見る
連載中最新刊以外
コーセルテルの竜術士?子竜物語? : 1 (ZERO-SUMコミックス)
- 作者: 石動あゆま
- 出版社/メーカー: 一迅社
- 発売日: 2013/11/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 武梨えり
- 出版社/メーカー: 一迅社
- 発売日: 2012/10/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 結城心一,武梨えり
- 出版社/メーカー: 一迅社
- 発売日: 2013/02/08
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 佐々木ミノル
- 出版社/メーカー: 日本文芸社
- 発売日: 2013/12/06
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 宮本福助
- 出版社/メーカー: 一迅社
- 発売日: 2012/12/28
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: わらいなく
- 出版社/メーカー: 徳間書店(リュウ・コミックス)
- 発売日: 2015/07/31
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: いけ
- 出版社/メーカー: 徳間書店(リュウ・コミックス)
- 発売日: 2013/11/29
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 押切蓮介
- 出版社/メーカー: 太田出版
- 発売日: 2013/10/16
- メディア: Kindle版
- この商品を含むブログ (5件) を見る
- 作者: オカヤド
- 出版社/メーカー: 徳間書店(リュウ・コミックス)
- 発売日: 2013/12/14
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 武論尊・原哲夫,河田雄志,行徒妹,行徒
- 出版社/メーカー: ノース・スターズ・ピクチャーズ
- 発売日: 2015/06/08
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 三上小又
- 出版社/メーカー: 芳文社
- 発売日: 2013/04/04
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 今井哲也
- 出版社/メーカー: 徳間書店(リュウ・コミックス)
- 発売日: 2014/04/11
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 施川ユウキ
- 出版社/メーカー: 一迅社
- 発売日: 2014/04/18
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: 高橋葉介
- 出版社/メーカー: ぶんか社
- 発売日: 2014/03/01
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: なもり
- 出版社/メーカー: 一迅社
- 発売日: 2016/01/18
- メディア: Kindle版
- この商品を含むブログを見る
CVE-2016-6210の修正
OpenSSH 7.3がリリースされて、CVE-2016-6210が修正されたそうだ
http://www.openssh.com/txt/release-7.3sshd(8): Mitigate timing differences in password authentication
that could be used to discern valid from invalid account names
when long passwords were sent and particular password hashing
algorithms are in use on the server. CVE-2016-6210, reported by
EddieEzra.Harari at verint.com
どう修正されたのかなと。gitリポジトリをcloneしてきてコミットログをみてみた。
$ git show 9286875a commit 9286875a73b2de7736b5e50692739d314cd8d9dc Author: Darren Tucker <dtucker@zip.com.au> Date: Fri Jul 15 13:32:45 2016 +1000 Determine appropriate salt for invalid users. When sshd is processing a non-PAM login for a non-existent user it uses the string from the fakepw structure as the salt for crypt(3)ing the password supplied by the client. That string has a Blowfish prefix, so on systems that don't understand that crypt will fail fast due to an invalid salt, and even on those that do it may have significantly different timing from the hash methods used for real accounts (eg sha512). This allows user enumeration by, eg, sending large password strings. This was noted by EddieEzra.Harari at verint.com (CVE-2016-6210). To mitigate, use the same hash algorithm that root uses for hashing passwords for users that do not exist on the system. ok djm@
システム上のrootが使っているハッシュアルゴリズムと同じものを利用するようにしたと。なるほど。
openbsd-compat/xcrypt.cのpick_salt関数で/etc/shadowのrootのエントリから$id$salt$の部分を取得している。
/* * Pick an appropriate password encryption type and salt for the running * system. */ static const char * pick_salt(void) { struct passwd *pw; char *passwd, *p; size_t typelen; static char salt[32]; if (salt[0] != '\0') return salt; strlcpy(salt, "xx", sizeof(salt)); if ((pw = getpwuid(0)) == NULL) return salt; passwd = shadow_pw(pw); if (passwd[0] != '$' || (p = strrchr(passwd + 1, '$')) == NULL) return salt; /* no $, DES */ typelen = p - passwd + 1; strlcpy(salt, passwd, MIN(typelen, sizeof(salt))); explicit_bzero(passwd, strlen(passwd)); return salt; }
ただ、最新版のopenbsd-compat/xcrypt.cを見るとrootがパスワード持っているとは限らないので、初めて見つけたDES以外のエントリの$id$salt$を返すようになっていた。
/* * Pick an appropriate password encryption type and salt for the running * system by searching through accounts until we find one that has a valid * salt. Usually this will be root unless the root account is locked out. * If we don't find one we return a traditional DES-based salt. */ static const char * pick_salt(void) { struct passwd *pw; char *passwd, *p; size_t typelen; static char salt[32]; if (salt[0] != '\0') return salt; strlcpy(salt, "xx", sizeof(salt)); setpwent(); while ((pw = getpwent()) != NULL) { passwd = shadow_pw(pw); if (passwd[0] == '$' && (p = strrchr(passwd+1, '$')) != NULL) { typelen = p - passwd + 1; strlcpy(salt, passwd, MIN(typelen, sizeof(salt))); explicit_bzero(passwd, strlen(passwd)); goto out; } } out: endpwent(); return salt; }
紙のコミックとKindleコミックで発売日が同じもの 2016年09月分
- 作者: 城戸みつる
- 出版社/メーカー: 集英社
- 発売日: 2016/09/16
- メディア: Kindle版
- この商品を含むブログを見る
フードファイタータベル 3 (ジャンプコミックスDIGITAL)
- 作者: うすた京介
- 出版社/メーカー: 集英社
- 発売日: 2016/09/02
- メディア: Kindle版
- この商品を含むブログを見る
ワールドトリガー 16 (ジャンプコミックスDIGITAL)
- 作者: 葦原大介
- 出版社/メーカー: 集英社
- 発売日: 2016/09/02
- メディア: Kindle版
- この商品を含むブログを見る
ワンダーラビットガール 4 (ジャンプコミックスDIGITAL)
- 作者: 廣瀬ゆい
- 出版社/メーカー: 集英社
- 発売日: 2016/09/02
- メディア: Kindle版
- この商品を含むブログを見る
opensshでユーザの存在を確認できる脆弱性(CVE-2016-6210)
Full Disclosure: opensshd - user enumeration
When SSHD tries to authenticate a non-existing user, it will pick up a fake password structure hardcoded in the SSHD
source code. On this hard coded password structure the password hash is based on BLOWFISH ($2) algorithm.
If real users passwords are hashed using SHA256/SHA512, then sending large passwords (10KB) will result in shorter
response time from the server for non-existing users.
opensshは存在しないユーザでログインしようとするとハードコードされた偽のパスワードのハッシュ値に対して認証しようとする。で、ハッシュ値のパスワードを存在するユーザならば通常SHA256($5)やSHA512($6)でハッシュを計算しているはずが、偽のユーザの場合はハードコードされているハッシュ値がBlowfish($2)であるため、存在するユーザと比べて計算が早く終了するので、ユーザの存在をチェックすることができるという話のようだ。
auth.cのfakepwで確かにハードコードしているな。
struct passwd * fakepw(void) { static struct passwd fake; memset(&fake, 0, sizeof(fake)); fake.pw_name = "NOUSER"; fake.pw_passwd = "$2a$06$r3.juUaHZDlIbQaO2dS9FuYxL1W9M81R1Tc92PoSNmzvpEqLkLGrK"; #ifdef HAVE_STRUCT_PASSWD_PW_GECOS fake.pw_gecos = "NOUSER"; #endif fake.pw_uid = privsep_pw == NULL ? (uid_t)-1 : privsep_pw->pw_uid; fake.pw_gid = privsep_pw == NULL ? (gid_t)-1 : privsep_pw->pw_gid; #ifdef HAVE_STRUCT_PASSWD_PW_CLASS fake.pw_class = ""; #endif fake.pw_dir = "/nonexist"; fake.pw_shell = "/nonexist"; return (&fake);
Apache Commons FileUploadの脆弱性(CVE-2016-3092)
JVNDB-2016-000121 - Apache Commons FileUpload におけるサービス運用妨害 (DoS) の脆弱性
Apache Commons FileUploadにDoS攻撃の脆弱性なのだが、攻撃方法の詳細は説明されていない。調べたところ、推測なのだが、2年前のDoS攻撃の脆弱性(CVE-2014-0050)と関係するものではないかと思う。
2年前の脆弱性はこちら。
JVN#14876762: Apache Commons FileUpload におけるサービス運用妨害 (DoS) の脆弱性
この脆弱性はboundaryに長い文字列を指定してマルチパートのPOSTリクエストを送ると発生し、無限ループに陥ることがあるというものである。
この脆弱性に対するPoCはネットを探せば見つかる。どうも以下の2つの条件を満たすと攻撃できるようだ
適当にサーブレットを作ってPoCを実行すると無限ループに陥る。サーブレットを停止してスタックトレースを見ると以下でループしているようだ。
commons uploadのバージョンは1.3を用いた
MultipartStream$ItemInputStream.makeAvailable() line: 1016 MultipartStream$ItemInputStream.read(byte[], int, int) line: 901 MultipartStream$ItemInputStream(InputStream).read(byte[]) line: 101 Streams.copy(InputStream, OutputStream, boolean, byte[]) line: 101 Streams.copy(InputStream, OutputStream, boolean) line: 70 MultipartStream.readBodyData(OutputStream) line: 589 MultipartStream.discardBodyData() line: 613 MultipartStream.skipPreamble() line: 630 FileUploadBase$FileItemIteratorImpl.findNextItem() line: 1018 FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase, RequestContext) line: 998 DiskFileUpload(FileUploadBase).getItemIterator(RequestContext) line: 310 DiskFileUpload(FileUploadBase).parseRequest(RequestContext) line: 334 DiskFileUpload(FileUploadBase).parseRequest(HttpServletRequest) line: 288
ループしているのはMultipartStream$ItemInputStream.makeAvailableだが、このメソッドを説明するためには各クラスの説明を先にした方が良い。
関係する主要なクラスはMultipartStreamとItemInputStreamである。
MultipartStreamはマルチパートのPOSTリクエストをparseするクラスであり、子クラスItemInputStreamはboundaryで分割された現在のitemを読みだすためのクラスである。
この2つのクラスは効率化のために内部のバッファを利用している。このバッファの処理が脆弱性の原因である。
まず、MultipartStreamはバッファ関係のフィールドとして以下のものを持っている。
byte[] buffer | バッファを入れるバイト配列 |
int bufSize | bufferのサイズ |
int head | buffer上の実際のバッファの開始インデックス |
int tail | buffer上の実際のバッファの終了インデックス |
byte[] boundary | boundary+prefixを入れておくバイト配列 |
int boundaryLength | boundary.length |
int keepRegion | boundaryをバッファから探すために必要なサイズ |
さらに、ItemInputStream側にもバッファ関係のフィールドとして以下のものがある。
int pos | boundaryを検索した時の、boundaryのMultipartStream.buffer上の開始インデックス |
int pad | boundaryを検索するために保持すべき実際のバイト数。MultipartStream.keepRegionと似たようなもの |
headとtailはbuffer内の有効な部分を指している。1バイト読みだすとheadをインクリメントする。head=tailになるとInputStreamから実際に読み出してbufferに入れている。
boundaryはリクエストで指定されたboundaryを入れるバイト列だが、それだけでなくprefixに[CR,LF,-,-]がくっついている。これは実際の区切り文字にはboundaryに--がくっつくためであり、さらに行頭なのでCR,LFがprefixとしてくっついている。この辺りはコンストラクタのコードを見ることで確認できる。
MultipartStream(InputStream input, byte[] boundary, int bufSize, ProgressNotifier pNotifier) { ... // BOUNDARY_PREFIXは[CR, LF, -, -] this.boundary = new byte[boundary.length + BOUNDARY_PREFIX.length]; this.boundaryLength = boundary.length + BOUNDARY_PREFIX.length; this.keepRegion = this.boundary.length; System.arraycopy(BOUNDARY_PREFIX, 0, this.boundary, 0, BOUNDARY_PREFIX.length); System.arraycopy(boundary, 0, this.boundary, BOUNDARY_PREFIX.length, boundary.length); ... }
MultipartStream内では、buffer内からboundaryを検索する際にboundaryの途中までマッチしたという情報を残していない。そのままだと読み込んだ単位の境にboundaryがある場合は検知できない。そのため、バッファを全て読み込んでしまい入力ストリームからバッファに読み込む時に、boundaryのサイズだけは常にバッファに残しておき、残りの部分に入力ストリームからデータを書き込む必要性がある。このboundaryの検索のために保持すべきサイズがkeepRegionであり、padは
pad = min(tail-head, keepRegion)
である。
ItemInputStream.makeAvailableの話に戻る。makeAvailableは読み込み可能なデータがバッファ内にない場合にデータを入力ストリームから読み込みバッファに入れて、読み込み可能なバイト数を返すメソッドである。
private int makeAvailable() throws IOException { // boundaryが見つかったので終了 if (pos != -1) { return 0; } // head〜tailのうち後ろ側のpad分をbufferの最初にもってくる // Move the data to the beginning of the buffer. total += tail - head - pad; System.arraycopy(buffer, tail - pad, buffer, 0, pad); // 有効なのは0〜padになる // Refill buffer with new data. head = 0; tail = pad; for (;;) { // bufferの有効ではない部分に入力から読み込む int bytesRead = input.read(buffer, tail, bufSize - tail); if (bytesRead == -1) { // The last pad amount is left in the buffer. // Boundary can't be in there so signal an error // condition. final String msg = "Stream ended unexpectedly"; throw new MalformedStreamException(msg); } if (notifier != null) { notifier.noteBytesRead(bytesRead); } // tailを読んだ分だけ拡張する tail += bytesRead; // buffer内からboundaryを検索し、その位置をposに入れる // boundaryが見つからなければ、pos=-1になる findSeparator(); // bufferから読み込み可能なデータを探して、読み込み可能なバイト数を返す int av = available(); // 読み込み可能なデータがあるか、boundaryが見つかった場合はバイト数を返す if (av > 0 || pos != -1) { return av; } } }
available()は現在の読み込み可能なバイト数を返すが、ちょっと特殊で以下のようになっている。
public int available() throws IOException { if (pos == -1) { return tail - head - pad; } return pos - head; }
buffer内にboundaryが見つかった場合はboundaryの開始インデックスまでのサイズを返すが、見つからなければ今有効なサイズ(tail-head)からboundaryに必要なサイズを除いたサイズを返している。boundaryのサイズ分はすぐには使えないと考えているようだ。
で、ループしているのはmakeAvailableのfor文の部分である。
このforループが以下のような条件で攻撃された時の動作を考えてみる。
- boundaryを4092文字の文字列とし、
- 入力ストリームがboundaryのない4097文字のバイト列とする。
初期状態は以下のようになっている
- head=tail=0
- bufferは用意されているが、0 fillされている
- bufSize=4096(デフォルト)
- boundaryにはCR,LF,-,-,boundaryの値が入っている。よって4096文字
- keepRegionはboundary.lengthなので4096
すると、以下のように処理が進む
- 初期状態ではhead=tail=0となっている。
- input.readでバッファを読んでいき、tailも読んだサイズに拡張される。
- 初回でバッファのサイズ文読み込まれるとは限らないが、バッファサイズまで読み込まれない場合でも、boundaryが見つからずpos=-1になり、available()もtail-head-pad=tail-head-min(tail-head, 4096)=tail-head-(tail-head)=0を返すので、次のループでバッファ全体に読み込まれる
- バッファ全体を読み込んだ時には以下のようになり、ループ条件を抜けられない
- head = 0, tail = 4096
- pad = min(tail-head, 4096) = 4096
- pos = -1 (boundaryは発見できない)
- available() = tail-head-pad = 0
- その後も上記の状態のままinput.readしても0バイト読み込むだけなので終了しない
となって無限ループする。
commons fileuploadのv1.3.1ではこの問題が修正されており、以下のコードが追加されている。
@@ -331,9 +326,14 @@ // We prepend CR/LF to the boundary to chop trailing CR/LF from // body-data tokens. - this.boundary = new byte[boundary.length + BOUNDARY_PREFIX.length]; this.boundaryLength = boundary.length + BOUNDARY_PREFIX.length; + if (bufSize < this.boundaryLength + 1) { + throw new IllegalArgumentException( + "The buffer size specified for the MultipartStream is too small"); + } + this.boundary = new byte[this.boundaryLength]; this.keepRegion = this.boundary.length; + System.arraycopy(BOUNDARY_PREFIX, 0, this.boundary, 0, BOUNDARY_PREFIX.length); System.arraycopy(boundary, 0, this.boundary, BOUNDARY_PREFIX.length,
boundaryLengthはリクエスト指定したboundaryのサイズ+4なので4092バイト以上のboundaryが指定された場合はエラーになるようになった。
さて、大元のCVE-2016-3092の話に戻る。boundaryが4092バイト以上の場合は良いが4091バイトだったらどうか。
バッファいっぱいまで読み込んだ状態では
- head=0,tail=4096
- keepRegion=4091+4=4095
- pad=min(tail-head, keepRegion)=min(4096,4095)=1
となり、availableは1を返す。ではmakeAvailableを読んでいる方は以下のコードになる
public int read(byte[] b, int off, int len) throws IOException { if (closed) { throw new FileItemStream.ItemSkippedException(); } if (len == 0) { return 0; } int res = available(); if (res == 0) { // resに1が入る res = makeAvailable(); if (res == 0) { return -1; } } res = Math.min(res, len); // 1バイトしかコピーされない System.arraycopy(buffer, head, b, off, res); head += res; total += res; return res; }
1バイトに対するSystem.arraycopyが発生する。リクエストボディが小さければ大したことないが1MB程度のリクエストを送るとこれを1バイトずつ処理して100万回近くループが発生してしまう。おそらくこれがCVE-2016-3092の脆弱性ではないかと思う。
This caused the file
http://mail-archives.apache.org/mod_mbox/www-announce/201606.mbox/%3C6223ece6-2b41-ef4f-22f9-d3481e492832@apache.org%3E
upload process to take several orders of magnitude longer than if the
boundary length was the typical tens of bytes.
と無限ループになるわけではないし、今回の修正のdiffをみるとコンストラクタで最低でもboundaryLengthの2倍をとるようになっているという点とも合致する。
@@ -325,12 +325,6 @@ if (boundary == null) { throw new IllegalArgumentException("boundary may not be null"); } - - this.input = input; - this.bufSize = bufSize; - this.buffer = new byte[bufSize]; - this.notifier = pNotifier; - // We prepend CR/LF to the boundary to chop trailing CR/LF from // body-data tokens. this.boundaryLength = boundary.length + BOUNDARY_PREFIX.length; @@ -338,6 +332,12 @@ throw new IllegalArgumentException( "The buffer size specified for the MultipartStream is too small"); } + + this.input = input; + this.bufSize = Math.max(bufSize, boundaryLength * 2); + this.buffer = new byte[this.bufSize]; + this.notifier = pNotifier; + this.boundary = new byte[this.boundaryLength]; this.keepRegion = this.boundary.length;
こうすることで、バッファの半分程度はavailable()で返るようになり、デフォルトのバッファのサイズが4KBなので最低でも2KB程度ずつは処理されることになる。
プリンシプル オブ プログラミング
プリンシプル オブ プログラミング3年目までに身につけたい一生役立つ101の原理原則
- 作者: 上田勲
- 出版社/メーカー: 秀和システム
- 発売日: 2016/03/23
- メディア: 単行本
- この商品を含むブログ (8件) を見る
良いプログラミングに必要な原則、手法をまとめた本。著者は具体例やコードを用いないというポリシーで書いているのだが、やはり具体例がないと頭に入ってこない感じがしてよくないな。