デフォルトカーネルの機能をサポートするGoogleデバイスはありますか?


14

/systemNexusデバイスのシステムレスルート(パーティションの変更は行われません)の場合、元のカーネルバイナリを変更せずに実行可能ファイルの機能を設定できますか?

端末からの制限なしにファイルを管理したいことがよくあります(必須CAP_DAC_READ_SEARCH。ただし、スーパーユーザーも使用したくない。
必要なものは、それらを使用するためのカーネルサポートに沿ってキャップを設定するためのツールです(他のユーザースペースのものに依存しません)

問題は、そのようなデバイスを所有していないことです。だから私はそれがのいずれかで動作するかどうかわかりませんNexus 5X Nexus 6P Nexus 9 Pixel C


2
また、ネクサスエミュレータを見つけることができませんでした…
user2284570

疑わしい... Androidは標準のGNU libc(glibc)ライブラリではなくBionic libcを使用しているため、POSIX準拠にさえ近づいていません。Bionicの代わりにCrystaX NDKのような別のlibcを使用して独自のカーネルをコンパイルできる場合がありますが、それらの機能がその中にあるかどうかはわかりません。
アセジャベリン

@acejavelin:ユーザーランド部分は、機能を含む拡張属性を設定するためにのみ必要です。それ以外はすべてカーネル側です。/system/bin/pingコマンドが私の本当のサムスンのデバイスでsetuidされていないことに気づきましたCAP_NET_RAW。ただし、実際のデバイスをルート化することはなく、関連情報を表示するために使用できるツールがわからないため、確認することはできません。
-user2284570

Nexusデバイスをルート化しないのはなぜですか?それはそのためのものであり、保証を無効にしません。Nexusデバイスをデフォルトのルート化されていないロックされた状態に復元するのは非常に簡単です。デバイスは基本的にブリックできません。
アセジャベリン

@acejavelin:ネクサスデバイスを所有していません…私の目的はセキュリティ研究であり、グーグル自身のデバイスに対する報酬のみです。したがって、質問のデバイスの1つのカーネルがケーパビリティxattrの使用をサポートしているかどうかを知る必要があります。ギャラクシータブに表示されているのは、おそらくサムスンに関連するものだけです。私の質問に根づくことに関与しないなら、それは不明瞭として閉じられるかもしれません
user2284570

回答:


1

質問は古いものですが、未回答(私のタグ)の質問の上に表示され続けます。だから私はこれに答えるべきだと思う:)

AOSPの能力サポート:

質問は特にGoogleデバイスに関するもので、Googleデバイスを使用したことはありません。ただし、確かに言えるのは、Android 1.6程度の低さで動作するほとんどのデバイス(すべてではないにしても)でLinux(プロセス)機能が有効になっている必要があるということです。参照はとにinitありsystem_server、どちらもAOSPの非常に主要なコンポーネントです。たとえば、Android 4.2では、installdもう1つのコアコンポーネントが、機能が削除されて実行されるようになりました。

ファイルシステム機能、Android 4.3の主要なセキュリティ拡張機能の 1つであり、などのバイナリからファイルシステムを削除set-uid/ 削除しました。これにより、Androidのルート化の道に革命的な変化が生じました。set-gidrun-as

アンビエント機能のサポートがAndroid 8に追加され、ファイル機能の使用が推奨されなくなりました。

ファイル機能は、ファイル機能を持​​つファイルを実行するプロセスがこれらの機能を取得できるため、セキュリティリスクをもたらします。

多くのinitサービスは、例えば、それらに依存しstoraged、私自身を含め、sshdおよびdnscrypt-proxyサービスを提供しています。

カーネルの機能サポート:

カーネルの部分では、機能なしでカーネルを構築することはオプションではありません。

カーネル2.5.27からカーネル2.6.26まで、機能はオプションのカーネルコンポーネントであり、CONFIG_SECURITY_CAPABILITIESカーネル構成オプションを使用して有効/無効にすることができました。

そして:

Linux 2.6.33より前のカーネルでは、ファイル機能はCONFIG_SECURITY_FILE_CAPABILITIESオプションで構成可能なオプション機能でした。Linux 2.6.33以降、構成オプションは削除されており、ファイル機能は常にカーネルの一部です。

Androidリポジトリで最も古い一般的なカーネルバージョンは2.6.39で、ファイル機能のサポートも含まれています。

カーネル側のファイルシステム機能のサポートは、一部のOEMから遅れている必要がありますが、機能を壊す可能性があるため、切り替えなければなりませんでした。たとえば、surfaceflinger(Androidの表面作曲)のAndroid 7.1以降のファイル機能なしでは動作しません。

メインラインLinuxカーネル4.3は、アンビエント(プロセス)機能用に2016年9月にパッチが適用され、2016年にAndroidカーネル3.18および4.1にバックポートされました。したがって、それらは必然的にカーネルの一部です。

結論:

Linuxディストリビューションでは、ごく少数のプログラムがLinuxの機能を利用しています。ありますがpam_cap、主に、(または全て?)のディストリビューションは、まだ使用set-uidsusudopingmountpasswdなどなど。しかし、Androidの機能は、フレームワークとコアサービスに深く統合されています。それらを削除するには、AOSPおよびカーネルソースで数百行または数千行を編集する必要があります。OEM(特にGoogle、AOSPを開発し、Android用のLinuxカーネルを修正したGoogle)がこの無料のセキュリティ機能をAndroidカーネルですぐに利用できる場合、それを利用しないのは意味がありません。これは純粋なOS関連の機能であり、追加のハードウェアサポートを必要としません。したがって、どのメーカーのどの電話でもサポートされている機能が必要です。


質問:

元のカーネルバイナリを変更せずに実行可能ファイルの機能を設定できますか?

はい、あなたはそうでなければなりません。

必要なものは、上限を設定するためのツールです...

私が使用してきましたcapshgetcapsetcapgetpcapsからlibcapnetcappscapからlibcap-ng何の問題もなく。しかし、私はアンビエント機能を好みます。これらは設定が簡単で、ファイル機能の場合のように拡張属性などのファイルシステム機能に依存しません。使用することもできlistxattrgetxattrsetxattrおよびremovexattrからのツールがxattr_syscall_wrapper操作するために、security.capabilityまたは任意の他のxattrの直接。

あなたのコメントから:

/system/bin/pingコマンドがsetuid実際のSamsungデバイスにないことに気付いたので、CAP_NET_RAW

Androidのpingにはがありset-uidませんCAP_NET_RAW。特別な非RAWソケットIPPROTO_ICMPを作成します。これとは異なりIPPROTO_RAW、特権は必要ありません。


その他の参考資料:

上記の10以上のリファレンスに加えて、Linux機能をサポートおよび利用するAOSPコードの他のいくつかの部分を以下に示します。

  • コアコンポーネント:バイオニックlibcinittrusty(OS)
  • 外部コンポーネント: libcaplibcap-ng
  • デーモン/サービス: zygote(フォークアプリ、system_server)、 、hostapdwpa_supplicantdnsmasq、(logd マネージャー、プライベートDNS)、 (テスト)、デーモン、、、、(PERFETTO)、(IPSec)の、など、HALデーモンの数。netdNetLinkdebuggerdsdcardperformancedincidentdmtpdtraced_probesracoonwificondrild
  • 実行可能ファイル: reboot(INIT)、 、 、dumpstate、(tcpdump 、 など)straceiputilspingtraceroute
  • Minijail:機能を中心に展開する専用のサンドボックスツールとライブラリ。adbdこのライブラリを使用して特権を削除します。
  • SELinuxcapabilityクラスを使用して、ドメインに機能を許可/拒否します。

AndroidはLinuxの機能に大きく依存していると結論付けています。これは、あまり使用されていない機能ではありません。


関連:


何も答えません。あなたが述べたすべてが知られています。問題のポイントは、Googleブランドのデバイスにそれが含まれているかどうかはほとんど使用されないためです。
user2284570
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.