yorikasa
2025年3月27日 19時18分
==========
製品型番:Armadillo-IoT A6E
Debian/ABOSバージョン:3.21.3-at.2
カーネルバージョン:5.10.234-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:
==========
長文失礼いたします。
下記のURLから入手したBaseOSのイメージを利用し、Armadillo A6Eのアップデートを実施したところ、想定と異なった動作があったためご質問させていただきます。
https://armadillo.atmark-techno.com/resources/software/armadillo-iot-a6…
質問1.atmarkユーザーについて
セキュリティの観点から利用しないユーザーは極力残さないという運用(atmarkユーザーをuserdelで削除し、専用のユーザーアカウントを用意)をしております。
BaseOSのアップデートを実施後、用意したユーザーアカウントが正常にコピーされているか確認するため「cat /etc/shadow」でアカウントの確認を実施したところ、ロックされた状態のatmarkユーザが追加されているように見受けられました。
BaseOSの更新の際にatmarkユーザーがロックされた状態で追加をされるのは、少々意図していない動作だったのですがこちら仕様でしょうか?
質問2.初回のSWUpdate時以外でのユーザーアカウントの登録/削除の制限について
atmarkユーザーに限らず、初回のswuファイルによるアップデート以外でユーザーが登録されることを制限することは可能でしょうか?
例として、ロックされていないユーザー登録を実行するswuファイルを偽造されてしまった場合、ユーザーがUSB等でアップデートを行ってしまうと意図していないユーザーでのログインが可能となってしまうと思われます。
発生する可能性としては低いと想像しているのですが、もし、制限する方法がございましたら教えていただけますと幸いです。
質問3.BaseOSの更新時のユーザーアカウントの扱いについて
任意に追加したユーザーアカウントについて、ホームディレクトリを/etc/swupdate_preserve_filesへ登録し忘れていたため、BaseOSアップデート後ホームディレクトリ無いという状況が発生しました。
ホームディレクトリが無いのは登録漏れのため改める予定なのですが、/etc/swupdate_preserve_filesを確認したところ/etc/shadow等の登録もありませんでした。
こちら、アカウント名やパスワードについては、/etc/swupdate_preserve_filesへ登録されていない状況でもBaseOSの更新時にコピーされるのでしょうか?
以上となります。
ご確認のほどよろしくお願いします。
コメント
yorikasa
at_dominique.m…
2025年3月28日 13時52分
yorikasaさん
お世話になっています、
マルティネです。
貴重なフィードバックありがとうございます。
> 質問1.atmarkユーザーについて
> BaseOSの更新の際にatmarkユーザーがロックされた状態で追加をされるのは、少々意図していない動作だったのですがこちら仕様でしょうか?
すみません、そういう仕様となっています。
ロックされているユーザーなのでこれでいいと考えていましたが、
確かに再追加しないように変更した方が自然ですね。
ユーザーの追加自体を防ごうと思えばどうにかなると思いますが、
atmark ユーザーでコンテナを動かすための情報(/etc/subuid 等)の管理も
必要になってきますので、そう簡単には変更できない状態です。
課題として検討させていただきます。
お手数ですが、今はロック状態のユーザーで運用してください。
(一応、ロックだけではなくシェルを /sbin/nologin 等に変更していただければ
その情報も残るはずです。
また、ご自分で開発ツールページにある build-rootfs でイメージをビルドする
場合でも外すことは可能ですが、タイミングよく更新していただくために
標準のイメージのご利用を推奨しています)
> 質問2.初回のSWUpdate時以外でのユーザーアカウントの登録/削除の制限について
>
> atmarkユーザーに限らず、初回のswuファイルによるアップデート以外でユーザーが登録されることを制限することは可能でしょうか?
> 例として、ロックされていないユーザー登録を実行するswuファイルを偽造されてしまった場合、ユーザーがUSB等でアップデートを行ってしまうと意図していないユーザーでのログインが可能となってしまうと思われます。
> 発生する可能性としては低いと想像しているのですが、もし、制限する方法がございましたら教えていただけますと幸いです。
すみません、証明されてる SWU をインストールすると何でもできる仕組みになっています。
あえてアップデートの最後に /etc/passwd 等を確認できるようにしても、
結局 swu の中身どおりにコードを実行できますので、
パーティションを改造してアップデートの途中で強制リセット等を行えばその最後のチェックが
実行される保証はありませんので、セキュリティの面では意味がありません。
SWUファイルを偽装できたらもう終わりです。
なので、/etc/swupdate.pem の証明書の管理は必要だと考えています。
(実際、漏れの心配がなくても弊社のリリースに使っている鍵を数年ごとに更新しています)
> 質問3.BaseOSの更新時のユーザーアカウントの扱いについて
>
> 任意に追加したユーザーアカウントについて、ホームディレクトリを/etc/swupdate_preserve_filesへ登録し忘れていたため、BaseOSアップデート後ホームディレクトリ無いという状況が発生しました。
> ホームディレクトリが無いのは登録漏れのため改める予定なのですが、/etc/swupdate_preserve_filesを確認したところ/etc/shadow等の登録もありませんでした。
> こちら、アカウント名やパスワードについては、/etc/swupdate_preserve_filesへ登録されていない状況でもBaseOSの更新時にコピーされるのでしょうか?
分かりにくい仕組みになっていてすみません。
/etc/passwd,group,shadow のユーザー情報だけは別処理でコピーされています。
そちらのファイルについては、コピーしないで手動に追加されたユーザーの分だけを
再追加する形で処理しています。
Armadillo Base OS の更新は tar アーカイブの展開で、アップデートを
構築する際の uid/gid がアップデート対象の uid/gid の合わないと不具合に
つながりますので、
/etc/passwd のシステムユーザーをあえてコピーしてないで、 uid >= 1000 の
ユーザー情報だけを再追加します(そこで、アーカイブに atmark ユーザーがあると、
インストール時に再追加されてしまいます…)
実装にご興味あれば /usr/share/mkswu/scripts/post_rootfs.sh の update_shadow あたりを
ご確認ください。
よろしくお願いします。