web-dev-qa-db-ja.com

攻撃ベクトルとしてのバーコード?

数週間前、バーコードリーダーのハッキングが非常に簡単であることを示す男がデフコンのビデオを見ていました。彼はさらに、ほとんどのシステムでは入力がサニタイズされていない(SQLインジェクションに似ている)ことや、それらのほとんどは製造元が簡単に入手できるバーコードによって構成可能であると述べました。 1000文字を超えて格納できるものを含むすべてのタイプのバーコードを読み取るようにマシンをすばやく構成できるという事実と合わせて、バーコードは脆弱性ですか?そして、どうすればこれを防ぐことができますか?

これまでに確認できた脆弱性は、SQLインジェクションとバッファオーバーフローです。

31
Jake Wickham

はい、バーコードスキャナーには潜在的な脆弱性があります。ネットワーク接続やキーボードなどの入力ベクトルからの攻撃を防ぐのと同じ方法で、このベクトルからの攻撃を防ぐ必要があります。

  1. スキャナーではなく、アプリの入力を検証します。 12桁のUPC-Aバーコードのみを配信するようにスキャナーを構成することに依存しないでください。すべてのWebアプリ開発者がすぐに理解するように、入力のサニタイズを実行することをクライアントに信頼することは、大きなセキュリティホールです。アプリで長さチェックを使用して、バッファオーバーフローが悪用されないようにします。ホワイトリスト値チェックを実行して、範囲外の文字がないことを確認します(たとえば、ユーザーが製品UPC-AまたはEAN-13バーコードのみをスキャンすることを期待している場合は、例外をスローする必要があります入力が数字以外の値を検出した場合。)

  2. 防御的なコード。 Webアプリと同じように、パラメーター化されたSQLなどの安全なコーディングを選択する必要があります。キーボード入力のSQLインジェクション攻撃から保護するために、すでにこれを行っているはずです。ここではバーコードは特別なものではありません。

  3. デバイスを強化します。ほとんどのバーコードスキャナーは、製造元が提供する一連の特別なバーコードをスキャンすることによって最初に構成されます(スキャナーのドキュメントには、これらの記号が記載されています。)スキャナーのドキュメントを読んで、スキャナーを構成する方法を見つけます。ホストコンピュータからデータ接続を介して。コンピューターからスキャナーを構成できたら、構成します。設定する構成項目のうち、構成バーコードを読み取るスキャナーの機能を無効にする必要があります。

44
John Deters

多くのバーコードスキャナは、オペレーティングシステムによって一種のキーボードとして扱われます。これは、誰かがキーボードでバーコードの情報を入力するのとまったく同じ攻撃面を彼らに与えます。極端な例として、 byte-mode PDF 417 または バイナリQRコード を理解するバーコードスキャナーは、コンピューターに現在のプログラム、Internet Explorerを起動し、攻撃者が選択したWebサイトからプログラムをダウンロードして、そのプログラムを実行します。

16
Mark

バーコードは入力の単なる表現です。

バーコードは脆弱性ですか?入力は脆弱性ですか?と書くことができます。それ自体はありませんが、攻撃ベクトルです。

バーコードは通常、数値、文字列、またはバイナリデータをエンコードします。そのデータをさまざまなレベルで悪用するために使用する方法に加えて(バッファーオーバーフローについて言及していますが、ソフトウェアチェーンの上位にあります。バーコードには、OS /ブラウザーによって解釈され、後でサーバー側のソフトウェアによって解釈されるURLを含めることができます)。範囲外のアクセス、オーバーフローなどを含む可能性のあるバーコード自体の解析も検討してください。

防止?いつものように、入力検証、衛生。

2
domen

入力検証がないと、すべてが攻撃ベクトルの可能性があります。入力ソースとしてナンバープレートを使用するSQLIについても耳にしました。スピードカメラをプログラミングするとき、誰もそのようなクレイジーなアイデアを思いつかないでしょう、そしてそれが問題です!

0
licklake