21 ポイント 投稿者 carnoxen 2025-01-21 | 7件のコメント | WhatsAppで共有

製品自体において

メモリ安全でない言語(C、C++ など)

可能な限りメモリ安全な言語を使い、そうでない既存プログラムは 2025 年末までに段階的に置き換えるべきです。

SQL 文の直接実行

パラメータ化クエリ、プリペアドステートメント、または ORM を使ってください。

OS コマンドの直接実行

ユーザーが入力する内容はコマンドそのものであってはいけません。コマンドを直接実行する代わりに組み込みライブラリ関数を使うか、入力に英字/数字/アンダースコアのみを許可するようにすべきです。

あまりにも有名なパスワード の使用

以下のような方法で、できるだけ避けられるようにするべきです。

  • 最初から一意のパスワードを提供する。
  • インストール中にユーザーへ強力なパスワードの作成を求める。
  • MFA のようにパスワードへ時間制限を設定する。
  • 確実な認証情報を得るために物理的なアクセスを要求する。
  • キャンペーンを実施する、または従来より安全な認証方式へ移行する。

既知の脆弱性 の放置

そのページに載っている脆弱性は「すべて」防止されるべきです。新しい脆弱性が報告された場合は適時に対処し、修正済みバージョンへ更新していないユーザーには警告を出すべきです。

脆弱性のあるオープンソースライブラリ

使用しているライブラリについては、責任ある形でその事項を知らせ、貢献すべきです。次のような対応も含みます。

  • SBOM の作成: ソフトウェアがどのライブラリを使っているかを示します。
  • 依存しているオープンソースライブラリに適用すべき事項
    • セキュリティ検査を実施する。
    • 継続的で、十分に保護され、適切に保守されている質の高いプロジェクトを選ぶ。このようなセキュリティ原則 を守るのも有効です。
    • よく知られた脆弱性がないか継続的に調査しなければならない。
    • コピーをベンダーがあらかじめ保持しておくべきであり、検証されていない場所から更新してはいけない。
  • 新しいメジャーバージョンへの更新やセキュリティパッチを受けるコストを考慮すべきです。
    脆弱性が製品に影響しない場合は、その脆弱性がなぜ影響しないのかを公開で説明すべきです。

脆弱性がある、または未知の暗号アルゴリズム(TLS 1.0/1.1、DES、MD5 など)

最新のアルゴリズムを使うべきです。加えて、NIST の指針 に従って、標準化された耐量子暗号アルゴリズムの準備も進めるべきです。

ソースコードに含まれる秘密鍵

Secret Manager を使って、プログラムが秘密鍵を安全に取得できるようにするべきです。また、ソースコード内に秘密鍵がないか検査すべきです。

セキュリティ機能において

MFA 非対応(パスキーのみ対応も含む)

救急医療機器のように遅延が危険なものを除き、基本的に MFA を自前で実装するか、外部認証器を使えるようにするべきです。これを管理者に要求し、管理者は組織内のユーザーに対してこれを要求すべきです。

侵入の証跡を提供しない

  • ごく基本的な機能として、設定の変更や参照、ログイン履歴、情報アクセスに関するログを生成すべきです。
  • クラウド提供者の場合、追加費用なしで少なくとも 6 か月間これらのログを保持し、ユーザーが閲覧できるようにするべきです。

組織のプロセスとポリシーにおいて

CVE を発行しない

重大または大きな影響を与えうる脆弱性は直ちに公開されるべきです。

脆弱性公開ポリシー(VDP)を公開していない

次のようなポリシーを公開すべきです。

  • 一般大衆によるテストの承認
  • 善意で努力する人に対して法的措置を取らないことの約束
  • 報告のための明確なチャネル
  • CVD(Coordinated Vulnerability Disclosure)のベストプラクティスと国際標準
    報告された脆弱性は、適時に、リスク順で修正すべきです。

(オンプレミスの場合)不明確なサポート期間

サポート期間を明確に伝え、その期間中はセキュリティアップデートを提供すべきです。


7件のコメント

 
bbulbum 2025-01-21

セキュリティは、しまったと思ったその瞬間、、! (というのを軍隊で見た気がするけど)

 
yolatengo 2025-01-22

簡潔に、しかし折れずに前へ!

 
kandk 2025-01-21

また ORM を使うなって話が出回ってるけど..

 
regentag 2025-01-21

ORMの代わりにPrepared Statementを使えばいいです。

 
roxie 2025-01-22

zzz

 
ilikeall 2025-01-21

何事にも原則はありますよね。守るのが難しいだけで……

 
felizgeek 2025-01-21

いいね、賛成です
ユーザーに強力なパスワードの生成を求めること != 特殊文字、英大文字・小文字、数字を必ず含めること
適度に長いだけでも、十分に強力なパスワードです。