正则表达式拒绝服务攻击
Regular expression Denial of Service - ReDoS
开发人员使用了正则表达式来对用户输入的数据进行有效性校验, 当编写校验的正则表达式存在缺陷或者不严谨时, 攻击者可以构造特殊的字符串来大量消耗服务器的系统资源,造成服务器的服务中断或停止。
正则匹配的实现
主要有两种方式:确定有限状态机(DFA) & 非确定有限状态机(NFA)
二者都属于有限状态机,但对于DFA, 每一种输入只可能有1个输出状态,对于NFA, 每一种输入可能有多个输出状态
e.g.
graph LR
A("1")--a-->B("2")
A --a--> A
NFA示例:在初
Ichigo的日本游记
2023年的夏天,Ichigo和他的小伙伴们计划了一场日本之行。旅行结束后,Ichigo决定写一篇游记,既为了自己的纪念,也可以为后来者提供借鉴。会放出很多图片~
——文中图片均由Ichigo及其同伴摄制
Day 1 上海->大阪
本来大阪并不在此行的计划之中,但当做好初版的行程打算预订机票时才发现,浦东飞关西可能是最经济的选择(虽然其实也好贵55),加之大阪离《凉宫春日》系列的城市原型——兵库县西宫市非常近(阪急电铁30min),故还是将大阪设为此行的第一个目的地。一大早乘坐国际航班出发,在空中经历了一段不太寻常的颠簸后 其实幅度大到让胆小的我吓出一身冷汗 ,Ichigo一行有惊无险
Joern - 源码分析工具
Joern
一个源码分析工具
功能:解析C/C++/java源代码并提供代码的中间图表示,包含:
Abstract Syntax Trees (AST) 抽象语法树
Control Flow Graphs (CFG) 控制流图
Control Dependence Graphs (CDG) 控制依赖图
Data Dependence Graphs (DDG) 数据依赖图
Program Dependence graphs (PDG) 程序依赖图
Code Property Graphs (CPG14) 代码属性图
Entire graph, i.e. convert to a diff
使用torch训练MLC模型(2022/9)
Target: 训练一个MLC模型,使之能根据输入的源于CodeBERT的embedding预测原函数的token集
Conducted on 2022/9
train_eval.py
训练参数
1234567drop_prob1,drop_prob2 = 0.2,0.2 # 丢弃概率learning_rate = 0.01num_epochs = 20batch_size = 128vocab_size = 50264 # 分词词典长度num_inputs,num_hidden1,num_hidden2,num_hidden3, num_outputs=515*768, 1024, 89
论文简读 An Abstract Interpretation-Based Framework for Software Watermarking
摘要
引入了抽象软件水印 的概念
基本思想:水印隐藏在程序代码里面,只有通过对代码具体语义的抽象解释才能把水印提取出来
即使只有一小部分程序,也能恢复水印
抽象水印
是静态水印:提取签名不需要执行程序(不需要特殊输入)
是动态水印:隐写签名隐藏在程序的具体语义中(可能是非标准的语义),但是执行隐写程序(或仅执行插入主体程序中的隐写标记)不会显示隐写签名
与现有静态/动态方法的不同点:隐写签名提取是通过对隐写程序的静态分析,即通过对其具体语义的抽象解释(由此获得这种水印方法的“抽象”限定符)
Method
1. Principals
选择某个抽象 αn\alpha_nαn 以及
论文精读 RoPGen Towards Robust Code Authorship Attribution via Automatic Coding Style Transformation
摘要
团队提出了一个可靠的代码风格模式生成框架 RoPGen *Robust coding style Patterns Generation
功能:增强代码归属推断模型在面对有/无目标攻击时的可靠性
现实意义:目前基于深度学习的确定代码归属的方法可能会被攻击者利用对抗性的例子,或者故意改变源码的代码代码风格而被破坏。故团队想要提高基于深度学习的代码归属认证方法的可靠性。
关键思想:在对抗训练阶段结合数据增强与梯度增强
1. 代码风格的定义
C,C++,Java 的代码风格属性:
由于对粗粒度属性的替换可能需要对程序进行较大程度的扰动
故在具体列出代码风格属性的内容的同时,也将这些属性划
论文简读 Difuzer Uncovering Suspicious Hidden Sensitive Operations in Android Apps
一些概念
逻辑炸弹:一种在满足特定条件下才会触发的恶意行为。例:管理财务数据的员工在代码中加入如下规则:如果连续3个月没有在工资表中检测到自己的姓名,则删除数据库中的所有数据。
SHSO:Suspicious Hidden Sensitive Operations 可疑的隐性敏感操作,HSO:隐性敏感操作
区分:HSO可以不是故意的,也可以不是恶意的,而逻辑炸弹必然如此。e.g. 导航程序检测用户位置信息是合法的敏感操作
SHSO: 可疑的HSO(e.g. 上例中的导航程序若换为计算器,则它是可疑的)
以往研究表明,应用程序中HSO的数量可能很大,因此检测“可能成为逻辑炸弹”的SHSO才
论文简读 [22 Security] Inference Attacks Against Graph Neural Networks
3种推理攻击系统
给定图嵌入,推断图基本信息(节点数、边数、图密度)
给定图嵌入+子图,推断子图是否包含于目标图中
提出新的图重构攻击,可重构与目标图具有相似结构的图
进一步提出基于扰动图嵌入的防御机制
Node Classification :
Hu→classifierH_u \rightarrow classifier
Hu→classifier
Graph Classification:
Hu,∀u∈V→HG→classifierH_u,\forall u\in V \rightarrow H_G \rightarrow classifier
Hu,∀u∈V→HG
使用DAG消除无用代码
Java 代码优化
目标:想要优化掉一些只用一次的临时变量
例子:
123//b = a;temp = a;b = temp;
优化方法:基于基本块的DAG(有向无环图)删除无用代码
基本块是满足下列条件的最大的连续 三地址指令序列:
控制流只能从基本块的第一个指令进入该块。也就是说,没有跳转到基本块中间或末尾指令的转移指令
除了基本块的最后一个指令,控制流在离开基本块之前不会跳转或者停机
基本块的 DAG 表示
对于每一个直接出现在基本块中的变量,定义其为input value,对应一个节点
对于每条语句,对应一个node
如果语句S1使用了语句S2 … Sn定义的变量,则
建站的心路历程——碎碎念
暑假里心血来潮,想要建立一个个人博客,一方面存放一些技术笔记/生活记录,一方面也权当在互联网上留下自己的一个小小标记。简单地思考了网站必须的功能后,我将我想要实现的所有需求记录了下来⬇
基本功能
展示个人信息(头像,简介等)
支持发布markdown 格式的笔记,笔记含有封面、标题、简介与分类,可点击跳转到渲染好的markdown文件页面
评论/点赞功能
加入对emoji 的支持
搜索框(模糊字符串搜索) 现在文章还太少就先不加了(逃
夜间模式
在思考网站需求的同时,我偶然间知道了hexo 这个博客搭建框架,它正好使用Markdown 解析博客文章(虽然也支持其它标记语言),已经满足了我