Googleとハード屋が不自由なソフトウェアを世の中に蔓延させるために不毛な労力を注ぎ込んでいるAndroidは、無論、不自由なOSかつ、制限ハードウェアである。
確かに、Androidは、時代遅れの自由なソフトウェアライセンスであるGPL Version 2であるLinuxカーネルを使っているものの、そのlibcは、許諾的な自由ソフトウェアライセンスであるBSDライセンスされたBionicであり、その下に、不自由なバイナリブロブのドライバーが山ほど動いている。そして、Androidを搭載しているほとんどのハードウェアは、極めて屈辱的に制限されている。
ほとんどのAndroidハードウェアは、二つのCPUを積んでいる。ひとつは、Androidや、その上の通常のユーザーランドのソフトウェアを動かす、汎用CPUである。Androidは手足をもがれて不自由ソフトウェアに汚染されたOSであるが、まだ多くの共通部分は公開されているといえる。
もうひとつは、モデムとかベースバンドとかラジオなどという名前で呼ばれているCPUで、電話局との通信の制御に使われている。このCPUが動かすOSやソフトウェアは、完全に閉鎖的でプロプライエタリで、どうしようもないクソだ。我々はこの動作を、たやすく検証することはできない。極めて信頼できない、危うい組み込みのスパイである。
参考:The second operating system hiding in every mobile phone
さて、今回、Replicantという完全に自由なAndroidディストリビューションを開発しているプロジェクトが、邪悪な意図の存在が極めて強く示唆されるSamsungのほとんどのGalaxyデバイスに、バックドアを発見したと発表した。
SamsungGalaxyBackdoor - Replicant
Replicant developers find and close Samsung Galaxy backdoor — Free Software Foundation — working together for free software
どうやら、このベースバンドCPU上で動くプロプライエタリな怪しいOSと、GalaxyにプレインストールされたAndroidに搭載されたカーネルモジュールが協調して、ファイルシステムに無制限にアクセスできる、その意図が疑わしい機能が含まれているという。これは、バックドアとして悪用可能である。
完全に自由なAndroidディストリビューションを開発するReplicantでは、そのような疑わしいカーネルモジュールなど搭載することはなく、したがってこのベースバンドCPUの上で動くプロプライエタリOSと強調することはなく、したがって、このようなバックドアの疑いが強い機能の動作を阻止できる。
既存のSamsung Galaxy利用者は、今すぐSamsung Galaxyデバイスのバッテリーを引っこ抜いて窓から放り投げるか、少なくともプレインストールされた不自由Androidを完全に削除し、新規にReplicantをインストールして、Samsungに説明を要求するべきである。
あるいは、ハンロンの剃刀に従えば、これはベースバンドOSが、デバッグ目的などで手軽なストレージを扱いたかったので付け加えたあくまでデバッグ目的の小汚い機能が、製品版でも取り除かれずにそのまま残ったのかも知れない。一般に、この手のQualcommなどのハード屋は、どうしようもないほどバカでマヌケで底なしに無能であり、そういうことは十分に考えられるからだ。
ここにいるぞ。中は想像以上に悲惨だ。コードが公開される時--すなわちネット上にばら撒かれるせよ、あるいはもっと悲惨なことに、正式にビジネスパートナーに提供されるにせよ--その時はすでに、全開発者は、新規のプロジェクトにとりかかっている。コードがコンパイルされて、製品として店先に出荷されるまでには、6ヶ月ほどのラグが存在する。その時には、すでに技術は移り変わっているので、誰も大昔のものには関心を払わない。すでに出荷されたものの不具合を修正することに、何の利益もないし、企業的理念も存在しない。コードをパッチするなんて簡単なことであると、私は常に思っていたのだが、管理職の連中にとっては、大事でも何でもないことであった。
BNC43xxの開発における、本当にクソすぎたことを教えてやろう。我々は3ComとかLinksys(Ciscoに買収される前後両方)とかAppleとかD-Linkとかに、リファレンスデザインを販売していた。理屈の上では、全社とも、同じリファレンスデザインを受け取るわけだ。だが、もしそのうちの一社が我々のコードのバグ報告をしたならば、パッチされたコードを受け取るのは、バグ報告したその一社のみだ。結果として、我々のコードには、#ifdef(COMS)とか#ifdef(LINKSYS)とかで、それぞれ専用のパッチを有効にしてあった。まだバグを発見できていない他の会社は、我々が壊れていると知っている状態のアップデートを受け取っていた。会社にとっても悲惨だし、会社の顧客にとってはもっと悲惨だ。
さらに、全社に向けて、そのようなパッチの内容を知らされないまま、ソースコードリリースも提供されていた。そのために我々は、コード変換器と呼ばれるものをビルドステップに挟んでいた。これはコード全体にわたって、一部のCプリプロセッサーシンボルを展開するので、#ifdef(COMS)とか#ifdef(LINKSYS)といったものが、消されるようになっていた。これにより、全社とも、それぞれ異なったソースコードリリースを受け取ることになっていた。顧客会社に渡すコードは、それぞれ別々にコンパイルした変換済みのコードであった。
さらに、それぞれの会社が独自に開発者を雇って、独自拡張を施しているし、彼らは我々のブランドではなく、製品を"Cisco"とか"Linksys"とかのブランドで出荷したがっていた。そのため、著作権表記とかを全部書き換えた以外は同一内容のソースコードを、単に顧客会社が全部自前で書いたように見せかけるために作っていた。
もう俺は足を洗って業界から身を引いたよ。
I hear you. It's so much worse than you can imagine. By the time the code g... | Hacker News
読者はこのような悲惨極まりない環境で開発されたハードとOSの利用を拒否せずんばあらざるなり。もはや自由不自由という問題ではなく、根本的にハナがヒン曲がるほどの腐臭を放つほど腐っているのだ。腐りきっているのだ。クソなのだ。クソすぎるのだ。この世の中にこのようなもはやこれを罵るに適切な罵倒言葉がまだ発明されていないが、その何かであるほどに悲惨なものが、存在を許されて言い訳がない。この腐った業界もろとも滅びるがよい。
SamsungやQualcommとか叩いて何が楽しいんですかね。
ReplyDelete擁護するなら少しぐらい頭使ったコメント残せば?
ReplyDelete個人的には叩くとか関係なく同じGPU使ってるはずなのに端末毎に挙動が違う理由が解って有意義でしたよ。
> 端末毎に挙動が違う理由
ReplyDelete#ifdefなコードブロックの量には触れられてないけど、相当量あるのかも知れませんね。
しかし、なぜそんな事に……?
ユーザー側としても、プロプライエタリなコードとは言え、そこにパッチを投げるなら、他社に展開されるのも織り込み済みで投げるもんだと思ってたけど……違うの?
> しかし、なぜそんな事に……?
ReplyDeleteバグフィックスがまた別のバグを引き起こすのは実に良くあることなので、過去にそういう事態が起きたときに、マネジメントがアホな判断をしたとか?
まだこれはソースコードリポジトリとしては一つで#ifdefしてるのでマシな方で、ホントに糞だと、顧客各社ごとにソースコードをまるごとコピーして完全に別に開発してたりしますぜ。
(実際にそういう現場にいたわけではなくて、また聞きですが。あと携帯電話じゃなくて、業務アプリでした)
BNC43xxとはどこの製品かと思ったら、元記事ではBCM43xxとなっていました。Broadcomですね
ReplyDeleteAndroidといえば標準ブラウザに
ReplyDelete特定のjavascriptを仕込む事で標準ブラウザに記憶してあるIDとかパスを取得できたり、ファイルを強制ダウンロードさせたりネイティブDLLを起動できたりする
とんでもないセキュリティホールが1年ぐらい放置されていたよなあ。