今さら聞けないセキュリティ 2021年03月25日

今さら聞けないセキュリティ 2021年03月25日

Ruby on Rails 製 Web アプリケーションのセキュリティテストガイド (静的テスト:SAST)

## これなに?

Ruby on Rails 製 Webアプリケーションのセキュリティテストをするためのガイドです。本ガイドは脆弱なRailsアプリである [RailsGoat](https://github.com/OWASP/railsgoat) を題材にセキュリティテストの手法を解説します。

本記事ではソースコードをレビューして脆弱性を発見する手法である __静的アプリケーションセキュリティテスト(SAST)__ を扱います。

### 対象読者

Ruby on Rails でプロダクト開発している組織の**セキュリティチーム**を想定していますが、セキュリティに関心がある**開発者**や**テスター**にとっても役立つしれません。

前提知識・スキル

– 情報セキュリティに関する基本的な用語を知ってること
– 基本的なWebアプリケーションの脆弱性について知ってること
– Ruby on Rails のコードが読めること
– Linux のコマンドを叩けること

### 目次

1. 静的アプリケーションセキュリティテストの準備
2. Rails のコードをBrake

元記事を表示

セッションを用いたセキュリティ攻撃の知識 〜お手柔らかに〜

#本記事について
プログラミング初心者がセキュリティ攻撃に関する知識とその対策について学んだので、その備忘録として載せております。

どうかお手柔らかにお願いいたしますm (- -)(_ _)ペコリ

##セッション
webサービスにおいて情報を一時的に保存しておく仕組み(概念)
利用者の状態を保持するために使用
保存先はクッキー

##クッキー
ブラウザにある一時的に保存できる保存場所

##セッションハイジャック
XSSなどを用いて、正規利用者ではない者が正規利用者のセッションを取得する手法
セッションが保存されているクッキーを狙った攻撃
セッションIDを盗み出す、または乗っ取る攻撃

クッキーにあるセッションIDという識別番号を盗み出すとセッションハイジャックが成立
クッキーにはセッションIDという識別番号を用いて保存している。

##セッションID
通信中の正規利用者(クラインアント)へ付与される、固有の識別情報
正規利用者を識別するために付与される固有の番号
→ログイン情報などが含まれている

セッションハイジャックをされると正規利用者できる大概のことができてしまう。
→送金

元記事を表示

IAM認証情報レポートに権限の詳細がないのでCLIで全部吐かせる

`{ユーザー名}.txt`のような形でユーザー数分のテキストファイルが出るようになれば、対外的に適切なユーザー管理している資料として十分なので、作成しました。

“`bash:s3user.txt
———————————————————–
| GetUser |
+———————————————————+
|| User ||
|+————-+—————————————–+|
|| Arn | arn:aws:iam::123456789012:user/s3user ||
|| CreateDate | 2018-01-01T20:00:00+00

元記事を表示

ストレージセキュリティに関する日本政府関連機関の動向(2020年度末版)

# はじめに

 2019年12月に、「個人情報が保存された自治体のHDDが、廃棄処理委託先業者の従業員により、データ復元可能な状態のまま転売された」という事件が発覚、報道されました[1]

 この事件については、以前の記事([こちら](https://qiita.com/ken-yossy/items/c2b0b8c389327b50d587 “安全な廃棄のために使用すべきストレージの機能(1/2)”)と[こちら](https://qiita.com/ken-yossy/items/d95f92056928e3a776c4 “安全な廃棄のために使用すべきストレージの機能(2/2)”))で、日本の政府系機関を対象とした情報記憶装置(ストレージ)の運用ライフサイクル(特に廃棄)に関する基準やガイドラインが最新技術に追随していないことを指摘し、ストレージを安全に廃棄するため利用すべき技術を説明しました。

 事件発覚からこれまで1年ほどの期間に発行された日本政府系機関の白書や情報セキュリティ関連の報告書そして基準などには、この事件を教訓とし、かつ最新の技術や環境に追

元記事を表示

セキュリティに関する知識 〜お手柔らかに〜

#本記事ついて
プログラミング初心者がセキュリティに関する知識を学んだので、その備忘録として載せております。

どうかお手柔らかにお願いいたしますm (- -)(_ _)ペコリ

##脆弱性
アプリケーション上で悪意のある者に攻撃を仕掛けられる際の弱点

##被害の想定をすることは重要
脆弱性を作り出さないために開発時にセキュリティを考慮した実装が必要
→未然に対策をしておく

##JavaScriptによるセキュリティ攻撃
JavaScriptはクライアント側で動くプログラミンング言語なので、ユーザーがwebアプリケーションに悪意のあるJavaScriptのプログラムを埋め込めば、そのプログラムを実行されてしまう恐れがある。

##XSS(クロスサイトスクリプティング)
JavaScriptを利用した攻撃方法。
悪意のあるJavaScriptプログラムを埋め込みそのサイトの利用者を攻撃する。

##スクリプト
「コードを書く → すぐに動かす 」ことができるプログラム
書いてすぐに実行できるプログラム

##スクリプティング
XSSのうち、スクリプトを埋め込んで実行させること

##

元記事を表示

HTTP と HTTPS の違い

## こんな人に向けて書いてます
この記事はWeb技術に関して知識が無い方やこれから学ぶという方向けに作成しました。
また、この記事の内容は [3 Minutes Networking](http://www5e.biglobe.ne.jp/aji/3min/ “3MinutesNetworking”) を参考にしています。

## HTTP とは?
簡単に言えば、**Webページを表示するまでに生じるやりとりの手順**のことです。
※正式には Hyper Text Transfer Protocol とし、1990年代から使われています。

そもそも、Webページはテキストや画像などのハイパーリンクを埋め込めるハイパーテキスト(HTMLで構成された文書)のことを指しており、ハイパーテキストはブラウザなどを介して表示します。表示する際にはそのハイパーテキストがある場所をURLを用いることで表示させます。

URLは管理されているドメインやパスが記載されたリソースとリソースの処理方法を指示するスキームに分かれており、HTTP は複数あるスキームの1つです。

ハイパーテキストが格納されて

元記事を表示

ウイルスが検出されました? 「嘘です!」

# 某人「ウイルス感染したー」

先月末頃、「PCがウイルスに感染したー!」というのを某人から相談受けた時のメモ。

## トラブル派生

某人「PCがウイルス感染したって、どうしよう…」

私「まずLANケーブル抜いて! そして待ってて」

この人のPCは有線接続だったのでLANケーブルを抜くのを指示しましたが、WiFiなら当然WiFiを切ります。
もし本当にウイルス感染していたら、そのPCを土台に他のPCへ感染を広げる恐れがあります。
問答無用でネットワークから切断しましょう。

そんなこんなで、もしEmoteみたいなやつだったりしたら嫌だなーって思いつつ、その人の元へ向かいました。

## 状況確認

私「来たよ、PC見せて」

某人「これー」

![matekora.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/915263/7ddf2841-1dc9-01d3-2edf-022580d37d6e.jpeg)

私「はい」

どうでもいいことだけど、選択肢「Ignore(無視)」は分かる。**「

元記事を表示

metasploitable の mutillidaeのTable ‘metasploit.tableName’ doesn’t existエラーの解決

# 概要
metasploitableのmutillidaeページが、以下のエラーメッセージが表示され、正常に機能しない問題の解決。

“`
Table ‘metasploit.tableName’ doesn’t exist
“`

# 解決方法
configファイルを編集する。

“`bash
sudo nano /var/www/mutillidae/config.inc
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/608348/7c40acf4-2a93-e801-8e14-1d59c805b044.png)

$dbnameが初期ではmetasploitになっているが、これをowasp10に修正する。

元記事を表示

Linuxでログを無効化する

こんにちは、c477usです。
Linuxでは/var/log上にユーザーのトラフィックが記録されています。これはエラー・バグの特定や外部から侵入された際の攻撃者の特定には役立ちますが、ずっとログファイルを残しているとストレージを圧迫する恐れがあります。

/var/logを定期的に削除するのも手ですが、今回はそもそもログを無効化しログを保存しないようにする方法を紹介します。

#警告
**ログを無効化するとエラー・バグ原因の特定が困難になり、外部から侵入された際の攻撃者の特定も難しくなります。**

**全て自己責任で実行して下さい。**

#Linuxのログについて
ここではLinuxのログについて軽く説明します。とりあえずログの無効化を行いたい方はこの章を飛ばして下さい。

Linuxでは、基本的にログファイルを/var/log上に配置しています。また、ログファイルにはいくつか種類がありそれぞれが決まった役割を持っています。
今回はUbuntuでのログファイルについて説明しますが、他のディストリビューションでも大体同じです。

* auth.log
システムへのログイン履歴を格納

元記事を表示

脆弱性のキャッチアップメモ

いくつかの脆弱性についてキャッチアップしました。

## SQL injection

APはユーザからの入力を受け付け、その後SQLを実行するとユーザの入力により意図しない結果になる恐れがある。

**例**

このようなSQLがあるとします。

“`SQL
select * from user where userid = ‘{{userid}}’ and nm = ‘{{nm}}’;
“`

ユーザからの入力は:

– userid: 42′ or 1=1–
– nm: nm

変換後のSQL

“`SQL
select * from user where userid = ’42’ or 1=1– and nm = ‘nm’;
“`
になる。

こうして、42というユーザだけではなく、全てのユーザ情報が抽出されてしまうだ。

## SQL injection (second order)

SQLiと違って、ユーザが入力した情報をその場で利用せず、一回APのほうで保管します。
また未来のどこかのタイミングで仕込んだ情報が意図しない結果になる恐れがある。

**例

元記事を表示

GitにおけるRails Tutorialになかった注意点!(in チーム開発の学び)

# はじめに
これは実務と同じ方式で行うチーム開発体験学習で、
GitHubを利用する際、現役の先輩エンジニアにご指摘いただいた内容です。
それまで私は全く考えてこなかったことですが、セキュリティを考えると当然のことです。

# 目次

1. [gitに記録してはいけないもの](#Chapter1)
2. [もし実務でやったらセキュリティインシデント(アカンやつ)](#Chapter2)
3. [次からは気をつけよう。ネットに放流した鍵はもう安全ではない。](#Chaprter3)



# gitに記録してはいけないもの
端的に言うと下記2つのファイル

・ config/credential.yml.enc
・ config/master.key

これらをgitに記録してしまい、
あまつさえGitHubにプッシュしてしまいました。
やっちまったなあ!


# もし実務でやったらセキュリティインシデント
こちらをご覧くださ

元記事を表示

OnionPi ~ラズパイをOnionルーターにする

こんにちは、c477usです。
インターネットトラフィックを全てTor経由にする方法としてはTorProxyの導入が一般的ですが、全ての端末でTor通信を行いたい場合はOnionルーターという選択肢があります。
Onionルーターには[Anonabox](https://www.anonabox.com/)等の既製品もありますが、RaspberryPiで自作することもできます。
今回はその方法について解説していきます。

#環境
RaspberryPi 3 Model B+(WiFi/RJ45が組み込まれているものがおすすめ)
MicroSD 16GB
Raspbian Lite

#RaspberryPiの設定

##起動前
MicroSDにOSファイルを焼いたら、あらかじめSSH接続ができるように設定していきます。
以下の操作はMicroSD上の**boot**ディレクトリ上で行います。

まず**config.txt**の一番下に以下を追記して下さい。

“`code:config.txt
dtoverlay=dwc2
“`

次に、**cmdline.txt**上の**ro

元記事を表示

PirateBox ~オフラインでファイルをやり取りする

こんにちは、c477usです。
個人間でファイルをやり取りする際、距離が近い場合はUSBメモリーに保管する方法、遠い場合はメールに添付する方法がよく取られます。
PirateBoxもファイル共有の方法の1つですが、RaspberryPiを用いてかなり手軽に作ることができ使いやすく、また匿名性もある程度担保されます。
ファイル共有だけでなくチャット機能も利用できるためちょっとした連絡にも使えそうです。

#PirateBoxとは
**PirateBox**
https://piratebox.cc/

PirateBoxはオフラインでの匿名ファイル共有とコミュニケーションシステムを構築するためのソフトウェアです。
ハードウェアとしてRaspberryPiを使用しているため安価に実装することが出来ます。

##デッドドロップとは
PirateBoxはデッドドロップという手法を参考に開発されました。これは諜報機関の工作員(=スパイ)が安全に情報をやり取りするために考案されたものです。
手順としては非常に単純で、

1. 1人があらかじめ決めた場所で情報が入ったUSBメモリー等を落とす
2.

元記事を表示

難読化とMinifyについて

## はじめに(調べるに至った経緯)
ども!ワンピースの光月おでんがカッコよすぎて日々アニメを漁りながら自宅待機中の光月ギノキンです。

(・・・ではでは)

さっそく調べるに至った経緯ですが、近頃はフロント業務をやらせてもらっていて、Sentry(監視ツール)に届いたエラーをchromeのdevツールで検証しているのですが、devツール上で`main.js`の中身を見てみるとソースコードの記述とは違う乱数があり、

> なんだこれ。。エラー追えないやん。。。

ってなったので調べてみると、「難読化」、「Minify」を行っているらしかったので調べるに至りました。

## 難読化とは

> プログラマーがソースコードなどを意図的に読みにくく記述することで、可読性を著しく下げたり、解析し辛くする技術を「難読化」と呼びます。プログラムやアルゴリズムを隠したり不明瞭にすることにより、攻撃者にソフトウェアプログラムをリバースエンジニアリングされることを防止できます。
> 参照元:[「難読化」でリバースエンジニアリングを阻止しよう!](https://note.com/toast_nhnjp/n

元記事を表示

ゼロ幅を利用した隠し文字埋め込み

# はじめに
ゼロ幅なる謎の文字を利用すると難読化や文字の埋め込みができます。
この記事では文字の埋め込みの仕組みとその実装をまとめています。

# そもそもゼロ幅って?
> ゼロ幅(ゼロはば、英語: zero-width)とは、コンピュータのタイプセッティングにおける概念で、一部の非表示文字のことを指す。 非表示文字は幅がない(表示されない)のが普通であるが、通常幅があるものが幅がないという意味で「ゼロ幅」と称している。(Wikipediaより)

– ゼロ幅接合子
– ゼロ幅非接合子
– ゼロ幅スペース
– ゼロ幅ノーブレークスペース

この四つがそれに該当し、今回の実装では上の三つを利用しました。

# 文字埋め込みの利用場面
1. 社外秘の書類が漏洩したときの犯人の特定
2. 自分の書いた記事だと証明するための署名

# 仕組み
ゼロ幅の文字はWeb上で表示されません。その性質を利用して埋め込みたい文字を2進数に変換し、0と1をゼロ幅の文字に置き換えます。
例えば、”a” の文字コード(UTF-8)は0x61(0b01100001), “あ” なら 0xE3 0x81 0x82

元記事を表示

CSRFについて

#はじめに
Webアプリケーションには、利用者自らの操作では取り消しのできない重要な処理があります。ここでいう「重要な処理」とはECサイトでのクレジットカードでの決済やメールの送信、パスワードの変更などのことをいいます。
こういった重要な処理の過程で不備があると、クロスサイトリクエストフォージェリ(以下CSRFと省略)の脆弱性が生じる場合があります。CSRFは「シーサーフ」もしくは「シーエスアールエフ」と呼ばれます。

##CSRF(クロスサイトリクエストフォージェリ)
本章では掲示板への投稿やメールの送信、ECサイトでの商品購入など本来外部より実行されてはいけない重要な処理を、なんらかの攻撃手法を用いて実行させてしまうという攻撃手法であるCSRF(クロスサイトリクエストフォージェリ)の概要と対策方法を学習していきます。

##CSRFとは
Webサイトにスクリプトや自動転送(HTTPリダイレクト)を仕込むことによって、利用者に意図せず別のWebサイト上で何らかの操作(掲示板への書き込みや銀行口座への送金など)を行わせる攻撃手法のことをいいます。
CSRFの脆弱性が存在すると以下のよう

元記事を表示

ポスト自己主権型アイデンティティ

**日々、渡辺さんの特許のPRについて考えてます。PR TIMESの閲覧数伸びてて感謝**

読んでくださっている方々に感謝です。

ただ、「もう一声」というところで行き詰まっている感もあり、さてこの状況をどう考えるべきか・・・。

技術自体は来る時代に必ず備えておくべき「量子耐性技術」なんですが、いかんせんまだ量子コンピューターが普及していないので脅威に対する具体的なアクションに結びついてないのかも。

渡辺さんは5G、6Gのバックドア問題(その存在はみんな知ってる)を回避する技術の特許も持ってるので、そっちもなんとかパートナーを見つけたい。

まあ、こういう時はあれこれもがいてもしょうがないし、もがけばもがくほどドツボにハマるものなのでしばらく今まで蒔いた種を静観するのが吉かもしれません。

ただ、

**社会実験というか、特定の地域を舞台にした実証(実装)実験はやってみたい**

と最近思ってます。

僕、実は大学、大学院と専門がツーリズムだったこともあって、「まちづくりとは何か」みたいなテーマはけっこう好きです。

最近トヨタがウーブンシティ構想を進めてます

元記事を表示

Basic認証 PART 2

##Basic認証のコードを改良する
前回の内容で、Basic認証をRailsアプリケーションに導入することができましたね。
ですが、現状のコードには次の2つの問題点があります。

###(1)ユーザー名・パスワードがコードに記述されている
Basic認証を実装しました!!パスワードはGithubに載ってます!!ってなったらセキュリティの意味ないですよね。(笑)
Github上の公開リポジトリでソースコードを管理している場合、コードを読める何者かに不正にBasic認証を突破される可能性があります。対策としては、コードに直接ユーザー名とパスワードを記述するのではなく、環境変数を利用する実装に切り替えて対処しましょう。

###(2)全ての環境でBasic認証を要求してしまう
Basic認証を使ってアクセスを制限したいのは、アプリケーションがデプロイされている本番環境ですよね。ですが、現在のコードでは、basic_authメソッドを使いたい環境を特に指定していないため、本番環境・テスト環境・開発環境の全てでBasic認証が働きます。開発中には自分の首を締めることにもなりますので、本番環境の

元記事を表示

【フィッシングサイト探索Tips】似た構造のWebサイトを探す

#概要
フィッシングサイトの探索手法の1つとして、ある共通項を手掛かりに芋づる式に探すという手法があります。
具体的には

– IPアドレス ⇒ あるフィッシングサイトと同じIPアドレスに紐付く、別のフィッシングサイトを探す
– ドメインの文字列(企業名・サービス名等) ⇒ あるフィッシングサイトと類似したドメイン名を持つ、別のフィッシングサイトを探す

etc…

今回は備忘として「Webサイトの構造」を手掛かりに探索する手段を記述します。

###この手段を用いる理由
他の手掛かりによる探索手段と組み合わせることで、類似した構造のフィッシングサイトに対する探索効率向上が期待できます。

– 未知のIPアドレスと紐付くフィッシングサイトを発見できる。
– ランダム文字列や、企業名・サービス名と無関係な文字列のドメインによるフィッシングサイトを発見できる。

※ドメイン名を企業名・サービス名と無関係な文字列にする(企業名・サービス名をサブドメインなどに入れる)ことで、ドメイン検索による探索を回避しているフィッシングサイトも多い。

###有効性の根拠
多くのフィッシングサイトにみら

元記事を表示

安全な“デジタル通貨“を実現するなら、根本的にまず“パスワード”をなくさなきゃ(なくせます)

**はっきり言ってCBDCとか発行されても今のままだと全く安全じゃない**

ブロックチェーンネットワーク内での情報のトランザクションは安全ですよ。

ここは誤解のないように書き添えておきます。

問題なのは秘密鍵と公開鍵の運用。

ビットコインだろうがスマートコントラクトだろうがゼロ知識証明だろうがなんでもいいんですが、今ある秘密鍵と公開鍵の運用だとプライバシーは「絶対に」守られません。

量子コンピューターが悪用される時代がくれば簡単に突破されるし、一企業や通貨発行主体がネットワーク内に流通する情報を掌握することもできるのでせっかくブロックチェーンを使ってるのにまったく民主的でない。

**そもそも「パスワード使って鍵を管理したりネットワークに出入りするという発想が古い」と渡辺さんは言います**

NISTが可換アルゴリズムをベースとしたポスト量子技術の標準化を一生懸命進めてますが、まだいろいろ課題山積で実現できてないです。

ファイナリストこそ決まりましたがどのアルゴリズムも「計算困難性」に依存したもので根本的な解決にはならない。

一方、渡辺さんの発明は非可換

元記事を表示

OTHERカテゴリの最新記事