今回の問題は、パスワードを変更する際の権限確認で、下記2つによる制御の際の権限確認が行われていましたが、
「DSDB_CONTROL_PASSWORD_CHANGE_OIDによる制御が伴わないDSDB_CONTROL_PASSWORD_HASH_VALUES_OIDによる制御が行われた場合」の権限確認が抜け落ちていたことが原因です(図12)。
今までは図13の「ldb_password_hash_module_op()」で「DSDB_CONTROL_PASSWORD_CHANGE_OID」と「DSDB_CONTROL_PASSWORD_HASH_VALUES_OID」の権限確認を行っていましたが、図14の「ldb_acl_module_ops()」では「DSDB_CONTROL_PASSWORD_CHANGE_OID」の権限確認しか行っていませんでした。
LDBは、こちらにある通り、Sambaで使われているLDAPと非常によく似た埋め込み型のデータベースです。このLDBの情報は「ldbsearch」「ldbmodify」などのコマンドを使って参照や変更が行えます。
例えば、ldbmodifyでパスワードハッシュを修正するなどが可能です。ldbに関する情報はlib/ldb/include/ldb.hファイルが参考になります。
通常、パスワードを変更するには下記などの方法があります。
実際にSambaを動作させて動きを見てみると、図15のように「ldb_password_hash_module_ops()」の方で「DSDB_CONTROL_PASSWORD_CHANGE_OID」の制御の権限確認と「DSDB_CONTROL_PASSWORD_HASH_VALUES_OID」の制御の権限確認が行われます。
そのため、通常のWindowsやコマンドで今回の脆弱性は利用できません(図15の黄色い部分)。しかし、特別に作り込んだプログラムなどでldb_password_hash_module_ops()を経由することなく「ldb_acl_module_ops()」経由で直接パスワードを変更されてしまった場合には、権限を迂回してしまう可能性があります(図15の赤い部分)。
また、今回の脆弱性はSambaのパスワードがLDAP経由で変更されてしまうという脆弱性のため、Samba 4のAD以外(Samba 3や古いタイプのNTドメイン、ファイルサーバ等)には影響しません。
今回の問題の修正として、「DSDB_CONTROL_PASSWORD_CHANGE_OIDによる制御が伴わないDSDB_CONTROL_PASSWORD_HASH_VALUES_OIDによる制御が行われた場合」の権限確認(図12の問題点の部分)がldb_acl_module_ops(図14のacl_check_password内)で追加されました。そのため、Sambaを修正版(4.7.6, 4.6.14, 4.5.16以降)にアップグレードするか、アップグレードできない場合にはパッチ(「https://samba.org/samba/patches/」からダウンロードできます)を適用する必要があります。
また、Sambaにパッチを適用できない環境の場合は、ワークアラウンドとして「World(Everyone)によるパスワード変更権限の削除」を行うことで暫定的な対応が行えます。これは「samba_CVE-2018-1057_helper」というPythonスクリプトを用いて実行できます。
ただし、Everyoneからパスワード変更権限を削除すると、ユーザーが有効期限の切れたパスワードを変更できなくなってしまうため、事前にパスワードの有効期限を(最低でもSambaの更新ができるまで)十分に大きくしてあげる必要があります。
今回の件は、Samba 4がADのドメインコントローラーとして動作している場合に発生するものです。そのため、Samba 4をファイルサーバなどに使用している場合には(もちろん、別の問題で新しいバージョンに上げる必要があるかもしれませんが)、必要以上にパニックにならないようにしましょう。
また、Samba 4をADドメインコントローラーに使用しているユーザーは、暫定的な回避策も用意されていますが、先に書いたように制限事項もあるため、なるべく早く更新するようにしましょう。
略歴:OSSのセキュリティ専門家として20年近くの経験があり、主にOS系のセキュリティに関しての執筆や講演を行う。大手ベンダーや外資系、ユーザー企業などでさまざまな立場を経験。2015年からサイオステクノロジーのOSS/セキュリティエバンジェリストとして活躍し、同社でSIOSセキュリティブログを連載中。
CISSP:#366942
近著:『Linuxセキュリティ標準教科書』(LPI-Japan)」
Copyright © ITmedia, Inc. All Rights Reserved.