Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
高校のChromebookでも自由なネット環境を!
Search
らすぴー
May 16, 2026
140
0
Share
高校のChromebookでも自由なネット環境を!
らすぴー
May 16, 2026
More Decks by らすぴー
See All by らすぴー
限界環境CPython rev. seccamp2025
raspython3
0
39
kernel-vm-ittekita-yuukousai
raspython3
0
94
kernelvm-brain-net
raspython3
0
1.1k
pyconjp2024-wince
raspython3
0
41
seccamp2024-edictionary-python-TLS
raspython3
0
37
Featured
See All Featured
Technical Leadership for Architectural Decision Making
baasie
3
360
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
390
Chasing Engaging Ingredients in Design
codingconduct
0
190
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
190
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Paper Plane
katiecoart
PRO
1
50k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
340
Designing for Performance
lara
611
70k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
130
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Transcript
Chromebook らすぴー / RasPython3 (@RasPython3) 1
• 本スライドの内容は、発表者の高校時代(3~5年前)の話になります。 • 本スライドの内容は、現在は修正され使用できなくなっています。 • いわゆる脆弱性を突く、といったものではありません。 (この辺り@puhitakuさんに相談に乗っていただきました。感謝!) 2
活動名 RasPython3 / らすぴー X: @raspython3 seccamp’24 全国 seccamp’25 チューター
普段やってること 各種ウェブツールづくり 電子辞書いじり ゲーム内コーディング ネットワーク関連 etc. 3 SHARP Brain SH-PW7-W 自分が持ってる機体の色違い
• 昨今のICT教育推進の流れ • 高校入学時に学校の指示でChromebookを購入 • Google Play: 使用不可 • 拡張機能:
使用不可 • Linux: 使用不可 • フィルタリング拡張機能が強制インストール済み • DiscordやQiita等多数のサイトが閲覧不可 • 「不便すぎる!!!」 4 NEC Chromebook Y2
5 実際の規制画面
今回は「フィルタリングの無効化」を目標にする 1. 拡張機能の削除 2. 拡張機能を介さないルートの開拓 3. 拡張機能の検出回避 6
1: 拡張機能はポリシーによりインストールされている →もちろん普通のやり方では削除できない なので、「ポリシーの解除」と「ごり押し抹消」のどちらか これを行うには、Chrome(Chromium)の穴を探すことになる →難易度がかなり高い 7
2: • 拡張機能が介入できるルート 1. ブラウザのアドレスバーにURLを入れてアクセス 2. リンクをクリックしての遷移 3. JavaScriptでwindow.open()やnavigation.navigate() (2とほぼ同じ)
• 介入できないルート 1. 外部サーバでレンダリング 2. 自前でEthernet等を喋って通信・レンダリング・JavaScript処理 →ちょっと大変 (開拓はしていたが今回はスルー) 8
3: そもそも... 拡張機能はどうやってフィルタリングをしているのか? • WebRequestBlocking API • Manifest v2(とv3では一部拡張機能、今回の拡張機能も該当)まで使えたAPI •
HTTPリクエストを動的にブロックできる • DeclarativeNetRequest API • Manifest v3で使えるAPI • HTTPリクエストを静的にリダイレクトやブロックなどができる 9
3: この拡張機能は、前述の2つのAPIを使ってフィルタリングを実現してい るっぽい →ページ自体のloadイベント等を監視しているわけではないので イベントリスナーの削除などでの無効化は難しい 抜け穴があるとすれば、「想定外」を突くしかない ページ遷移のやり方も直リンや戻る/進む、history APIなど複数ある (ソフトナビゲーションとかもね) →できるだけ特殊なページ/手順を探そう!
10
URIスキームって知ってますか? 大雑把に言うと「どんな種類/手段のURIか」を示すもので、 URIの「:」とその手前の部分を指す http:, https:, mailto:, ssh:, ftp: などなど... 11
URI 拡張機能は基本的には http: または https: のみ動作可(のはず) →file: などから見たいページに飛べば回避できるのでは? 結果: 失敗
ちゃんとブロックされました • もっと特殊なスキームを! • Chromeブラウザで使われるスキーム • http:, https:, file:, chrome:(about:), chrome-untrusted: 12 ん?
chrome-untrusted • chrome://よりも権限が弱い、ブラウザ内蔵だが信用が低いページ 用のスキーム • 権限以外は chrome: とほぼ同じ挙動をしている(っぽい) • Chromebook以外では(自分は)見たことがない
...これってかなりレアスキームでは? 13
• 今回のやり方で都合がいいターミナルのページ (chrome-untrusted://terminal/html/terminal.html)を開く • 開発者ツールを立ち上げ、コンソールに「location.href=...」で 見たいページのURLを入力 • Enter! 14
ktkr 見れちゃった~~~~~ 15 けしからん じゃないか!!
• 制限の多い環境だと何かと力がつくのでおススメ • 例えば電子辞書 (この環境下で電子辞書にPython移植したりしていた) • 良い子のみんなは真似しちゃだめだぞ! 16